
CS1120: Computer Science II Software Life Cycle What exactly is software?" 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! System Software" n! Embedded Software" n! Compilers, editors, file n! Resides inside another management utilities" product or system" n! Application Software" 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 software development" 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 test 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 Software Life Cycle Phase 8: Production n! Distribute it n! Install it Software Life Cycle Phase 9: Maintenance n! Fix previously undiscovered bugs n! Add new features n! Enhance old features n! Generally the most costly phase (80% of total cost by some estimates) •!6 Software Life Cycle Documentation n! Performed extensively in every phase n! In modern software development, there are typically different people working on each phase of the software life cycle n! Novice programmers usually undervalue documentation Continuing Effort More Models…" n! There are many models of software development" n! Incremental Process Models:" n! Incremental, RAD (Rapid Application Development)" n! Evolutionary Process Models" n! Prototyping, Spiral, Concurrent Development" n! Specialized Process Models" n! Component-Based, Formal Methods, Aspect- Oriented" •!7 The “IN” Method" n! Agile Development" n! This software engineering methodology focuses on customer satisfaction, incrementally developing software using small teams, using simplicity of development, and heavy communication with customers" n! There are many “flavors” including:" •! Extreme Programming (XP), Adaptive Software Development (ASD), Dynamic Systems Development Method (DSDM), Scrum, Crystal, Feature Driven Development (FDD), and Agile Modeling (AM)" •!8 .
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages8 Page
-
File Size-