Lesson 10
Writing Java Programs Conclusion
In this module, you were introduced to writing programs using the Java programming language.
You now have the skills and knowledge necessary to:
- Download and install the Java 2 Software Development Kit
- Compile a Java program
- Run a Java program
- Use comments and indentation in a Java program
In the next module you will explore variables, data types, and basic operations in Java.
Writing Programs Correctly
When a beginning programmer writes a program, there is one goal: the program must work correctly. However, correctness is only a part of
what makes a program good. Another, equally important part is that the program be maintainable.
Perhaps you have experienced the frustration of installing a new version of some software, only to discover that its performance has
degraded and one of the features you depend on no longer works. Such situations occur when a new feature changes the existing software in ways
that other features did not expect. Good software is intentionally designed so that these unexpected interactions cannot occur. This module discussed the characteristics of well-designed software and introduces several rules that facilitate its
development.
Designing for Change
Software development typically follows an iterative approach. You create a version, let users try it, and receive change requests to be addressed in
the next version. These change requests may include bug fixes, revisions of misunderstandings of how the software should work, and feature
enhancements.
There are two common development methodologies. In the waterfall methodology, you begin by creating a design for the program, iteratively
revising the design until users are happy. Then you write the entire program, hoping that the first version will be satisfactory. It rarely is. Even
if you manage to implement the design perfectly, users will undoubtedly discover new features that they hadn’t realized they wanted.
Agile Methodology
In the agile methodology, program design and implementation
occur in tandem. You start by implementing a bare-bones version of the program. Each subsequent version implements a small number of
additional features. The idea is that each version contains just enough code to make the chosen subset of features work.
Both methodologies have their own benefits. But regardless of which methodology is used, a program will go through several versions during its
development. Waterfall development typically has fewer iterations, but the scope of each version change is unpredictable. Agile development plans
for frequent iterations with small, predictable changes.
The bottom line is that programs always change. If a program does not work the way users expect then it will need to be fixed. If a program
does work the way users expect then they will want it to be enhanced. It is therefore important to design your programs so that requested changes
can be made easily, with minimal modification to the existing code.
Suppose that you need to modify a line of code in a program. You will also need to modify the other lines of code that are impacted by this
modification, then the lines that are impacted by those modifications, and so on. As this proliferation increases, the modification becomes more
difficult, time-consuming, and error prone. Therefore, your goal should be to design the program such that a change to any part of it will affect only a small portion of the overall code.