Functionality is a measure of how well a system does the work it was intended to do, but functionality is not all that matters in software development. Properties like interoperability, modifiability, and portability also matter as much as functionality does. These properties are determined primarily by the software structure – or the software architecture. While many structures can satisfy functionality, few can satisfy the required functionally and the quality attribute properties needed in a system. Achieving quality attributes in a predicable way can only be accomplished by deliberately selecting the appropriate structures early in the development process. This is a radical departure from high speed, lightweight programming methodologies (e.g. XP) that focuses on functionality and prescribes writing software until a product emerges – architectures also emerge in this paradigm. Emergent architectural structures may or may not meet the expectations of the broader stakeholders. Other methods espouse high ceremony processes and heavy emphasis on document production. The Architecture Centric Development Method (ACDM) can be differentiated from these extremes in that ACDM places the software architecture at the center of a development effort rather than software processes. Like architectures in the building and construction industries, ACDM prescribes using the architecture design to drive not only the technical aspects of the project, but also the programmatic issues of a development effort as well. ACDM weaves together product, technology, process, and people into a cohesive lightweight, scaleable development method.
[1]
Pierre Jacquet,et al.
History of architecture
,
1966
.
[2]
Watts S. Humphrey,et al.
Introduction to the Team Software Process
,
1999
.
[3]
Barry W. Boehm,et al.
Software Engineering Economics
,
1993,
IEEE Transactions on Software Engineering.
[4]
Rick Kazman,et al.
Architecture Reconstruction Guidelines, Third Edition
,
2001
.
[5]
Watts S. Humphrey,et al.
Managing the software process
,
1989,
The SEI series in software engineering.
[6]
Watts S. Humphrey,et al.
A discipline for software engineering
,
2012,
Series in software engineering.
[7]
Simon P. Wilson,et al.
Statistical methods in software engineering
,
1999
.
[8]
Kent L. Beck,et al.
Extreme programming explained - embrace change
,
1990
.