Lecture 2 - Software Process
Lecture 2 - Software Process
Lecture 2
Agenda
• Historical Aspects
• Software Engineering
• Software Product
• Software process phases
• Improving software process
Historical Aspects
• The term 'software engineering' was suggested at
conferences organized by NATO in 1968 and 1969 to discuss
the 'software crisis'.
• The software crisis was the name given to the difficulties
encountered in developing large, complex systems in the
1960s.
• Software is delivered
• Late
• Over budget
• With residual faults
Examples of failures due to
software
• In 2015, CareFusion’s Alaris Pump was recalled over a software
error that caused the pump, designed to automatically deliver
medicine and fluids to hospital patients, to delay an infusion
that could cause the patient to suffocate.
• Equifax, one of the United States’ largest credit reporting
agencies, announced that up to 143 million of their consumer
records were stolen by hackers in May 2017. Names, Social
Security numbers, birth dates, and credit card numbers were
all amongst the data stolen.
• Facebook's apps outage: In the summer of 2019 Facebook
users stopped being able to view or load images from the
newsfeed.
Software Engineering
• Software Engineering is an engineering branch related to
the evolution of software product using systematic well-
defined scientific principles, techniques, and procedures.
• The result of software engineering is an effective and
reliable software product.
2
• Specification Phase
3
• Design Phase
4
• Implementation Phase
5
• Integration Phase (in parallel with phase 4)
6
• Maintenance Phase
7
• Retirement
Software Process Phases
1. Requirements Analysis phase
2. Specification phase
3. Design phase
4. Implementation phase
5. Integration phase (in parallel with 4)
6. Maintenance phase
7. Retirement
• Documentation
• architecture design
• detailed design
Software Process Phases
1. Requirements phase
2. Specification phase
3. Design phase
4. Implementation phase
5. Integration phase (in parallel with 4)
6. Maintenance phase
7. Retirement
• Testing
• Code review
• Running test cases
• Informal testing done by the programmer (desk checking)
• Testing by SQA group
• Documentation
• Source code with suitable comments
• Test cases against which the code was tested
Test Case Scenario Example
Software Process Phases
1. Requirements phase
2. Specification phase
3. Design phase
4. Implementation phase
5. Integration phase (in parallel with 4)
6. Maintenance phase
7. Retirement
• Documentation
• Commented source code
• Test cases for the product as a whole
• User manual, operator manual, database manual
Software Process Phases
1. Requirements phase
2. Specification phase
3. Design phase
4. Implementation phase
5. Integration phase (in parallel with 4)
6. Maintenance phase
7. Retirement
• Documentation
• Record of all the changes made, together with reasons
• Regression test cases
Software Process Phases
1. Requirements phase
2. Specification phase
3. Design phase
4. Implementation phase
5. Integration phase (in parallel with 4)
6. Maintenance phase
7. Retirement
• Fundamental ideas:
• Improving the software process leads to
• Improved software quality
• Delivery on time, within budget
• Improved management leads to
• Improved techniques
• Incremental improvements
• Five levels of maturity are defined
• Organization advances stepwise from level to level
Maturity level 1 -Initial
Level
• Ad hoc (occasionally even chaotic) approach
• Depends totally on the current stuff
• Entire process is unpredictable
• Management consists of responses to crises
• For each maturity level there are key process areas (KPA)
• Within each KPA are between two and four related goals
Experience with SW-CMM
• It takes
• 3 to 5 years to get from level 1 to level 2
• 1.5 to 3 years from level 2 to level 3