World Library  
Flag as Inappropriate
Email this Article

Software construction

Article Id: WHEBN0033408418
Reproduction Date:

Title: Software construction  
Author: World Heritage Encyclopedia
Language: English
Subject: Software development process, Software Engineering Body of Knowledge, Software engineering, Continuous test-driven development, Computer programming
Collection: Software Engineering
Publisher: World Heritage Encyclopedia
Publication
Date:
 

Software construction

Software development process
Core activities
Methodologies
Supporting disciplines
Tools

Software construction is a software engineering discipline. It is the detailed creation of working meaningful software through a combination of coding, verification, unit testing, integration testing, and debugging. It is linked to all the other software engineering disciplines, most strongly to software design and software testing.[1]

Contents

  • Software construction fundamentals 1
    • Minimizing complexity 1.1
    • Anticipating change 1.2
    • Constructing for verification 1.3
    • Standards in construction 1.4
  • Managing construction 2
    • Construction models 2.1
    • Construction planning 2.2
    • Construction measurement 2.3
  • Practical considerations 3
    • Construction design 3.1
    • Construction languages 3.2
    • Coding 3.3
    • Construction testing 3.4
    • Reuse 3.5
    • Construction quality 3.6
    • Integration 3.7
  • See also 4
  • References 5
  • External links 6

Software construction fundamentals

Minimizing complexity

Reduced complexity is achieved through emphasizing the creation of code that is simple and readable rather than clever. Minimizing complexity is accomplished through making use of standards, and through numerous specific techniques in coding. It is also supported by the construction-focused quality techniques.[1]

Anticipating change

Anticipating change is supported by many specific coding techniques:[1]

  • Communication methods: Such as standards for document formats and contents.
  • Programming languages
  • Platforms
  • Tools: Such as diagrammatic standards for notations like UML.

Constructing for verification

Constructing for code to support automated testing, and restricted use of complex or hard-to-understand language structures, among others.[1]

Standards in construction

Standards that directly affect construction issues include:[1]

  • Use of external standards: The standards for construction languages, construction tools, technical interfaces, and interactions between software construction and other disciplines.
  • Use of internal standards: The standards which may be created on an organizational basis to support coordination of group activities, minimizing complexity, anticipating change, and constructing for verification.

Managing construction

Construction models

Numerous models have been created to develop software, some of which emphasize construction more than others. Some models are more linear from the construction point of view, such as the waterfall and staged-delivery life cycle models. These models treat construction as an activity which occurs only after significant prerequisite work has been completed—including detailed requirements work, extensive design work, and detailed planning. Other models are more iterative, such as evolutionary prototyping, Extreme Programming, and Scrum. These approaches tend to treat construction as an activity that occurs concurrently with other software development activities, including requirements, design, and planning, or overlaps them.[1]

Construction planning

The choice of construction method is a key aspect of the construction planning activity. The choice of construction method affects the extent to which construction prerequisites are performed, the order in which they are performed, and the degree to which they are expected to be completed before construction work begins. Construction planning also defines the order in which components are created and integrated, the software quality management processes, the allocation of task assignments to specific software engineers, and the other tasks, according to the chosen method.[1]

Construction measurement

Numerous construction activities and artifacts can be measured, including code developed, code modified, code reused, code destroyed, code complexity, code inspection statistics, fault-fix and fault-find rates, effort, and scheduling. These measurements can be useful for purposes of managing construction, ensuring quality during construction, improving the construction process, as well as for other reasons.[1]

Practical considerations

Software construction is driven by many practical considerations:

Construction design

In order to account for the unanticipated gaps in the software design, during software construction some design modifications must be made on a smaller or larger scale to flesh out details of the software design.[1]

Construction languages

Construction languages include all forms of communication by which a human can specify an executable problem solution to a computer. They include configuration languages, toolkit languages, and programming languages:[1]

  • Configuration languages are languages in which software engineers choose from a limited set of predefined options to create new or custom software installations.
  • Toolkit languages are used to build applications out of toolkits and are more complex than configuration languages.
  • Programming languages are the most flexible type of construction languages which use three general kinds of notation:
    • Linguistic notations which are distinguished in particular by the use of word-like strings of text to represent complex software constructions, and the combination of such word-like strings into patterns that have a sentence-like syntax.
    • Formal notations which rely less on intuitive, everyday meanings of words and text strings and more on definitions backed up by precise, unambiguous, and formal (or mathematical) definitions.
    • Visual notations which rely much less on the text-oriented notations of both linguistic and formal construction, and instead rely on direct visual interpretation and placement of visual entities that represent the underlying software.

Coding

The following considerations apply to the software construction coding activity:[1]

Construction testing

The purpose of construction testing is to reduce the gap between the time at which faults are inserted into the code and the time those faults are detected. In some cases, construction testing is performed after code has been written. In other cases, test cases may be created before code is written. Construction involves two forms of testing, which are often performed by the software engineer who wrote the code:[1]

Reuse

Implementing software reuse entails more than creating and using libraries of assets. It requires formalizing the practice of reuse by integrating reuse processes and activities into the software life cycle. The tasks related to reuse in software construction during coding and testing are:[1]

  • The selection of the reusable units, databases, test procedures, or test data.
  • The evaluation of code or test re-usability.
  • The reporting of reuse information on new code, test procedures, or test data.

Construction quality

The primary techniques used to ensure the quality of code as it is constructed include:[1]

Integration

A key activity during construction is the integration of separately constructed routines, classes, components, and subsystems. In addition, a particular software system may need to be integrated with other software or hardware systems. Concerns related to construction integration include planning the sequence in which components will be integrated, creating scaffolding to support interim versions of the software, determining the degree of testing and quality work performed on components before they are integrated, and determining points in the project at which interim versions of the software are tested.[1]

See also

References

  1. ^ a b c d e f g h i j k l m n o  

External links

  • Guide to the Software Engineering Body of Knowledge - 2004 Version By IEEE Computer Society
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.