CS1120: Computer Science II

Software Life Cycle

What exactly is ? n Possible definitions of software are: n Instructions (i.e., computer programs) executed to provide features, functions, and performance n Data structures that enable the programs to adequately manipulate information n Documents that describe the operation and use of programs

Categories of Software n n Embedded Software n , editors, file n Resides inside another utilities product or system n n Product-line Software n Standalone programs to n Inventory control, financial solve a specific need applications n Engineering/Scientific n Artificial Intelligence Software Software n Computer-aided design, n Neural networks, pattern simulation recognition, robotics, game playing… n Web-applications

• 1 What is Software Engineering? n This is the study and use of engineering principles to create software that is both reliable and efficient on “real” computers

Software Quality n Software engineering is the production of quality software n External quality n May be detected by its users n Internal quality n Perceptible only to computer professionals who have access to the actual software text n What matters is the external quality, but it can only be achieved through internal quality

External Quality n Correctness n Perform the exact tasks as specified n Robustness n Ability to react appropriately to abnormal conditions n Extendibility n Ease of adapting program to changes of specification n Reusability n Ability of software elements to serve for the construction of many different applications.

• 2 External Quality n Other Quality n Compatibility, Portability, Ease of Use, Efficiency, Timeliness, Integrity n Tradeoffs n Integrity v.s. Ease of Use n Efficiency v.s. Portability n Timeliness v.s. Extendibility

The Waterfall Model n This is the classic life cycle n One of the oldest models in software engineering n A sequential and systematic approach to n Communication --> Planning --> Modeling --> Construction --> Deployment

Software Life Cycle

n This is a more realistic look at software - as a continuous process

• 3 Software Life Cycle Phase 1: Specification n Answers “What do we build?” n Define clearly all aspects of the problem n What is input (valid/invalid) data? n What assumptions are possible? n Are there special cases? n What enhancements are likely in the future?

Software Life Cycle Phase 2: Design n Divide into manageable parts - modules n Specify each module’s purpose, assumptions, input, and output n Develop algorithms n Look for existing software components

Software Life Cycle Phase 3: Risk Analysis n Attempts to answer “What can go wrong, and how bad can it be?” n Predict and manage what risks you can n Risks to timetable, cost, human health, etc. should be taken into account n Risks can greatly influence the direction of a project

• 4 Software Life Cycle Phase 4: Verification n Answers “Are the algorithms correct?” n Some algorithms can be proven correct n assertion: condition at a certain point n invariant: condition that is always true

Software Life Cycle Phase 5: Coding n Translate the algorithms into a particular programming language n Minor phase in the software life cycle

Software Life Cycle Phase 6: Testing n Answers “Did we build it correctly?” n Try to make the software fail n Develop as many cases as possible n Both a science and an art

• 5 Software Life Cycle Phase 7: Refining a Solution n Add bells and whistles n Retest after any changes are made

Softwa