Programmer Notes: Software Construction

Jun 10 2020

This is part of my “Programmer Notes” series where I leave notes in the form of a blog post here based on something I’ve read or learned. See this post for more context.


What is Construction?

You know what “construction” means when it’s used outside software development. “Construction” is the work “construction workers” do when they build a house, a school, or a skyscraper. When you were younger, you built things out of “construction paper”.

In common usage, “construction” refers to the process of building, the process might include some aspects of planning, designing, and checking your work, but mostly “construction” refers to the hands-on part of creating something.

What is Software Construction?

Developing software is a complicated process. Researchers have identified numerous distinct activities that go into software development. They include:

  • Problem definition
  • Requirements development
  • Construction planning
  • Software architecture, or high-level design
  • Detailed design
  • Coding and debugging
  • Unit testing
  • Integration testing
  • Integration
  • System testing
  • Corrective maintenance

Construction is mostly coding and debugging but also involves detailed design, construction planning, unit testing integration testing, and other activities.

Construction is also sometimes known as “coding” or “programming” “Coding” isn’t really the best word because it implied the mechanical translation of a preexisting design into a computer language; construction is not at all mechanical and involves substantial creativity and judgment.

Here are some specific tasks involved in construction:

  • Verifying that the groundwork has been laid so that construction can proceed successfully
  • Determining how your code will be tested
  • Designing and writing classes and routines
  • Creating and naming variables and named constants
  • Selecting control structures and organizing blocks og statements
  • Unit testing, integration testing and debugging your own code
  • Reviewing other team members’ low level designs and code and having them review yours
  • Polishing code by carefully formatting and commenting it
  • Integrating software components that were created separately
  • Tuning code to make it faster and use fewer resources

Why Is Software Construction Important?

If you agree that improving software development is important in general, the question is Why is construction an important focus?

Here’s why:

Construction is a large part of software development

Depending on the size of the project, construction typically takes 30 to 80 percent of the total time spent on a project. Anything that takes up that much project time is bound to affect the success of the project.

Construction is the central activity in software development

Requirements and architecture are done before construction so that you can do construction effectively. System testing (in the strict sense of independent testing) is done after construction to verify that construction has been done correctly. Construction is at the center of the software-development process.

With a focus on construction, the individual programmer’s productivity can improve enormously

A study (1968) showed that the productivity of individual programmers varied by a factor of 10 to 20 during construction.

Construction’s product, the source code, is often the only accurate description of the software

In many projects, the only documentation available to programmers is the code itself. Requirements specifications and design documents can go out of date, but the source code is always up to date. Consequently, It’s imperative that the source code be of the highest quality.

Construction is the only activity that’s guaranteed to be done

The ideal software project goes through careful requirements development and architectural design before construction begins. Imperfect real-world projects, however, often skip requirements and design to jump into construction.

They drop testing because they have too many errors to fix and they’ve run out of time. But no matter how rushed or poorly planned a project is, you can’t drop construction. Improving construction is thus a way of improving any software development effort, no matter how abbreviated

Key Points

  • Software Construction is the central activity in software development; construction is the only activity that’s guaranteed to happen on every project.
  • The main activities in construction are detailed design, coding, debugging, integration, and developer testing (unit testing and integration testing)
  • Other common terms for construction are ‘coding’ or ‘programming’
  • The quality of the construction substantially affects the quality of the software.
  • Your understanding of how to do construction determines how good a programmer you are.

References

McConnell, S., 2004. Code Complete, Second Edition. Redmond (Washington): Microsoft Press.

Written on June 10, 2020