INF 43: Introduction to Software Engineering
Software Engineering
"Multi-person construction of multi-version software." - Parnas
incrementality
releasing software
waterfall model
requirements -> design -> implementation -> verification -> maintenance
People
single most important factor in success of failure of a product
Informatics 43
- process of constructing software - phases of development other than programming - principles and qualities of enduring value
Invisibility
- reality of software not embedded in tangible space - hinders communication and understanding
Fundamental Principles
- rigor and formality - separation of concerns (modularity, divide and conquer, abstraction) - anticipation of change - generality -incrmentality (SAGIR)
Conformity
- software must conform to human systems (operating systems, hardware)
Business Perspective
- minimize cost - profits - time needed to create a product -"annual value" -"expensive", "price"
Three "Essential Ingredients" of Software Engineering
*People*, Processes, Tools
No Silver Bullet: Hopes for Silver
- Ada and other high level languages - object oriented programming - artificial intelligence - expert systems - automatic programming - graphical programming - program verification - environments and tools - workstations
Complexity
- Software entities are complex, no two parts alike, hard to understand - difficult of communication because of complexity
Changeability
- all successful software gets changed - software should survive beyond the life of the hardware it was written for
No Silver Bullet: Promising Attacks
- buy vs. build - requirements refinement - incremental development - great designers
Engineering Perspective
- internal quality **** - making it work within constraints of enviornment - cohesion, coupling, simplicity, generality
Essential Characteristics of Soft. Eng.
- large programs - mastering complexity - efficiency - able to evolve - cooperation between people - support users - balancing act
Software
-code - documentation, user manuals, - designs, specifications - test cases - plans and schedules
Design Perspective
-external quality, - quality of software from user perspective - physical appearence to user
Engineering
-skill and knowledge - application of scientific principles - trade-offs, cost/ benefit analysis
waterfall model
1. requirements, 2. design, 3. implementation, 4. verification, 5. maintenance
Essence of Programming
Complexity, Conformity, Changeability, Invisibility