Overview of Software Engineering PrinciplesEngineeringSoftware Engineering in a NutshellEver-Present DifficultiesWhy These Difficulties?Software Engineering ≠ Software ProgrammingSlide 7Economic and Management Aspects of SERelative Costs of Fixing Software FaultsMythical Man-Month by Fred BrooksSoftware Development Lifecycle Waterfall ModelSoftware Development Lifecycle Spiral ModelRequirementsArchitecture/DesignArchitecture vs. Design [Perry & Wolf 1992]Implementation & IntegrationComponent-Based DevelopmentDifferent Flavors of ComponentsVerification and ValidationDeployment & EvolutionConfiguration Management (CM) [Tichy 1988]CM in ActionSoftware Engineering PrinciplesFrom Principles to ToolsSoftware QualitiesExternal vs. Internal QualitiesProduct vs. Process QualitiesSome Software QualitiesSome Software Qualities (cont.)Slide 30Slide 31Slide 32Slide 33Slide 34Software Process QualitiesAssessing Software QualitiesSoftware Engineering “Axioms”Overview of Software Engineering PrinciplesCSCI 599:Software Engineering for Embedded SystemsAugust 27, 2002EngineeringEngineering is …the application of scientific principles and methodsTo the construction of useful structures & machinesExamplesMechanical engineeringCivil engineeringChemical engineeringElectrical engineeringNuclear engineeringAeronautical engineeringSoftware Engineering in a NutshellDevelopment of software systems whose size/complexity warrants team(s) of engineersmulti-person construction of multi-version software [Parnas 1987]Scopestudy of software process, development principles, techniques, and notationsGoalproduction of quality software, delivered on time, within budget, satisfying customers’ requirements and users’ needsEver-Present DifficultiesFew guiding scientific principlesFew universally applicable methodsAs muchmanagerial / psychological / sociologicalas technologicalWhy These Difficulties?SE is a unique brand of engineeringSoftware is malleableSoftware construction is human-intensiveSoftware is intangibleSoftware problems are highly complexSoftware directly depends upon the hardwareIt is at the top of the system engineering “food chain”Software Engineering ≠ Software ProgrammingSoftware programmingSingle developer“Toy” applicationsShort lifespanSingle or few stakeholdersArchitect = Developer = Manager = Tester = Customer = UserOne-of-a-kind systemsBuilt from scratchMinimal maintenanceSoftware Engineering ≠ Software ProgrammingSoftware engineeringTeams of developers with multiple rolesComplex systemsIndefinite lifespanNumerous stakeholdersArchitect ≠ Developer ≠ Manager ≠ Tester ≠ Customer ≠ UserSystem familiesReuse to amortize costsMaintenance accounts for over 60% of overall development costsEconomic and Management Aspects of SESoftware production =development + maintenance (evolution)Maintenance costs > 60% of all development costs20% corrective30% adaptive50% perfectiveQuicker development is not always preferablehigher up-front costs may defray downstream costspoorly designed/implemented software is a critical cost factorRelative Costs of Fixing Software FaultsRequirementsSpecification Planning Design Implementation Integration Maintenance12341030200Mythical Man-Monthby Fred BrooksPublished in 1975, republished in 1995Experience managing development of OS/360 in 1964-65Central argumentLarge projects suffer management problems different in kind than small ones, due to division in laborCritical need is the preservation of the conceptual integrity of the product itselfCentral conclusionsConceptual integrity achieved through chief architectImplementation achieved through well-managed effortBrooks’s LawAdding personnel to a late project makes it laterSoftware Development LifecycleWaterfall Model Requirements Design Implementation Integration Validation DeploymentEvaluate alternatives,identify, resolve risks,develop prototypesDevelop, verifynext-level productPlan next phasesDetermine objectivesalternatives, constraintsSoftware Development LifecycleSpiral ModelRequirementsProblem Definition → Requirements Specificationdetermine exactly what the customer and user wantdevelop a contract with the customerspecifies what the software product is to doDifficultiesclient asks for wrong productclient is computer/software illiteratespecifications are ambiguous, inconsistent, incompleteVerificationextensive specification reviews with the customeridentify ambiguity, inconsistency, incompletenessascertain feasibility, testabilitydevelop system/acceptance test planArchitecture/DesignRequirements Specification → Architecture/Designarchitecture: decompose software into modules with interfacesdesign: develop module specifications (algorithms, data types)maintain a record of design decisions and traceabilityspecifies how the software product is to do its tasksDifficultiesmiscommunication between module designersdesign may be inconsistent, incomplete, ambiguousVerificationdesign inspections to establish conformance to requirementscheck module interactionsdevelop integration test planArchitecture vs. Design[Perry & Wolf 1992]Architecture is concerned with the selection of architectural elements, their interactions, and the constraints on those elements and their interactions necessary to provide a framework in which to satisfy the requirements and serve as a basis for the design.Design is concerned with the modularization and detailed interfaces of the design elements, their algorithms and procedures, and the data types needed to support the architecture and to satisfy the requirements.Implementation & IntegrationDesign → Implementationimplement modules; verify that they meet their specificationscombine modules according to the designspecifies how the software product does its tasksDifficultiesmodule interaction errorsorder of integration may influence quality and productivityVerificationcode reviews to establish conformance to requirements & designcheck module interactionsdevelop unit test plan: focus on individual modulestest on unit, integration and acceptance test plansComponent-Based DevelopmentDevelop generally applicable components of a reasonable size and reuse them across
View Full Document