Presentation on theme: "Software Construction"— Presentation transcript:
1 Software Construction SWEBOK Chapter 4Software Construction
2 Fundamentals Minimizing Complexity Anticipating Change Construction for VerificationStandards in Construction
3 Minimizing Complexity One of the strongest drivers in software constructionRequired due to human limitations of memory
4 Minimizing Complexity How is complexity minimized during software construction? Use of standards Coding practices Construction-oriented quality techniques Creation of code that is simple and readable rather than clever
5 Anticipate Change Software will change Coding techniques can be used to make change easier (designing for change is also critical)Give potential causes for change
6 Construction for Verification Built is such a way to allow easy identification of defectsBy developers during constructionBy testersIdentification by developers and individual testing
7 Construction for Verification TechniquesFollowing coding standardsUnit testingOrganizing code to support automated testingRestricted use of complex/hard-to-understand language structures
8 Standards in Construction Communication methodsProgramming languagesPlatformsToolsExternal standardsInternal standardsCommunication methods: document formats CSV or XML, SOAP web services or HTTP POSTTools: UML modeling External standards: hardware and software interface specifications from the OMG or IEEEInternal standards: organizational
9 Managing Construction Construction ModelsConstruction PlanningConstruction Measurement
10 Construction Models Linear construction view Interative Construction only after significant pre-requisite work is completeCoding is main focus of constructionInterativeConstruction occurs at the same time as other development activitiesCombination of activities all considered construction
11 Construction Planning How are we going to build it?Affects prerequisite activitiesExtent to which they are performedOrder in which they are performedDegree to which they are expected to be complete before construction beginsAffects project’s ability to minimize complexity, anticipate change, and construct for verificationDefines the order in which components are created and integrated, QA management process, allocation of task assignments, etc.
12 Construction Measurement What aspects are being measured?Code developed (LOC)Code reusedCode modifiedCode complexityCode inspection statisticsDefects foundDefects fixedEffortSchedulingStory points (velocity)Why do we need to measure construction?
13 Practical Considerations Construction DesignConstruction LanguagesCodingConstruction TestingReuseConstruction QualityIntegration
14 Construction Design Design done before construction will be incomplete Detailed design same as overall design but at a smaller scaleHaven’t we already talked about design?
15 Construction Languages Anyway that a human can specify execution instructions to a computerConfiguration LanguagesToolkit LanguagesProgramming LanguagesConfiguration Languages are languages in which software engineers choose from a limited set of predefined options to create new or custom software installations. The text-based configuration files used in both the Windows and Unix operating systems are examples of this, and the menu style selection lists of some program generators constitute another.Toolkit languages are used to build applications out of toolkits (integrated sets of application-specific reusable parts), and are more complex than configuration languages. Toolkit languages may be explicitly defined as application programming languages (for example, scripts), or may simply be implied by the set of interfaces of a toolkit.Programming languages are the most flexible type of construction languages. They also contain the least amount of information about specific application areas and development processes, and so require the most trainingand skill to use effectively.
16 Coding Understandable source code Use of classes, enumerated types, variables, named constants, etcControl structuresError handlingPrevention of code-level security breachesResource usageSource code organizationCode documentationCode tuning
17 Construction TestingGoal: to reduce the time between defect creation and default detectionSubset of overall testing types performed by the engineer who wrote the codeUnit testingIntegration testing
18 ReuseReuse processes and activities must be formalized into the software life cycleSelection of what to reuseEvaluation of code or test reusabilityReporting of reuse information on new code
19 Construction Quality Common Techniques Unit and integration testingTest-first developmentCode steppingUse of assertionsDebuggingTechnical reviewsStatic analysisFocus on code and not overall project
20 Integration Plan the sequence in which components will be integrated Creation of scaffolding and stubs to support interim versionsDetermining the degree of testing done on components before they are integratedDetermine when interim versions of the software are tested