Information Technology Reference
In-Depth Information
4.4
ANALYSIS
The field of software engineering sometimes is criticized because it does not have the
same type of rigor as other types of engineering fields. Indeed, as software design is
somewhat of a creative activity, there is a tendency toward an informal approach to
software design, where design and coding is done on an informal basis. However, such
an informal approach actually is contrary to good software engineering techniques
(Laplante, 2005). This section of this chapter will attempt to explain some factors that
should be considered when evaluating a software design method, and will compare
and contrast some software design methods that were discussed in the last section.
Table 4.1 is a list of basic software engineering principles that should be considered
when evaluating a particular software design method.
The first principle, modularity, is the separation of concerns in software design.
Specifically, it has been found that modularity is one way to divide the incremental
tasks that a software designer must perform. That is, modular design involves the
decomposition of software behavior into software units and, in some instances, can
be done through object-oriented design (Laplante, 2005). Modularity can be achieved
by grouping locally related elements together, in terms of function and responsibility.
The second principle, anticipation of change, is an extremely important topic.
This is because software frequently is changed to support new features or to perform
repairs, especially in industry. Indeed, according to Phillips, “a high maintainability
level of the software products is one of the hallmarks of outstanding commercial
software” (Laplante, 2005, p. 234). In fact, engineers often are aware that systems
go through numerous changes over the life of the product, sometimes to add new
features or to fix a problem in production. Real-time systems must be designed so that
changes can be facilitated as easily as possible, without sacrificing other properties
of the software. Moreover, it is important to ensure that when software is modified,
other problems do not seem as a result of the change.
The third principle, generality, can be stated as the intent to look for a more general
problem resulting from the current design concept (Laplante, 2005). That is, in other
words, generality is the ability of the software to be reusable because the general idea
or problem of the current software can be applied to other situations.
The last principle, consistency, allows for a user to perform a task using a familiar
environment. A consistent look and feel in the software will make it easier and reduce
TABLE 4.1
Basic Software Engineering Principles
Type of Principle
Description
Modularity
Separation of concerns in software design can be achieved through
modular design
Anticipation of
Change
How well does the software adapt to change
Generality
The intent to look for a more general problem that can be solved
Consistency
Providing a familiar context to code
 
Search WWH ::




Custom Search