Topics
- 1. Software Engineering
- 2. Why We Need Software Engineering
- 3. Principles of Software Engineering (SE)
- 4. Software Product and Software Process
- 5. Program vs Software Product in Software Engineering
Software
Software is a set of computer programs or instructions that, when executed, perform specific tasks or provide desired functionalities.
Engineering
Engineering is the application of knowledge, principles, and scientific methods to design, build, and analyze objects or systems efficiently.
Software Engineering
Software engineering is the systematic and disciplined process of developing, operating, and maintaining software in a quantifiable manner.
In simpler words, it’s applying engineering principles to software development to make it reliable, maintainable, and efficient.
Software engineering is important because it ensures that software is:
-
Maintainable – Easy to update and modify.
-
Correct – Works according to specifications.
-
Reusable – Components or modules can be reused in other projects.
-
Testable – Can be systematically tested for errors.
-
Reliable – Performs consistently under expected conditions.
-
Portable – Can run on different platforms or environments.
-
Adaptable – Can adjust to changes in requirements or environment.
-
Think through the problem completely before implementation – Understand the problem fully before writing code.
-
Divide and conquer – Break complex problems into smaller, manageable parts.
-
Keep it simple – Avoid unnecessary complexity in design and code.
-
Learn from mistakes – Continuously improve from past errors.
-
Maintain the vision – Always keep the overall goals of the software in mind.
-
Consider users – What you produce will be used by others.
-
Be open to the future – Design software to accommodate future changes.
-
Plan ahead for reuse – Write code and design components so they can be reused in other projects.
Software Process
A software process is the set of activities and associated results that produce a software product. It deals with both the technical and management aspects of software development.
Software Process Activities
-
Software Specification – Defining what the software should do and the constraints on its operation (done by both customers and engineers).
-
Software Development – Designing and programming the software.
-
Software Validation – Ensuring the software meets customer requirements.
-
Software Evolution – Modifying the software to reflect changing customer and market needs.
Note: Different types of systems require different development processes.
Real-time software (e.g., in aircraft) must have complete specifications before development.
E-commerce systems can have specification and programming done incrementally.
| Feature | Program | Software Product |
|---|---|---|
| Size | Usually small, 100–2000 lines of code | Large, can be thousands to millions of lines of code |
| Documentation | Not required | Proper documentation with user manuals |
| Users | Developer is the user | Large number of users |
| Development Team | Single developer or small team | Well-trained team of developers |
| User Interface | No UI needed | Properly designed user interface |
| Functionality | Limited features | Many options and features according to size and complexity |