Software is a set of instructions(Programs) that perform specific tasks for a computer. In Introduction to Software Engineering, we describe the step-by-step process of gathering requirements, designing, Implementing, testing, and maintaining software. Software Engineering is a field of study that involves the application of engineering principles to the design, development, testing, and maintenance of software. It encompasses various processes and methodologies used to create high-quality software that meets the needs of users and stakeholders. The Purpose of software engineering is to create reliable, efficient, and scalable software while being easy to use and maintain. Software Engineering Involves various activities, including requirements gathering, design, coding, testing, deployment, ongoing maintenance, and support. These tools and technologies help software engineers streamline the development process and improve the software quality they create. As the use of software continues to grow in virtually every industry and aspect of daily life, software engineering is becoming an increasingly important field of study.
Software Engineering-Introduction of Software Engineering:
- Software engineering concerns theories, methods and tools for professional software development. Software engineering is important because it enables us to build complex systems promptly and with high quality. Software products may be developed for a particular customer or a general market. The economies of ALL developed nations are dependent on software.
- Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available.
- Software engineering also involves using various tools and technologies, such as programming languages, integrated development environments (IDEs), version control systems, and testing frameworks.
Importance of Software Engineering:
Software must be reliable, secure, usable and maintainable. Software engineering explicitly focuses on delivering software with these attributes and, unlike programming, is not just concerned with the functionality or features of a system. Software engineering is significant for systems which people and businesses depend on and which are used for many years.
- Meeting user needs: Software engineering helps ensure software products are developed with user needs in mind. It ensures that the software is functional, user-friendly, and meets the needs of stakeholders.
- Quality assurance: Software engineering practices help develop software products to high standards. It reduces the risk of bugs, errors, and security vulnerabilities leading to software failure and data breaches.
- Scalability: Software engineering helps ensure that software products can scale to meet the needs of growing user bases and changing requirements. It allows organizations to grow and evolve without being limited by their software.
- Cost-effectiveness: Software engineering practices help organizations to develop software cost-effectively. Organizations can save money on software development by streamlining development processes and reducing the risk of errors and rework.
- Innovation: Software engineering practices enable innovation by providing a structured approach to software development. It allows software engineers to create new products and solutions that push the boundaries of what is possible with technology.
Software Engineering Process/Activities:
- A process is a collection of activities, actions, and tasks performed when some work product is to be created.
- A simplified representation of a software process presented from a specific perspective. In Introduction to software engineering, we also describe the software development Process.
The generic process framework for software engineering encompasses five activities:
- In this activity, stakeholders communicate with the client to understand stakeholders’ objectives for the project and to gather basic requirements that help define software features and functions.
In this activity, the software designer creates a plan for work by describing the technical tasks to be conducted, the likely risks, the resources that will be required, and the scheduled time and estimated cost for the software developer.
In this activity, A software engineer creates a model(UML) for software products to understand better software requirements and the design that will achieve stakeholder requirements.
In this activity, the developer delivers software (as complete software or as a partially completed artefact) to the customer or finally deploys the software system at a customer place.
Software Engineering Methods:
- Structured software development approaches include system models, notations, rules, design advice and process guidance.
- Model descriptions
- Descriptions of graphical models which should be produced;
- Constraints applied to system models;
- Advice on good design practice
- Process guidance
- What activities to follow.
- Model descriptions
Q1:Which is better Software engineering or computer science?
- Ans: Both fields are essential for creating and maintaining computer systems. It depends on what area you like to specialize in and what career path you want to pick.
Q2:Why is software engineering important?
- Ans: Software must be reliable, secure, usable and maintainable. Software engineering explicitly focuses on delivering software with these attributes and, unlike programming, is not just concerned with the functionality or features of a system. Software engineering is significant for systems which people and businesses depend on and which are used for many years.
Q3:What is the difference between software engineering and computer science?
- Ans: Computer science is concerned with theory and fundamentals, while software engineering is concerned with the practicalities of developing and delivering useful software. In comparison, Computer science theories are still insufficient to act as a complete underpinning for software engineering (unlike, e.g. physics and electrical engineering).
Q4:What are the costs of software engineering?
- Ans: Roughly 60% of costs are development costs, and 40% are testing costs. For custom software, evolution costs often exceed development costs. Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability. The distribution of costs depends on the development model(Model can be UML) used.
Q5:What are the attributes of good software?
- Ans: The software should deliver the required functionality and performance to the user and be maintainable, dependable and acceptable. In Introduction to Software Engineering, we describe the development process.
- Software must evolve to meet changing needs.
- Software must be trustworthy.
- Software should not make wasteful use of system resources.
- Software must be accepted by the users for which it was designed. This means it must be understandable, usable and compatible with other systems.