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?
Requirements definition System design Sub-system development System integration System installation System evolution System decommissioning From Sommerville, p Software Engineering Process
Life-cycle models
?
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.Inherent scheduling flaw 2.Requirements inflation 3.Employee turnover 4.Specifications breakdown 5.Poor productivity
Project & Risk Management cost capabilityduration defect density Target : $70K Target : 30 wks Target : 4 defects/Kloc Target: 100% Managing expectations & Trade-offs Planning for the unforeseen
Project & Risk Management cost capabilityduration defect density Target : $70K Target : 30 wks Target : 4 defects/Kloc Target: 100% Managing expectations & Trade-offs Planning for the unforeseen
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 Number of people with whom developer must frequently interact Developer communicates regularly with eleven people. Communication time outweighs benefits of interaction Developer communicates regularly with no one. No communication time lost, but developer is too isolated and has no help. Key:= engineer Approximate optimal range 37 Effectiveness per developer
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…?