116
SECTION 2
Software Engineering Practices
Several additional chapters are included to provide detailed commentary concern-
ing the development of the three architectural perspectives. Chapters 7, 9, 10, and
12 are for informational purposes and should not be considered definitive or conclu-
sive portrayals of the practice to which they pertain. These chapters are provided to
assist readers in gaining an appreciation for each software engineering practice and
its application.
Developing the software product architecture
The software engineering practices provide a set of tasks for translating stakeholder
needs into a complete, consistent, and effective software product architecture.
A fundamental flaw emerges when the practices are applied as sequential steps
in the establishment of the architecture. These practices should not be interpreted
to imply that the architecture is formulated by first establishing the requirements
baseline, then the functional architecture, and lastly the physical architecture. This
sequence implies a waterfall approach that inhibits proper exploration of the prob-
lem/solution space. The primary practices of software requirements analysis, func-
tional analysis and allocation, software design synthesis, and software analysis
provide the basis for deriving an integrated architectural solution in a manner that
is aligned with stakeholder needs and expectations, as well as project resource con-
straints, technology readiness, and staff proficiency.
There are several conceptual approaches to evolving the software product archi-
tecture that must be considered when planning the software engineering effort. This
involves how the software engineering practices will be applied to result in the
architecture. Most software methodologies fail to provide for the iterative nature of
the design process. Therefore, early architectural design decisions are assumed to
be final and are never revisited, even when they impose risks to achieving project
objectives. Popular software development methodologies (e.g., iterative, incremen-
tal, and agile) have been embraced due to the inability of the software development
team to grasp a complete architectural solution. Regardless of the methodology
chosen, every software development project will derive enormous benefits from the
proper application of software engineering and establishing a durable architectural
foundation for a software product.
Do'stlaringiz bilan baham: |