Software construction
Encyclopedia
Software construction is a software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

 discipline. It is the detailed creation of working, meaningful software through a combination of coding, verification
Software verification
Software verification is a broader and more complex discipline of software engineering whose goal is to assure that software fully satisfies all the expected requirements.There are two fundamental approaches to verification:...

, unit testing, integration testing
Integration testing
Integration testing is the phase in software testing in which individual software modules are combined and tested as a group. It occurs after unit testing and before validation testing...

, and debugging
Debugging
Debugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware, thus making it behave as expected. Debugging tends to be harder when various subsystems are tightly coupled, as changes in one may cause bugs to emerge...

. It is linked to all the other software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

 disciplines, most strongly to software design
Software design
Software design is a process of problem solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution...

 and software testing
Software testing
Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software...

.

Minimizing complexity

Reduced complexity
Programming Complexity
Programming complexity is a term that encompasses numerous properties of a piece of software, all of which affect internal interactions. According to several commentators, there is a distinction between the terms complex and complicated. Complicated implies being difficult to understand but with...

 is achieved through emphasizing the creation of code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

 that is simple and readable rather than clever. Minimizing complexity
Programming Complexity
Programming complexity is a term that encompasses numerous properties of a piece of software, all of which affect internal interactions. According to several commentators, there is a distinction between the terms complex and complicated. Complicated implies being difficult to understand but with...

 is accomplished through making use of standards, and through numerous specific techniques in coding. It is also supported by the construction-focused quality techniques.

Anticipating change

Anticipating change is supported by many specific coding techniques:
  • Communication methods: Such as standards for document formats and contents.
  • Programming languages
  • Platforms
  • Tools: Such as diagrammatic standards for notations like UML
    UML
    UML may refer to:* Unified Modeling Language, an object modeling and specification language used in software engineering* User-mode Linux, an architectural port of the Linux kernel* University of Massachusetts Lowell, in the United States...

    .

Constructing for verification

Constructing for verification
Software verification
Software verification is a broader and more complex discipline of software engineering whose goal is to assure that software fully satisfies all the expected requirements.There are two fundamental approaches to verification:...

 means building software in such a way that faults can be ferreted out readily by the software engineers writing the software, as well as during independent testing
Software testing
Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software...

 and operational activities. Specific techniques that support constructing for verification
Software verification
Software verification is a broader and more complex discipline of software engineering whose goal is to assure that software fully satisfies all the expected requirements.There are two fundamental approaches to verification:...

 include following coding standards to support code reviews, unit testing, organizing code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

 to support automated testing, and restricted use of complex or hard-to-understand language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

 structures, among others.

Standards in construction

Standards that directly affect construction issues include:
  • Use of external standards: The standards for construction languages
    Programming language
    A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

    , 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.

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
Waterfall
A waterfall is a place where flowing water rapidly drops in elevation as it flows over a steep region or a cliff.-Formation:Waterfalls are commonly formed when a river is young. At these times the channel is often narrow and deep. When the river courses over resistant bedrock, erosion happens...

 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
Software requirements
Software Requirements is a sub-field of Software engineering that deals with the elicitation, analysis, specification, and validation of requirements for software....

 work, extensive design
Software design
Software design is a process of problem solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution...

 work, and detailed planning. Other models are more iterative
Iterative and incremental development
Iterative and Incremental development is at the liver of a cyclic software development process developed in response to the weaknesses of the waterfall model...

, such as evolutionary prototyping, Extreme Programming
Extreme Programming
Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...

, and Scrum
Scrum
Scrum can refer to:* Scrum , a rugby restart after an interruption* Media scrum , similar to a rugby scrum, occurs when public figures, such as politicians, are surrounded by a group of journalists and are asked questions in an impromptu or loosely organized manner* Scrum , an agile software...

. These approaches tend to treat construction as an activity that occurs concurrently with other software development
Software development
Software development is the development of a software product...

 activities, including requirements
Software requirements
Software Requirements is a sub-field of Software engineering that deals with the elicitation, analysis, specification, and validation of requirements for software....

, design
Software design
Software design is a process of problem solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution...

, and planning, or overlaps them.

Construction planning

The choice of construction method
Software development methodology
A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system.- History :...

 is a key aspect of the construction planning activity. The choice of construction method
Software development methodology
A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system.- History :...

 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
