CSC 205 Software Engineering I Overview Software Lifecycles

  • Slides: 24
Download presentation
CSC 205 - Software Engineering I Overview - Software Lifecycles, Processes, Methods and Tools

CSC 205 - Software Engineering I Overview - Software Lifecycles, Processes, Methods and Tools • Software lifecycle basics • Software lifecycles – build-and-fix – waterfall – rapid prototype – incremental – spiral • Process improvement – CMM & ISO 9000 • Methods and Tools 1

CSC 205 - Software Engineering I Software Lifecycle • A series of steps through

CSC 205 - Software Engineering I Software Lifecycle • A series of steps through which a software product progresses • Lifetimes vary from days to months to years • Consists of – people! – overall process – intermediate products – stages of the process 2

CSC 205 - Software Engineering I Software Production Personnel • Client – individual or

CSC 205 - Software Engineering I Software Production Personnel • Client – individual or organization that wants a product to be developed • Developer(s) – (members of) an organization producing the product • User(s) – person who authorizes the client to contract the developer – person(s) who will utilize software in operation • internal software development: client = developer • contract software development: client ≠ developer 3

CSC 205 - Software Engineering I What is a process? • Device for producing

CSC 205 - Software Engineering I What is a process? • Device for producing a product (getting the job done!) • Level of indirection – Process description describes wide class of instances • Humans create process descriptions to solve classes of problems • Thus – software processes are devices for creating and evolving software products 4

CSC 205 - Software Engineering I Intermediate Software Products • Objectives – Demarcate end

CSC 205 - Software Engineering I Intermediate Software Products • Objectives – Demarcate end of phases – Enable effective reviews – Specify requirements for next phase • Form – Rigorous – Machine processible (highly desirable) • Content – Specifications, Tests, Documentation 5

CSC 205 - Software Engineering I Phases of a Software Lifecycle • Standard Phases

CSC 205 - Software Engineering I Phases of a Software Lifecycle • Standard Phases – Requirements Analysis & Specification – Design – Implementation and Integration – Operation and Maintenance – Change in Requirements – Testing throughout! • Phases promotes manageability and provides organization 6

CSC 205 - Software Engineering I Requirements Analysis and Specification • Problem Definition —>

CSC 205 - Software Engineering I Requirements Analysis and Specification • Problem Definition —> Requirements Specification – determine exactly what client (and user) wants and process constraints – develop a contract with client – what task the product is to do • Difficulties – client asks for wrong product – client is computer/software illiterate – specifications may be ambiguous, inconsistent, incomplete • Validation extensive specification reviews to check that requirements satisfies client needs – look for ambiguity, consistency, incompleteness – check for feasibility, testability – develop system/acceptance test plan – 7

CSC 205 - Software Engineering I Design • Requirements Specification —> Design develop architectural

CSC 205 - Software Engineering I Design • Requirements Specification —> Design develop architectural design (system structure): decompose software into modules with module interfaces – develop detailed design (module specifications): select algorithms and data structures – maintain record of design decisions and traeability – how the product is to do its task – • Difficulties – – miscommunication between module designers design may be inconsistent, incomplete, ambiguous • Verification extensive design reviews (inspections with checklists) to determine that design conforms to requirements – check module interactions – develop integration test plan – 8

CSC 205 - Software Engineering I Implementation and Integration • Design —> Implementation implement

CSC 205 - Software Engineering I Implementation and Integration • Design —> Implementation implement modules and verify they meet their specifications – combine modules according to architectural design – how the product does its task – • Difficulties – – module interaction errors order of integration has a critical influence on product quality and productivity • Verification and Testing extensive code reviews (inspections with checklists) to determine that implementation conforms to requirements and design – develop and test on unit/module test plan: focus on individual module functionality – test on integration test plan: focus on module interfaces – test on system test plan: focus on requirements and determine whether product as a whole functions correctly – 9

CSC 205 - Software Engineering I Operation and Maintenance • Operation —> Change maintain

CSC 205 - Software Engineering I Operation and Maintenance • Operation —> Change maintain software after (and during) user operation – integral part of process – determine whether product as a whole still functions correctly – • Difficulties design not extensible – lack of up-to-date documentation – personnel turnover – • Verification and Testing extensive review to determine that change is made correctly and all documentation updated – test to determine that change is correctly implemented – test to determine that no inadvertent changes were made to compromise system functionality (check that no affected software has regressed) – 10

CSC 205 - Software Engineering I Build-and-Fix Build First Version Modify until Client is

CSC 205 - Software Engineering I Build-and-Fix Build First Version Modify until Client is satisfied Operations Mode Retirement 11

CSC 205 - Software Engineering I Waterfall (collapsed) - See Schach, pg. 66 Req.

CSC 205 - Software Engineering I Waterfall (collapsed) - See Schach, pg. 66 Req. Change Requirements Verify Design Verify Implementation Test Operations Retirement 12

