Introduction and Overview Lecture 1 Software Engineering CUGS course Spring 2011 Kristian Sandahl Department of Computer and Information Science Linköping University, Sweden Kristian.Sandahl@ida.liu.se 2 Who is Kristian? Gotland Naval HQ Part I Definition and role of SE Kristian.Sandahl @liu.se Småland Linköping Protein purification Ericsson Part II A life cycle model 1 3 Agenda Kristian.Sandahl @liu.se Part I – Definition and role of software engineering Part I Definition and role of SE Part II – A life cycle model Part II A life cycle model 4 Kristian.Sandahl @liu.se Part I Definition and role of Software Engineering Part I Definition and role of SE Part II A life cycle model 2 A typical Software Project 5 Kristian.Sandahl @liu.se How the customer explained it Part I Definition and role of SE Part II A life cycle model A typical Software Project 6 Kristian.Sandahl @liu.se How the project leader understood it Part I Definition and role of SE Part II A life cycle model 3 A typical Software Project 7 Kristian.Sandahl @liu.se How the analyst designed it Part I Definition and role of SE Part II A life cycle model A typical Software Project 8 Kristian.Sandahl @liu.se How the programmer wrote it Part I Definition and role of SE Part II A life cycle model 4 A typical Software Project 9 Kristian.Sandahl @liu.se How the business consultant described it Part I Definition and role of SE Part II A life cycle model A typical Software Project 10 Kristian.Sandahl @liu.se How the project was documented Part I Definition and role of SE Part II A life cycle model 5 A typical Software Project 11 Kristian.Sandahl @liu.se What operations installed Part I Definition and role of SE Part II A life cycle model A typical Software Project 12 Kristian.Sandahl @liu.se How the customer was billed Part I Definition and role of SE Part II A life cycle model 6 A typical Software Project 13 Kristian.Sandahl @liu.se How it was supported Part I Definition and role of SE Part II A life cycle model A typical Software Project 14 Kristian.Sandahl @liu.se Finally, what the customer really needed Part I Definition and role of SE Part II A life cycle model 7 15 Why do we need SE? Frequent failures: Kristian.Sandahl @liu.se Charette, R.N. (2005) Why Software Fails, IEEE Spectrum, September 2005 Space shuttle Nike Denver airport LA airport Geppert, L (2004) Lost Radio Contact Leaves Pilots On Their Own, IEEE Spectrum, Nov 2004 Part I Definition and role of SE Part II A life cycle model Software Engineering 16 Kristian.Sandahl @liu.se Application of systematic, disciplined, quantifiable approach to software development, operation and maintenance of software. (IEEE-Std.) Part I Definition and role of SE Part II A life cycle model 8 17 Studying SE theory Kristian.Sandahl @liu.se Reading about concepts and methods derived from experience Almost everything have their pros and cons Quite little is based on mathematical theory Requires disciplined plan for reading different sources Part I Definition and role of SE Part II A life cycle model 18 Studying SE theory Your job Find central concepts and methods over the entire field Study their applicability, pros and cons Practice analysing and designing small examples Participate in examination Ask us questions Give us suggestions for further improvement Kristian.Sandahl@ida.liu.se Subject: DF14900 Part I Definition and role of SE Kristian.Sandahl @liu.se Our job Account for the most central concepts in lectures Set things in context Discuss industrial relevance Arrange examination Answer your questions Listen to feed-back: 0706-68 19 57 3B:470 Part II A life cycle model 9 19 Ambition level Kristian.Sandahl @liu.se You will know enough to communicate easily with professional software engineers You will have the basic knowledge to start generating your own experience, perhaps already obtained You will have a curious, but critical, attitude towards existing and new methods Part I Definition and role of SE Part II A life cycle model 20 Kristian.Sandahl @liu.se Part II Contents of a Software Life Cycle Part I Definition and role of SE Part II A life cycle model 10 21 Scope of a software life-cycle model Software Product Idea Usage Operation & maintenance Part I Definition and role of SE Kristian.Sandahl @liu.se Replacement Part II A life cycle model 22 Model of a life-cycle Kristian.Sandahl @liu.se Abstraction Carol the customer Diana the developer Part I Definition and role of SE Time Part II A life cycle model 11 23 Requirements Kristian.Sandahl @liu.se Requirements Elicitation Collect user requirement Part I Definition and role of SE Analyze Understand Specify Document Validate Check that it matches user requirements Part II A life cycle model 24 Requirements Kristian.Sandahl @liu.se Requirements Functional requirements Non-Functional requirements Part I Definition and role of SE A required behavior or function E.g. "delete material items" Quality requirements E.g. performance, scalability, usability maintainability, etc. Part II A life cycle model 12 25 Requirements and Acceptance Test Kristian.Sandahl @liu.se Validate Requirements, Verify Specification Acceptance Test Requirements (Release testing) Part I Definition and role of SE Part II A life cycle model 26 System Design Kristian.Sandahl @liu.se Validate Requirements, Verify Specification Acceptance Test Requirements (Release testing) System DesignDecompose into sub-systems or modules (Architecture, • High-level Design) Well-defined interfaces • High level of abstraction Module 1 Module 2 Module 3 Part I Definition and role of SE Architecture styles, e.g. • Client-server • Layered Models • Pipes and Filters Part II A life cycle model 13 27 System and Module Design Kristian.Sandahl @liu.se Validate Requirements, Verify Specification Acceptance Test Requirements (Release testing) System Design Unified Modeling Language (UML) (Architecture, High-level Design) Use a standardized way to model system graphically Module Design (Program Design, Detailed Design) Design Patterns Reuse design solution that has worked before Part I Definition and role of SE Part II A life cycle model 28 Testing Kristian.Sandahl @liu.se Validate Requirements, Verify Specification Acceptance Test Requirements (Release testing) System Design System Testing (Architecture, High-level Design) (Integration testing of modules) Module Design (Program Design, Detailed Design) Verify Module Design Module Testing (Integration testing of units) Verify Implementation Implementation of Units (classes, procedures, functions) Part I Definition and role of SE Unit testing Part II A life cycle model 14 29 Testing Kristian.Sandahl @liu.se Validate Requirements, Verify Specification Acceptance Test Requirements (Release testing) System Design System Testing Integration testing (Integration testing of modules) • Dependencies between modules (Architecture, High-level Design) Module Design Module 1 (Program Design, Detailed Design) Approaches Verify Module Design • Top-down (need stubs) Module Testing Module 2 • Bottom-up (need drivers) (Integration testing of units) • Sandwich Verify Implementation • Big-bag Implementation of Module Units (classes, procedures, 3 functions) Part I Definition and role of SE Unit testing Part II A life cycle model 30 Supporting Processes Kristian.Sandahl @liu.se Validate Requirements, Verify Specification Acceptance Test Requirements (Release testing) Verify System Design System Design System Testing (Architecture, High-level Design) (Integration testing of modules) Module Design (Program Design, Detailed Design) Verify Module Design Module Testing (Integration testing of units) Verify Implementation Implementation of Units (classes, procedures, functions) Part I Definition and role of SE Unit testing Part II A life cycle model 15 31 Inspection Kristian.Sandahl @liu.se Validate Requirements, Verify Specification Inspection Requirements System Design Acceptance Test Formal Inspection • Reviewing with a defined process • Aim at finding defects Verify System Design • Works in practice (Architecture, High-level Design) (Release testing) System Testing (Integration testing of modules) Module Design (Program Design, Detailed Design) Verify Module Design Module Testing (Integration testing of units) Verify Implementation Implementation of Units (classes, procedures, functions) Part I Definition and role of SE Unit testing Part II A life cycle model Software Life Cycles, Configuration Mgm. Software Life Cycles and Configuration Management Validate Requirements, Verify Specification 32 Kristian.Sandahl @liu.se Acceptance Test Requirements (Release testing) System Design V-model Verify System Design Waterfall model System Testing (Architecture, High-level Design) (Integration testing of modules) Module Design Verify Module Design R (Program Design, Iterative models Detailed Design) R Testing R Module (Integration testing of units) Verify Implementation Implementation Configuration Management of Units (classes, procedures, functions) (CM) Unit testing Keep track of versions. Used the wrong code-base. Part I Definition and role of SE Part II A life cycle model 16 33 Software Quality Management Kristian.Sandahl @liu.se Validate Requirements, Verify Specification Acceptance Test Requirements (Release testing) Verify System Design System Design System Testing (Architecture, High-level Design) (Integration testing of modules) Software Quality Management Different qualities Verify Module Design Module Design• Quality of product (Program Design, • Quality of process Detailed Design) • Quality in a business environment Verify Implementation Implementation of Units (classes, procedures, functions) Part I Definition and role of SE Module Testing (Integration testing of units) Unit testing Part II A life cycle model Software Life Cycles, Configuration Mgm. Project Management 34 Kristian.Sandahl @liu.se Validate Requirements, Verify Specification Calendar-time Resources Requirements Acceptance Test (Release testing) Time plan Verify System Design System Design Milestones Time-budget (Architecture, System Testing Activities (Integration testing of modules) High-level Design) • Resource management • Time-buffer Verify Module Design Module Design • Internal milestones - keep track (Program Design, Detailed Design) Verify Implementation Implementation Risk Management of Units (classes, procedures, functions) Identify Module Testing (Integration testing of units) Analyze Plan Unit testing - Minimize - Transfer - Accept probability - consequence Part I Definition and role of SE Part II A life cycle model 17 35 A Software Life-cycle Kristian.Sandahl @liu.se Maintenance Validate Requirements, Verify Specification Acceptance Test Requirements (Release testing) Verify System Design System Design System Testing (Architecture, High-level Design) (Integration testing of modules) Module Design (Program Design, Detailed Design) Verify Module Design Module Testing (Integration testing of units) Verify Implementation Implementation of Units (classes, procedures, functions) Unit testing Project Management, Software Quality Assurance (SQA), Supporting Tools, Education Part I Definition and role of SE Part II A life cycle model 36 Summary Kristian.Sandahl Maintenance @liu.se Validate Requirements, Verify Specification Acceptance Test Requirements (Release testing) Verify System Design System Design System Testing (Architecture, High-level Design) (Integration testing of modules) Module Design (Program Design, Detailed Design) Verify Module Design Module Testing (Integration testing of units) Verify Implementation Implementation of Units (classes, procedures, functions) Unit testing Project Management, Software Quality Assurance (SQA), Supporting Tools, Education Part I Definition and role of SE Part II A life cycle model 18