Software quality management
- Definitions : The aim of Software Quality Management is to manage the quality of software and of its development process. A quality product is one which meets its requirements and satisfies the user...

 processes, the allocation of task assignments to specific software engineers, and the other tasks, according to the chosen method
Software development methodology
A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system.- History :...

.

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.

Construction design

In order to account for the unanticipated gaps in the software design
Software design
Software design is a process of problem solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution...

, during software construction some design modifications must be made on a smaller or larger scale to flesh out details of the software design
Software design
Software design is a process of problem solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution...

.

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:
  • 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:
  • Techniques for creating understandable source code
    Source code
    In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

    , including naming and source code layout
  • Use of classes, enumerated types, variables, named constants
    Constant (programming)
    In computer programming, a constant is an identifier whose associated value cannot typically be altered by the program during its execution...

    , and other similar entities
  • Use of control structures
  • Handling of error conditions—both planned errors and exceptions
    Exception handling
    Exception handling is a programming language construct or computer hardware mechanism designed to handle the occurrence of exceptions, special conditions that change the normal flow of program execution....

     (input of bad data, for example)
  • Prevention of code-level security breaches (buffer overruns or array index overflows, for example)
  • Resource
    Computational resource
    In computational complexity theory, a computational resource is a resource used by some computational models in the solution of computational problems....

     usage via use of exclusion mechanisms and discipline in accessing serially reusable resources
    Computational resource
    In computational complexity theory, a computational resource is a resource used by some computational models in the solution of computational problems....

     (including threads
    Thread (computer science)
    In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...

     or database locks)
  • Source code
    Source code
    In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

     organization (into statements
    Statement (programming)
    In computer programming a statement can be thought of as the smallest standalone element of an imperative programming language. A program written in such a language is formed by a sequence of one or more statements. A statement will have internal components .Many languages In computer programming...

    , routines
    Subroutine
    In computer science, a subroutine is a portion of code within a larger program that performs a specific task and is relatively independent of the remaining code....

    , classes, packages
    Java package
    A Java package is a mechanism for organizing Java classes into namespaces similar to the modules of Modula. Java packages can be stored in compressed files called JAR files, allowing classes to download faster as a group rather than one at a time...

    , or other structures)
  • Code documentation
  • Code tuning

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
Software engineer
A software engineer is an engineer who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as computer chips, work.- Overview :...

 who wrote the code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

:
  • Unit testing
  • Integration testing
    Integration testing
    Integration testing is the phase in software testing in which individual software modules are combined and tested as a group. It occurs after unit testing and before validation testing...


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:
  • The selection of the reusable units, databases, test procedures, or test data
    Test data
    Test Data are data which have been specifically identified for use in tests, typically of a computer program.Some data may be used in a confirmatory way, typically to verify that a given set of input to a given function produces some expected result...

    .
  • The evaluation of code
    Source code
    In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

     or test re-usability.
  • The reporting of reuse information on new code, test procedures, or test data
    Test data
    Test Data are data which have been specifically identified for use in tests, typically of a computer program.Some data may be used in a confirmatory way, typically to verify that a given set of input to a given function produces some expected result...

    .

Construction quality

The primary techniques used to ensure the quality of code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

 as it is constructed include:
  • Unit testing and integration testing
    Integration testing
    Integration testing is the phase in software testing in which individual software modules are combined and tested as a group. It occurs after unit testing and before validation testing...

  • Test-first development
  • Code stepping
  • Use of assertions
    Assertion (computing)
    In computer programming, an assertion is a predicate placed in a program to indicate that the developer thinks that the predicate is always true at that place.For example, the following code contains two assertions:...

  • Debugging
    Debugging
    Debugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware, thus making it behave as expected. Debugging tends to be harder when various subsystems are tightly coupled, as changes in one may cause bugs to emerge...

  • Technical reviews
  • Static analysis (IEEE1028)

Integration

A key activity during construction is the integration of separately constructed routines
Subroutine
In computer science, a subroutine is a portion of code within a larger program that performs a specific task and is relatively independent of the remaining code....

, classes, components, and subsystems. In addition, a particular software system
Software system
A software system is a system based on software forming part of a computer system . The term "software system" is often used as a synonym of computer program or software; is related to the application of systems theory approaches in software engineering context and are used to study large and...

 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.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK