CS 561 – Software Engineering Review Carlos Jensen Introduction • What is Software Engineering? • How is Software Engineering different from Programming/development? • What do Software Engineers do? • Ethical considerations as Software Engineers What Do Software Engineers Do? • Requirements – Gathering – Analysis • Design • Project management – Staffing – Progress – Development methods • • • • Risk management Evaluation Documentation Support • Missing Anything? • Which parts have you been involved in? • Which parts have you not been involved in? Software Engineering Process • Requirements definition • System design • Sub-system development • System integration • System installation • System evolution • System decommissioning From Sommerville, p25+28+29 Life-cycle models Requirements Definition Waterfall Model Royce 1970 System & SW Design Implementation & Unit Testing What about mistakes? refinement? Integration & System Testing Operation & Maintenance Life-cycle models Requirements Definition Waterfall Model Royce 1970 System & SW Design Product:class models + Product: requirements specifications Implementation & Unit Testing What about mistakes? refinement? Step n+1: Design Integration & System Testing Operation & Maintenance complete targeted requirements Step n+2: Implement Product: code + Step n: Analyze requirements Step n+3: Test Product: test results + Adapted from Software Engineering: An Object-Oriented Perspective by Eric J. Braude (Wiley 2001), with permission. Life-cycle models Requirements Definition Waterfall Model Royce 1970 Product:class models + Product: requirements specifications System & SW Design Step n+1: Design Implementation & Unit Testing What about mistakes? refinement? complete targeted requirements Step n+2: Implement Integration & System Testing Operation & Maintenance Product: code + Step n: Analyze requirements Step n+3: Test Product: test results + Adapted from Software Engineering: An Object-Oriented Perspective by Eric J. Braude (Wiley 2001), with permission. Life-cycle models Requirements Definition Waterfall Model Royce 1970 Product:class models + Product: requirements specifications System & SW Design Step n+1: Design Implementation & Unit Testing What about mistakes? refinement? complete targeted requirements Step n+2: Implement Integration & System Testing Operation & Maintenance Product: code + Step n: Analyze requirements Step n+3: Test Product: test results + Adapted from Software Engineering: An Object-Oriented Perspective by Eric J. Braude (Wiley 2001), with permission. Life-cycle models Requirements Definition Product:class models + Waterfall Model Royce 1970 Product: requirements specifications System & SW Design Step n+1: Design Implementation & Unit Testing What about mistakes? refinement? Integration & System Testing complete targeted requirements Step n+2: Implement ? Operation & Maintenance Product: code + Step n: Analyze requirements Step n+3: Test Product: test results + Adapted from Software Engineering: An Object-Oriented Perspective by Eric J. Braude (Wiley 2001), with permission. Agile/Extreme Programming? • What is Agile/XP? – Key techniques & practices of XP • • • • Iterative development cycle Test-first mentality Pair-programming Prototyping • Why is Agile/XP popular/interesting? – How is Agile/XP different? – How is Agile/XP the same? Project & Risk management Sources of uncertainty • Requirements • Match (UI/interface) • Changing Environment • Resources • Management (support & talent) • Supply Chain • Politics • Conflict • Innovation • Scale What is risk management? • Risk discovery • Exposure analysis (probability * cost/damages) • Contingency planning • Mitigation • Ongoing transition monitoring Core Risks 1. 2. 3. 4. 5. Inherent scheduling flaw Requirements inflation Employee turnover Specifications breakdown Poor productivity Project & Risk Management • Managing expectations & Trade-offs • Planning for the unforeseen Target: 100% cost capability Target : 4 defects/Kloc Target : $70K duration defect density Target : 30 wks Project & Risk Management • Managing expectations & Trade-offs • Planning for the unforeseen Target: 100% cost Target : $70K Target: 100% Actual: 100% capability duration capability cost this project defect density Target : 30 wks Actual: 1 defect/Kloc Actual: $90K duration Target : 30 wks Target : 4 defects/Kloc Target : 4 defects/Kloc Target : $70K defect density Actual: 20 wks Work breakdown & scheduling • • • • • Activities, milestones & deliverables Task dependencies & scheduling Activity networks Gantt charts Margins for error (slack in the schedule) Managing team • Costs/problems of adding new programmers to existing project • Diminishing returns on programmer productivity • Problems to be overcome in adding new people to a project Optimal Size for Interaction Effectiveness per developer Approximate optimal range Developer communicates regularly with no one. No communication time lost, but developer is too isolated and has no help. 3 7 Number of people with whom developer must frequently interact Developer communicates regularly with eleven people. Communication time outweighs benefits of interaction Key: = engineer Cost estimation • Types of costs – Hardware Costs – Travel & Training costs – Effort costs • KLOC • Function points • Object points • Magnitude, overhead, margins • General approaches to cost estimation Requirements Requirements gathering • • • • • • • • • Ethnographic methods Interviewing Questionnaires Focus groups Studying documentation and artifacts Participatory design Prototyping Goal-oriented analysis …etc Requirements analysis • • • • Scenarios Use-cases “Profiles” IEEE requirements specification documents • Goal-oriented analysis • Prototypes Modeling requirements • • • • • Data-flow model Composition model Architectural model Classification model State transition model Problems with requirements? • • • • Consistency problem Completeness problem Ambiguity/lack of clarity problem …. • Solution? – Formal specifications…?