Intro To Software Development Process
Summary
- Software Crisis
- Evidence of Software Crisis
- Software Development
- Software Processes
- Software Phases
- Tools of the Trade
Software Crisis
Came about in the 60’s when people realized they couldn’t write the software they wanted.
There were multiple causes for this
Rising Demand for Software
Before the 60’s, hardware components dominated, and software requirements were low. This began to change as companies incorporated more software.
Development Effort
Software complexity does not scale linearly
For example:
Size | Example |
---|---|
LOC | Class exercise |
LOC | Small project |
LOC | Term project |
LOC | Word processor |
LOC | Operating System |
LOC | Distributed System |
Programming effort can get you through Class exercise - Term project. Anything bigger needs Software Engineering effort.
Developer’s Productivity Growth
Dev productivity had been growing linearly
Evidence of Software Crisis
In a study by Davis in 1990, $5 million out of $7 million spent on software resulted in software that was delivered but not successfully used, or just never delivered.
NATO Software Engineering Conference in 1969 was the birth of Software Engineering
Software Development
Software Development := The process for going from an abstract idea in someone’s head to a concrete system that actually implements that idea.
Software Process := The way we break down Software Development into smaller steps.
Software processes are systematic and formal
Software Processes
- Waterfall
- Evolutionary Prototyping
- Rational Unified Process/Unified Software Process
- Agile
Software Phases
- Requirements Gathering
- Design
- Implementation
- Verification/Validation
- Maintenance
Tools of the Trade
Tools and automation are fundamental for Software Engineering
Punch-cards -> IDEs
Machine code -> High-level languages
Print lines -> Symbolic debuggers