Module 1: Introduction to Software Engineering
1. System Concepts
A system is a collection of components organized to accomplish a specific function or set of
functions.
Types of Systems:
- Open System: Interacts with the environment (e.g., computer system connected to the internet).
- Closed System: Operates in isolation (e.g., a watch).
- Static System: Remains unchanged over time (e.g., wall clock).
- Dynamic System: Changes over time in response to input (e.g., payroll system).
2. Introduction to Software Engineering
Software Engineering is a systematic, disciplined, and quantifiable approach to the development,
operation, and maintenance of software.
Why Software Engineering?
- Manage large and complex software.
- Reduce development time and cost.
- Ensure quality and maintainability.
3. Programs vs. Software Products
Aspect Program Software Product
Purpose Solves specific problem Solves generic/multiple problems
Scale Small-scale Large-scale, commercial
Documentation Minimal or none Thorough documentation
Maintenance Not updated Long-term maintenance
Users Single user (developer) Multiple users and clients
4. Emergence of Software Engineering
1960s Crisis: Software complexity led to failures. This led to the formalization of software
engineering.
5. Early Computer Programming
- Machine Language: Binary code specific to a machine.
- Assembly Language: Mnemonics for machine instructions.
- Procedural Programming: FORTRAN, COBOL.
6. High-Level Language Programming
- Easier syntax, portable. Examples: C, Pascal.
7. Control Flow Based Design
- Organized around control structures (loops, conditionals). Becomes complex at scale.
8. Data Structure Oriented Design
- Focus on data structures and their flow. Centralized data.
9. Object-Oriented Design (OOD)
- Based on real-world objects with attributes and methods.
- Concepts: Encapsulation, Inheritance, Polymorphism, Abstraction.
- Benefits: Reusability, Modularity, Scalability.