Related Topics
Who should read this book: Preface
Benefits of reading the book: Preface
Why the book was written: Preface
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 construction process might include some aspects of planning, designing, and checking your work, but mostly "construction" refers to the hands-on part of creating something.
Developing computer software can be a complicated process, and in the last 25 years, researchers have identified numerous distinct activities that go into software development. They include
If you've worked on informal projects, you might think that this list represents a lot of red tape. If you've worked on projects that are too formal, you know that this list represents a lot of red tape! It's hard to strike a balance between too little and too much formality, and that's discussed later in the book.
If you've taught yourself to program or worked mainly on informal projects, you might not have made distinctions among the many activities that go into creating a software product. Mentally, you might have grouped all of these activities together as "programming." If you work on informal projects, the main activity you think of when you think about creating software is probably the activity the researchers refer to as "construction."
This intuitive notion of "construction" is fairly accurate, but it suffers from a lack of perspective. Putting construction in its context with other activities helps keep the focus on the right tasks during construction and appropriately emphasizes important nonconstruction activities. Figure 1-1 illustrates construction's place related to other software-development activities.
Figure 1-1. Construction activities are shown inside the gray circle. Construction focuses on coding and debugging but also includes detailed design, unit testing, integration testing, and other activities
As the figure indicates, construction is mostly coding and debugging but also involves detailed design, construction planning, unit testing, integration, integration testing, and other activities. If this were a book about all aspects of software development, it would feature nicely balanced discussions of all activities in the development process. Because this is a handbook of construction techniques, however, it places a lopsided emphasis on construction and only touches on related topics. If this book were a dog, it would nuzzle up to construction, wag its tail at design and testing, and bark at the other development activities.
Construction is also sometimes known as "coding" or "programming." "Coding" isn't really the best word because it implies the mechanical translation of a preexisting design into a computer language; construction is not at all mechanical and involves substantial creativity and judgment. Throughout the book, I use "programming" interchangeably with "construction."
In contrast to Figure 1-1's flat-earth view of software development, Figure 1-2 shows the round-earth perspective of this book.
Figure 1-2. This book focuses on coding and debugging, detailed design, construction planning, unit testing, integration, integration testing, and other activities in roughly these proportions
Figure 1-1 and Figure 1-2 are high-level views of construction activities, but what about the details? Here are some of the specific tasks involved in construction:
Verifying that the groundwork has been laid so that construction can proceed successfully
Designing and writing classes and routines
Creating and naming variables and named constants
Selecting control structures and organizing blocks of 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
For an even fuller list of construction activities, look through the chapter titles in the table of contents.
With so many activities at work in construction, you might say, "OK, Jack, what activities are not part of construction?" That's a fair question. Important nonconstruction activities include management, requirements development, software architecture, user-interface design, system testing, and maintenance. Each of these activities affects the ultimate success of a project as much as construction—at least the success of any project that calls for more than one or two people and lasts longer than a few weeks. You can find good books on each activity; many are listed in the "Additional Resources" sections throughout the book and in Chapter 35, at the end of the book.
3.17.79.206