MADALINA CROITORU Software crisis Survey of outcomes from Standish Group 280,000 development projects 1.Successful 2.Cancelled 3.Late, over budget, incomplete
MADALINA CROITORU Goals of software engineering Satisfy user requirements High reliability Low maintenance costs Deliver on time Low production cost High performance Ease of reuse
MADALINA CROITORU Software process models Determine the order of the stages of software development. Establish the transition criteria to proceed from one stage to the next. What shall we do next? How long should we take?
MADALINA CROITORU Code and fix
MADALINA CROITORU Code and fix difficulties After many changes the code becomes badly constructed and expensive to maintain. Design phase needed. Poor match to users’ needs. Requirements phase needed. Poor preparation for testing and modification. Test phase and evolution phase.
MADALINA CROITORU Why is software development not ideal Fallibility of software professions Change of clients requirements while the software is being developed Need for maintenance
MADALINA CROITORU Public transport Fare machine that takes dollar bills Sensor scans bill, image recognition decides if genuine –If any piece of paper works, company loses $$ –If valid bills are rejected, customers annoyed Response time < 1sec Accuracy 98% in image recognition The last two are in conflict. Why?
MADALINA CROITORU Example 1.First version implemented 2.Test showed that the real-time constraint was not achieved. The reason was using “double” instead of “float”. The programmer changed the code. 3.Before completing the work in 2, tests showed that even with this change the real time constraint would still not be made. New image recognition algorithm may do it. 4.Company wishes to get the accuracy up to 99.9% to market the product. 5.Sensors become obsolete
MADALINA CROITORU Iterative and incremental development Moving targets (customer driven, hardware) Iteration Increment Identification of work flows –Requirements, analysis, design, implement, test Unified process
MADALINA CROITORU Waterfall life cycle model The seminal paper for this model appeared in 1970 and was reprinted in 1987 (Royce 1987)
MADALINA CROITORU Waterfall (plan driven) Based on project milestones. Each “signed off” before going onto the next Reinforced by documentation; very important in large projects Gives discipline Works well if requirements are fixed No iteration
MADALINA CROITORU Waterfall model Requirement analysis and definition System and software design Implementation and unit testing System testing
MADALINA CROITORU Requirement analysis, definition and specification Requirement analysis: Long consultation with the customer to find out what they want Requirement definition: stating what the user wants so that is understandable both by user and developers Requirement specification: formal document (sometimes acts as a contract)
MADALINA CROITORU Design Requirements divided into two: –Software –Hardware Software design means representing the function of every unit in such way that it can be transformed directly into software
MADALINA CROITORU Implementation Unit design transformed into software Individual units are then tested to make sure they satisfy their specification
MADALINA CROITORU Testing Individual units are integrated gradually Tested for compatibility and functionality System is deployed System is maintained
MADALINA CROITORU Criticism of waterfall The milestones did not fit in with an increasing number of project situations (Boehm 1996) Royce in the 1970 paper pointed out the shortcomings, and suggested prototyping and “do it twice”. However, he rather erroneously has been attributed with a very rigid process.
MADALINA CROITORU Boehm 1996 A prototype is worth 100,000 words. Written specifications are not effective. Gold plating. Fixed requirements encourage elaborate additions that may not be needed. Inflexible point solutions. These are optimised about the original solution. (Both waterfall and evolutionary) Need to manage risk. (Both waterfall and evolutionary)
MADALINA CROITORU Current challenges
MADALINA CROITORU Current challenges Most commercial systems are now networked Software systems must integrate with different software systems developed by OTHER ORGANISATIONS using: –Different hardware –Different software
MADALINA CROITORU Other challenges Hardware evolves FASTER than software Some programs are obsolete but perform critical business tasks Modifications meant software logic became corrupted Original developers have moved on