Software Engineering PhasesDefinitionDefinition (cont.)DevelopmentDevelopment (cont.)MaintenanceUmbrella ActivitiesSoftware Engineering CostsSlide 9Relative Costs to Fix ErrorsWaterfall Process ModelPrototyping Process ModelWhen to use prototyping?Spiral Process ModelProcess ModelsCapability Maturity ModelWhy is software development so difficult?Why is software development difficult? (cont.)SummaryBottom LineSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess1Software Engineering PhasesSoftware Engineering PhasesDefinition: What?Development: How?Maintenance: Managing changeUmbrella Activities: Throughout lifecycleSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess2DefinitionDefinitionRequirements definition and analysisDeveloper must understandApplication domainRequired functionalityRequired performanceUser interfaceSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess3Definition (cont.)Definition (cont.)Project planningAllocate resourcesEstimate costs Define work tasksDefine scheduleSystem analysisAllocate system resources toHardwareSoftwareUsersSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess4DevelopmentDevelopmentSoftware designUser interface designHigh-level designDefine modular componentsDefine major data structuresDetailed designDefine algorithms and procedural detailSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess5Development (cont.)Development (cont.)CodingDevelop code for each moduleUnit testingIntegrationCombine modulesSystem testingSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess6MaintenanceMaintenanceCorrection - Fix software defectsAdaptation - Accommodate changesNew hardwareNew company policiesEnhancement - Add functionalityPrevention - make more maintainableSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess7Umbrella ActivitiesUmbrella ActivitiesReviews - assure qualityDocumentation - improve maintainability Version control - track changesConfiguration management - integrity of collection of componentsSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess8Software Engineering CostsSoftware Engineering CostsMaintenanceDevelopmentDefinitionSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess9Software Engineering CostsSoftware Engineering CostsPreventionEnhancementAdaptionCorrectionIntegrationCodingDesignSpecificationRequirementsSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess10Relative Costs to Fix ErrorsRelative Costs to Fix Errors0 20 40 60 801st QtrRequirementsDesignCodingTestingAfter DeliverySoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess11Waterfall Process ModelWaterfall Process ModelRequirementsDesignMaintenanceCodingTestingSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess12Prototyping Process ModelPrototyping Process ModelRequirementsQuick DesignPrototypeEvaluateDesignSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess13When to use prototyping?When to use prototyping?Help the customer pin down the requirementsConcrete model to “test out”Often done via the user interfaceExplore alternative solutions to a troublesome componente.g., determine if an approach gives acceptable performanceImprove moralePartially running system provides visibility into a projectSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess14Spiral Process ModelSpiral Process ModelPlanning Risk AnalysisEngineeringCustomerEvaluationSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess15Process ModelsProcess ModelsIdealized views of the processDifferent models are often used for different subprocessesmay use spiral model for overall developmentprototyping for a particularly complex component waterfall model for other componentsSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess16Capability Maturity ModelCapability Maturity ModelLevel 1: Initialsuccess depends on peopleLevel 2: Repeatabletrack cost, schedule, functionalityLevel 3: Defineduse standardized processesLevel 4: Managedcollect detailed metricsLevel 5: Optimizingcontinuous process improvement“built-in” process improvementSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess17Why is software development so difficult?Why is software development so difficult?CommunicationBetween customer and developerPoor problem definition is largest cause of failed software projectsWithin development teamMore people = more communicationNew programmers need trainingProject characteristicsNoveltyChanging requirements5 x cost during developmentup to 100 x cost during maintenanceHardware/software configurationSecurity requirementsReal time requirementsReliability requirementsSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess18Why is software development difficult? (cont.)Why is software development difficult? (cont.)Personnel characteristicsAbilityPrior experienceCommunication skillsTeam cooperationTrainingFacilities and resourcesIdentificationAcquisitionManagement issuesRealistic goalsCost estimationSchedulingResource allocationQuality assuranceVersion controlContractsSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess19SummarySummarySoftware lifecycle consist ofDefinition (what)Development (how)Maintenance (change)Different process models concentrate on different aspectsWaterfall model: maintainabilityPrototype model: clarifying requirementsSpiral model: identifying riskMaintenance costs much more than developmentSoftware Engineering CSE470: PSoftware Engineering CSE470: Processrocess20Bottom LineBottom LineU.S. software is a major part of our societal infrastructureCosts upwards of $200 billion/yearNeed to Improve software qualityReduce software
View Full Document