CSC 205 - Software Engineering I Rapid Prototyping - See Schach, pg. 71 Req.

CSC 205 - Software Engineering I Rapid Prototyping - See Schach, pg. 71 Req. Change Rapid Prototype Verify Design Verify Implementation Test Operations Retirement 13

CSC 205 - Software Engineering I Incremental - See Schach, pg. 73 Requirements Verify

CSC 205 - Software Engineering I Incremental - See Schach, pg. 73 Requirements Verify Arch. Design Verify For each build: Perform detailed design, implement. Test. Deliver. Operations Retirement 14

CSC 205 - Software Engineering I The Spiral Model [Boehm, 1988] 15

CSC 205 - Software Engineering I The Spiral Model [Boehm, 1988] 15

CSC 205 - Software Engineering I (Extremely) Simplified Spiral Model Risk Assessment Requirements Verify

CSC 205 - Software Engineering I (Extremely) Simplified Spiral Model Risk Assessment Requirements Verify Req. Change Risk Assessment Design Verify Risk Assessment Implementation Test Add a Risk Analysis step to each phase! Operations Retirement 16

CSC 205 - Software Engineering I Capability Maturity Model (CMM) [Watts Humphrey, 1989] •

CSC 205 - Software Engineering I Capability Maturity Model (CMM) [Watts Humphrey, 1989] • CMM is not a software lifecycle model. . . • but a strategy for improving the software process regardless of the process model followed – Basic premise: the use of new software methods alone will not improve productivity and quality, because software management is, in part, the cause of problems – CMM assists organizations in providing the infrastructure required for achieving a disciplined and mature process • Includes – technical aspects of software production – managerial aspects of software production 17

CSC 205 - Software Engineering I Capability Maturity Model (continued) • Five maturity levels

CSC 205 - Software Engineering I Capability Maturity Model (continued) • Five maturity levels – 1. initial – ad hoc process – 2. repeatable process – basic project management – 3. defined process – process modeling and definition – 4. managed process – process measurement – 5. optimizing process – process control and dynamic improvement • to move from one stage to the next, the SEI provides a series of questionnaires and conducts process assessments that highlight current shortcomings 18

CSC 205 - Software Engineering I ISO 9000 • Further attempt to improve software

CSC 205 - Software Engineering I ISO 9000 • Further attempt to improve software quality based on International Standards Organization (ISO) • ISO 9000 = series of five related standards – within ISO 9000 standard series ISO 9000 -3 focuses on software and software development • Basic features: – stress on documenting the process in both words and pictures – requires management commitment to quality – requires intensive training of workers – emphasizes measurement • Adopted by over 60 countries (USA, Japan, European Union, . . . ) • To be ISO 9000 compliant, a company’s process must be certified 19

CSC 205 - Software Engineering I Software Methods and Tools • Methods provide a

CSC 205 - Software Engineering I Software Methods and Tools • Methods provide a means or procedure for accomplishing a task • Tools are devices for performing some task – analytical tools – software tools • Methodology guides the proper use of methods and tools • Process helps to enact a methodology • Environments are a synergistic collection of tools with process support 20

CSC 205 - Software Engineering I Analytical Tools • Problem solving techniques that help

CSC 205 - Software Engineering I Analytical Tools • Problem solving techniques that help in software development – cost-benefit analysis ¤ compare expected benefits against estimated costs – stepwise refinement ¤ divide and conquer – abstraction ¤ focus on some important property and ignore (for the time being) irrelevant details • Analytical tools underlie many software development methods 21

CSC 205 - Software Engineering I Software Tools • Software tools are an automated

CSC 205 - Software Engineering I Software Tools • Software tools are an automated implement for performing a task • Tools facilitate work because they are – fast, immune to boredom and "cheating" • Actual Software Tools are. . . – powerful, effective, convenient, natural, reliable, robust – Most software development tools are not ¤ exceptions: compilers, editors, loaders • these have been polished, refined, and debugged through long-term use and hence made reliable and robust • these have been made natural and effective through extended exposure and maintenance 22

CSC 205 - Software Engineering I Tool Obstacles • Tool use obstacles – developers

CSC 205 - Software Engineering I Tool Obstacles • Tool use obstacles – developers tend to be like hammer and screwdriver carpenters – tools are not powerful and/or effective – tools are unreliable and/or unrobust ¤ comes with time and money – tools are inconvenient and/or unnatural ¤ comes from successful use • Tool building obstacles – Short history of large-scale software development – Limited success in ¤ developing software well ¤ exploiting “tools” successfully – Few software techniques have had time and use required to achieve tool status – No “tools” at all in some key areas (e. g. , real-time analysis) 23

CSC 205 - Software Engineering I Requirements Preview • Requirements determine the “What” of

CSC 205 - Software Engineering I Requirements Preview • Requirements determine the “What” of a software product’s functionality. • Requirements analysis and specification transforms – informal product definition into – formal requirements specification • A step in between is transforming the product definition into a natural language statement of the system’s functionality 24