SlideShare a Scribd company logo
1 of 28
76 May 2007/Vol. 50, No. 5 COMMUNICATIONS OF THE
ACM COMMUNICATIONS OF THE ACM May 2007/Vol. 50,
No. 5 75
Adding the word architect to a software practitioner’s title
seems sim-
ple enough, but beneath the surface fundamentally different
thinking,
toolsets, and disciplines are required to succeed. In teaching
software
architecture and working as a software architect, database
architect, and
chief architect, I have often found that an unfortunate lack of
knowledge
surrounds the architect’s role. Even experienced software
practitioners are
often unable to define what exactly the architect does or adds to
the soft-
ware development process.
THE SOFTWARE
ARCHITECT
B y M a t t h e w R . Mc B r i d e
Leadership is the defining characteristic in
an unforgiving technology arena.
The context for my discussion here is the
construction of enterprise-level business appli-
cations. I chose it for its inherent difficulty and
complexity, though the related architectural
principles may be applied to any type of soft-
ware construction. Specifically, I examine the
results of applying these principles to three sep-
arate development efforts: a product-ordering
Web site, a complex business-to-business inte-
gration project, and the design and develop-
ment of an enterprise application. Regardless
of the situation, my experience has been that
software architects are not born but trained,
sometimes in the school of hard knocks.
Although effective software architects seem to
intuitively understand and guide projects, an
intellectual framework and its associated disci-
plines and tools are behind this thinking.
Reports of IT overspending and project failure
emphasize the fact that these skills must be
developed. Software professionals in a variety
of roles can leverage them to lead software pro-
jects to exceed customer expectations.
Many seminal ideas in software architecture
can be traced back to a speech Christopher
Alexander, a distinguished building architect,
• Explicit requirements explode by a factor of 50 or
more into implicit (design) requirements as a soft-
ware solution proceeds.
Perhaps more than any other task, managing com-
plexity is an essential element of architecture the
architect must address in order to deliver the
promised system. Strategic approaches are high-level,
broad-brush techniques
used by architects to master
complexity across technical
and nontechnical audiences
alike (see Figure 2).
Included are effective com-
munication and informa-
tion gathering, detailed
planning, and the educa-
tion of all stakeholders
regarding all relevant tech-
nologies. Tactical
approaches address the
techniques the architect
employs at a lower level of
detail, typically with those
who construct or use the
system. This group includes software designers, pro-
ject teams, and end users. Requirements planning,
separation of the system into logical layers, and care-
ful interface definition are
only a few of the tactical
tools at the architect’s dis-
posal.
Logical layering and
careful interface definition
improve the overall design
effort in several ways. First,
there is a clear separation of
design concerns that must
be enforced. Additionally,
smaller design subteams
tend to form organically
within boundaries provided
by the logical layers, greatly
reducing the complexity
each design team must
address. A GUI designer
does not have to address the
insertion of data into a database, only how it is repre-
sented to the user.
Effective object-oriented code is modular; that is, it
is packaged efficiently, and each component is well-
defined and constructed. The architect must use sim-
ilar techniques at the system level. The definition and
packaging of components, subsystems, and a system’s
logical layers are critical to the system’s performance.
The system-level solution environment is not readily
mastered, and without strong supervision from the
software architect, projects and attempted solutions
tend to fall apart due to the weight of unmitigated
complexity.
MANAGE FUNCTIONAL REQUIREMENTS
At the start of a project,
the software architect
monitors the require-
ments-elicitation effort
to derive the high-level
design solution. While
architects are not neces-
sarily planning or
domain experts, they
must be able to act on
and process this informa-
tion effectively (see Fig-
ure 3). The architect
establishes several impor-
tant baselines during initial requirements gathering.
First, and possibly most important, is an initial
understanding of the problem domain. High-level
requirements and unstated expectations for the
design must also be identified and validated.
During the initial requirements process, the archi-
tect must be able to per-
form some out-of-the-box
thinking. This is impor-
tant because business and
domain experts under-
stand their business and
its problems but are inher-
ently constrained by
them. As the solution
expert, the architect must
transcend these limita-
tions and imagine what is
possible, given time and
budget constraints. New
approaches to old prob-
lems may have to be con-
sidered and requirements altered, added, or deleted to
deliver an optimal solution.
System requirements are sometimes relatively static
and unchanging. Most of the time, they represent
only a first look at the problem domain, which may
still be evolving. Customer expectations (both stated
and unstated) and technology are also constantly
changing. Perhaps the most successful way to manage
this change is to deliver the software solution in itera-
tions. Each one takes four to six weeks and results in
COMMUNICATIONS OF THE ACM May 2007/Vol. 50, No. 5
7776 May 2007/Vol. 50, No. 5 COMMUNICATIONS OF THE
ACM
delivered at the OOPSLA conference in 1996 [1, 2].
The practical application of this growing body of
knowledge will continue to play an important role in
the maturing of the software development profession
and its ability to deliver solutions.
In my own early days as a chief architect, I encoun-
tered a business owner who demanded quarterly
releases of software without regard to the system’s
scope or complexity. When I asked him why, he said,
“Because that is the only way I
will get anything from your
guys.” As we applied the princi-
ples of architecture, he eventually
became one of my software
development group’s strongest
allies. Another business owner
who actually screamed at me
regarding previously unfulfilled
promises for her software prod-
uct—the product-ordering Web
site—became one of the group’s
most vocal supporters. Navigat-
ing these situations involves more
than just coding skill. Funda-
mentally different ways of
thinking about design and inter-
acting with systems and stake-
holders represent the essence of
the software architect.
As a starting point for this dis-
cussion, the Unified Modeling
Language and other industry
standards agree: architecture is a system’s organiza-
tional structure [10, 11]. Some organizations allow
that structure to evolve unintentionally or through
neglect; others focus on designing or deriving it by
following a planned process. However, allowing sys-
tems to evolve haphazardly often results in failure.
Martin Fowler, a noted software development author,
wrote: “In its common usage, evolutionary design is a
disaster. The design ends up being the aggregation of
a bunch of ad-hoc tactical decisions, each of which
makes the code harder to alter. As design deteriorates,
so does your ability to make changes effectively; over
time the design gets worse and worse” [6]. Unfortu-
nately, many businesses fail to consider the ramifica-
tions of poorly designed systems and suffer significant
losses in terms of competitive advantage, time to mar-
ket, and total cost of ownership.
Software architects are sometimes viewed by cus-
tomers and developers alike as technical experts in a
specific set of development technologies. Given the
types of decisions they must make and influence, this
perception is not surprising. However, identifying a
single trait of software architects does not begin to
capture the depth and breadth of their work. It is
essential to proactively focus on system- and subsys-
tem-level issues to establish a solid foundation for
detailed design, particularly for large-scale efforts (see
Figure 1). Software architects are technically compe-
tent system-level thinkers, guiding planned and eco-
nomically efficient design processes to bring a system
into existence. To do this, they must lead multiple
stakeholders in a technologically challenging and
sometimes politically charged environment.
The guiding principles behind the architectural
decisions explored here represent an intellectual
framework for any architect and a basis for success;
they also represent a concrete agenda for training
future architects.
MITIGATE UNBOUNDED COMPLEXITY
Almost 2,500 years ago, the Chinese philosopher
and military general Sun Tzu, wrote, “If you know
the enemy and know yourself, you need not fear the
result of a hundred battles. If you know yourself and
not the enemy, for every victory gained you will also
suffer a defeat. If you know neither the enemy or
yourself, you will succumb in every battle” [4].
Unbounded complexity represents a formidable
enemy for any software architect. Architects must deal
with the inherent complexity of both the problem
and the solution domains. This complexity manifests
itself [8] in two ways:
• For every 25% increase in problem (domain)
complexity, there is a 100% increase in complex-
ity of the software solution; and
McBride fig 1 (5/07)
System level
• High-level technology analysis for solution space
• System design based on high-level requirements
• Risk identification and mitigation
Subsystem level
• Separation of system into subsystems, logical layers
• Application of enterprise level patterns
Package level
• Interface design
• Deployment planning
A
rc
h
it
e
ct
In
vo
lv
e
m
e
n
t
Lo
w
(g
ui
de
an
d
m
o
ni
to
r)
H
ig
h
(h
an
ds
o
n)
Component level
• Idioms
• Application of design patterns
P
ro
je
ct
T
im
e
li
n
e
C
o
ns
tr
uc
ti
o
n
In
ce
pt
io
n
El
ab
o
ra
ti
o
n
Figure 1. Architecture
is the foundation of
successful design.
McBride fig 2 (5/07)
Strategic
Strong project management and risk analysis
Effective (audience appropriate) communication
Technology and solution space education
Tactical
Effective requirements gathering
Layering and interface definition
Iterative development and build out
Project Manager
CEO
Developer
User
Business Manager
CFO
Technical Manager
Analyst
Figure 2. Multiple approaches
are needed to mitigate
complexity.
McBride fig 3 (5/07)
Software Architect
Solution
Expert
Project Manager
Planning Expert
Business Manager
Domain Expert
Figure 3. Sample team
relationships required to build
an effective solution.
• Explicit requirements explode by a factor of 50 or
more into implicit (design) requirements as a soft-
ware solution proceeds.
Perhaps more than any other task, managing com-
plexity is an essential element of architecture the
architect must address in order to deliver the
promised system. Strategic approaches are high-level,
broad-brush techniques
used by architects to master
complexity across technical
and nontechnical audiences
alike (see Figure 2).
Included are effective com-
munication and informa-
tion gathering, detailed
planning, and the educa-
tion of all stakeholders
regarding all relevant tech-
nologies. Tactical
approaches address the
techniques the architect
employs at a lower level of
detail, typically with those
who construct or use the
system. This group includes software designers, pro-
ject teams, and end users. Requirements planning,
separation of the system into logical layers, and care-
ful interface definition are
only a few of the tactical
tools at the architect’s dis-
posal.
Logical layering and
careful interface definition
improve the overall design
effort in several ways. First,
there is a clear separation of
design concerns that must
be enforced. Additionally,
smaller design subteams
tend to form organically
within boundaries provided
by the logical layers, greatly
reducing the complexity
each design team must
address. A GUI designer
does not have to address the
insertion of data into a database, only how it is repre-
sented to the user.
Effective object-oriented code is modular; that is, it
is packaged efficiently, and each component is well-
defined and constructed. The architect must use sim-
ilar techniques at the system level. The definition and
packaging of components, subsystems, and a system’s
logical layers are critical to the system’s performance.
The system-level solution environment is not readily
mastered, and without strong supervision from the
software architect, projects and attempted solutions
tend to fall apart due to the weight of unmitigated
complexity.
MANAGE FUNCTIONAL REQUIREMENTS
At the start of a project,
the software architect
monitors the require-
ments-elicitation effort
to derive the high-level
design solution. While
architects are not neces-
sarily planning or
domain experts, they
must be able to act on
and process this informa-
tion effectively (see Fig-
ure 3). The architect
establishes several impor-
tant baselines during initial requirements gathering.
First, and possibly most important, is an initial
understanding of the problem domain. High-level
requirements and unstated expectations for the
design must also be identified and validated.
During the initial requirements process, the archi-
tect must be able to per-
form some out-of-the-box
thinking. This is impor-
tant because business and
domain experts under-
stand their business and
its problems but are inher-
ently constrained by
them. As the solution
expert, the architect must
transcend these limita-
tions and imagine what is
possible, given time and
budget constraints. New
approaches to old prob-
lems may have to be con-
sidered and requirements altered, added, or deleted to
deliver an optimal solution.
System requirements are sometimes relatively static
and unchanging. Most of the time, they represent
only a first look at the problem domain, which may
still be evolving. Customer expectations (both stated
and unstated) and technology are also constantly
changing. Perhaps the most successful way to manage
this change is to deliver the software solution in itera-
tions. Each one takes four to six weeks and results in
COMMUNICATIONS OF THE ACM May 2007/Vol. 50, No. 5
7776 May 2007/Vol. 50, No. 5 COMMUNICATIONS OF THE
ACM
delivered at the OOPSLA conference in 1996 [1, 2].
The practical application of this growing body of
knowledge will continue to play an important role in
the maturing of the software development profession
and its ability to deliver solutions.
In my own early days as a chief architect, I encoun-
tered a business owner who demanded quarterly
releases of software without regard to the system’s
scope or complexity. When I asked him why, he said,
“Because that is the only way I
will get anything from your
guys.” As we applied the princi-
ples of architecture, he eventually
became one of my software
development group’s strongest
allies. Another business owner
who actually screamed at me
regarding previously unfulfilled
promises for her software prod-
uct—the product-ordering Web
site—became one of the group’s
most vocal supporters. Navigat-
ing these situations involves more
than just coding skill. Funda-
mentally different ways of
thinking about design and inter-
acting with systems and stake-
holders represent the essence of
the software architect.
As a starting point for this dis-
cussion, the Unified Modeling
Language and other industry
standards agree: architecture is a system’s organiza-
tional structure [10, 11]. Some organizations allow
that structure to evolve unintentionally or through
neglect; others focus on designing or deriving it by
following a planned process. However, allowing sys-
tems to evolve haphazardly often results in failure.
Martin Fowler, a noted software development author,
wrote: “In its common usage, evolutionary design is a
disaster. The design ends up being the aggregation of
a bunch of ad-hoc tactical decisions, each of which
makes the code harder to alter. As design deteriorates,
so does your ability to make changes effectively; over
time the design gets worse and worse” [6]. Unfortu-
nately, many businesses fail to consider the ramifica-
tions of poorly designed systems and suffer significant
losses in terms of competitive advantage, time to mar-
ket, and total cost of ownership.
Software architects are sometimes viewed by cus-
tomers and developers alike as technical experts in a
specific set of development technologies. Given the
types of decisions they must make and influence, this
perception is not surprising. However, identifying a
single trait of software architects does not begin to
capture the depth and breadth of their work. It is
essential to proactively focus on system- and subsys-
tem-level issues to establish a solid foundation for
detailed design, particularly for large-scale efforts (see
Figure 1). Software architects are technically compe-
tent system-level thinkers, guiding planned and eco-
nomically efficient design processes to bring a system
into existence. To do this, they must lead multiple
stakeholders in a technologically challenging and
sometimes politically charged environment.
The guiding principles behind the architectural
decisions explored here represent an intellectual
framework for any architect and a basis for success;
they also represent a concrete agenda for training
future architects.
MITIGATE UNBOUNDED COMPLEXITY
Almost 2,500 years ago, the Chinese philosopher
and military general Sun Tzu, wrote, “If you know
the enemy and know yourself, you need not fear the
result of a hundred battles. If you know yourself and
not the enemy, for every victory gained you will also
suffer a defeat. If you know neither the enemy or
yourself, you will succumb in every battle” [4].
Unbounded complexity represents a formidable
enemy for any software architect. Architects must deal
with the inherent complexity of both the problem
and the solution domains. This complexity manifests
itself [8] in two ways:
• For every 25% increase in problem (domain)
complexity, there is a 100% increase in complex-
ity of the software solution; and
McBride fig 1 (5/07)
System level
• High-level technology analysis for solution space
• System design based on high-level requirements
• Risk identification and mitigation
Subsystem level
• Separation of system into subsystems, logical layers
• Application of enterprise level patterns
Package level
• Interface design
• Deployment planning
A
rc
h
it
e
ct
In
vo
lv
e
m
e
n
t
Lo
w
(g
ui
de
an
d
m
o
ni
to
r)
H
ig
h
(h
an
ds
o
n)
Component level
• Idioms
• Application of design patterns
P
ro
je
ct
T
im
e
li
n
e
C
o
ns
tr
uc
ti
o
n
In
ce
pt
io
n
El
ab
o
ra
ti
o
n
Figure 1. Architecture
is the foundation of
successful design.
McBride fig 2 (5/07)
Strategic
Strong project management and risk analysis
Effective (audience appropriate) communication
Technology and solution space education
Tactical
Effective requirements gathering
Layering and interface definition
Iterative development and build out
Project Manager
CEO
Developer
User
Business Manager
CFO
Technical Manager
Analyst
Figure 2. Multiple approaches
are needed to mitigate
complexity.
McBride fig 3 (5/07)
Software Architect

More Related Content

Similar to 76 May 2007Vol. 50, No. 5 COMMUNICATIONS OF THE ACM COMMUNIC.docx

Enterprise architecture
Enterprise architecture Enterprise architecture
Enterprise architecture Hamzazafeer
 
Software architecture-patterns
Software architecture-patternsSoftware architecture-patterns
Software architecture-patternspedro
 
Software arquitectura patron diseño
Software arquitectura patron diseñoSoftware arquitectura patron diseño
Software arquitectura patron diseñopedro
 
software-architecture-patterns
software-architecture-patternssoftware-architecture-patterns
software-architecture-patternsPallav Kumar
 
Chapter 9 The People in Information Systems Learning Ob.docx
Chapter 9 The People in Information Systems Learning Ob.docxChapter 9 The People in Information Systems Learning Ob.docx
Chapter 9 The People in Information Systems Learning Ob.docxspoonerneddy
 
Chapter 9 The People in Information Systems Learning Ob.docx
Chapter 9 The People in Information Systems Learning Ob.docxChapter 9 The People in Information Systems Learning Ob.docx
Chapter 9 The People in Information Systems Learning Ob.docxtiffanyd4
 
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfputtipavan23022023
 
Discussion 1 post responses.Please respond to the following.docx
Discussion 1 post responses.Please respond to the following.docxDiscussion 1 post responses.Please respond to the following.docx
Discussion 1 post responses.Please respond to the following.docxcuddietheresa
 
THE UNIFIED APPROACH FOR ORGANIZATIONAL NETWORK VULNERABILITY ASSESSMENT
THE UNIFIED APPROACH FOR ORGANIZATIONAL NETWORK VULNERABILITY ASSESSMENTTHE UNIFIED APPROACH FOR ORGANIZATIONAL NETWORK VULNERABILITY ASSESSMENT
THE UNIFIED APPROACH FOR ORGANIZATIONAL NETWORK VULNERABILITY ASSESSMENTijseajournal
 
Restructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality ApproachRestructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality ApproachAdnan Masood
 
Lecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfLecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfAkilaGamage2
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part iBisrat Girma
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile waveNiels Bech Nielsen
 

Similar to 76 May 2007Vol. 50, No. 5 COMMUNICATIONS OF THE ACM COMMUNIC.docx (20)

SA_UNIT_1.pptx
SA_UNIT_1.pptxSA_UNIT_1.pptx
SA_UNIT_1.pptx
 
Enterprise architecture
Enterprise architecture Enterprise architecture
Enterprise architecture
 
Software architecture-patterns
Software architecture-patternsSoftware architecture-patterns
Software architecture-patterns
 
Software arquitectura patron diseño
Software arquitectura patron diseñoSoftware arquitectura patron diseño
Software arquitectura patron diseño
 
software-architecture-patterns
software-architecture-patternssoftware-architecture-patterns
software-architecture-patterns
 
Chapter 9 The People in Information Systems Learning Ob.docx
Chapter 9 The People in Information Systems Learning Ob.docxChapter 9 The People in Information Systems Learning Ob.docx
Chapter 9 The People in Information Systems Learning Ob.docx
 
Chapter 9 The People in Information Systems Learning Ob.docx
Chapter 9 The People in Information Systems Learning Ob.docxChapter 9 The People in Information Systems Learning Ob.docx
Chapter 9 The People in Information Systems Learning Ob.docx
 
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
 
Unit i software design principles 9
Unit i software design principles 9Unit i software design principles 9
Unit i software design principles 9
 
Sda 1
Sda   1Sda   1
Sda 1
 
Unit2 2
Unit2 2Unit2 2
Unit2 2
 
Discussion 1 post responses.Please respond to the following.docx
Discussion 1 post responses.Please respond to the following.docxDiscussion 1 post responses.Please respond to the following.docx
Discussion 1 post responses.Please respond to the following.docx
 
THE UNIFIED APPROACH FOR ORGANIZATIONAL NETWORK VULNERABILITY ASSESSMENT
THE UNIFIED APPROACH FOR ORGANIZATIONAL NETWORK VULNERABILITY ASSESSMENTTHE UNIFIED APPROACH FOR ORGANIZATIONAL NETWORK VULNERABILITY ASSESSMENT
THE UNIFIED APPROACH FOR ORGANIZATIONAL NETWORK VULNERABILITY ASSESSMENT
 
020170482 x
020170482 x020170482 x
020170482 x
 
Chapter1
Chapter1Chapter1
Chapter1
 
Articulo acm
Articulo acmArticulo acm
Articulo acm
 
Restructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality ApproachRestructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality Approach
 
Lecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfLecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdf
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part i
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile wave
 

More from evonnehoggarth79783

For this Portfolio Project, you will write a paper about John A.docx
For this Portfolio Project, you will write a paper about John A.docxFor this Portfolio Project, you will write a paper about John A.docx
For this Portfolio Project, you will write a paper about John A.docxevonnehoggarth79783
 
For this portfolio assignment, you are required to research and anal.docx
For this portfolio assignment, you are required to research and anal.docxFor this portfolio assignment, you are required to research and anal.docx
For this portfolio assignment, you are required to research and anal.docxevonnehoggarth79783
 
For this paper, discuss the similarities and differences of the .docx
For this paper, discuss the similarities and differences of the .docxFor this paper, discuss the similarities and differences of the .docx
For this paper, discuss the similarities and differences of the .docxevonnehoggarth79783
 
For this paper, discuss the similarities and differences of the impa.docx
For this paper, discuss the similarities and differences of the impa.docxFor this paper, discuss the similarities and differences of the impa.docx
For this paper, discuss the similarities and differences of the impa.docxevonnehoggarth79783
 
For this paper choose two mythological narratives that we have exami.docx
For this paper choose two mythological narratives that we have exami.docxFor this paper choose two mythological narratives that we have exami.docx
For this paper choose two mythological narratives that we have exami.docxevonnehoggarth79783
 
For this module, there is only one option.  You are to begin to deve.docx
For this module, there is only one option.  You are to begin to deve.docxFor this module, there is only one option.  You are to begin to deve.docx
For this module, there is only one option.  You are to begin to deve.docxevonnehoggarth79783
 
For this Major Assignment 2, you will finalize your analysis in .docx
For this Major Assignment 2, you will finalize your analysis in .docxFor this Major Assignment 2, you will finalize your analysis in .docx
For this Major Assignment 2, you will finalize your analysis in .docxevonnehoggarth79783
 
For this Final Visual Analysis Project, you will choose one website .docx
For this Final Visual Analysis Project, you will choose one website .docxFor this Final Visual Analysis Project, you will choose one website .docx
For this Final Visual Analysis Project, you will choose one website .docxevonnehoggarth79783
 
For this essay, you will select one of the sources you have found th.docx
For this essay, you will select one of the sources you have found th.docxFor this essay, you will select one of the sources you have found th.docx
For this essay, you will select one of the sources you have found th.docxevonnehoggarth79783
 
For this discussion, you will address the following prompts. Keep in.docx
For this discussion, you will address the following prompts. Keep in.docxFor this discussion, you will address the following prompts. Keep in.docx
For this discussion, you will address the following prompts. Keep in.docxevonnehoggarth79783
 
For this discussion, research a recent science news event that h.docx
For this discussion, research a recent science news event that h.docxFor this discussion, research a recent science news event that h.docx
For this discussion, research a recent science news event that h.docxevonnehoggarth79783
 
For this Discussion, review the case Learning Resources and the .docx
For this Discussion, review the case Learning Resources and the .docxFor this Discussion, review the case Learning Resources and the .docx
For this Discussion, review the case Learning Resources and the .docxevonnehoggarth79783
 
For this Discussion, give an example of how an event in one part.docx
For this Discussion, give an example of how an event in one part.docxFor this Discussion, give an example of how an event in one part.docx
For this Discussion, give an example of how an event in one part.docxevonnehoggarth79783
 
For this discussion, consider the role of the LPN and the RN in .docx
For this discussion, consider the role of the LPN and the RN in .docxFor this discussion, consider the role of the LPN and the RN in .docx
For this discussion, consider the role of the LPN and the RN in .docxevonnehoggarth79783
 
For this discussion, after you have viewed the videos on this topi.docx
For this discussion, after you have viewed the videos on this topi.docxFor this discussion, after you have viewed the videos on this topi.docx
For this discussion, after you have viewed the videos on this topi.docxevonnehoggarth79783
 
For this discussion choose  one of the case studies listed bel.docx
For this discussion choose  one of the case studies listed bel.docxFor this discussion choose  one of the case studies listed bel.docx
For this discussion choose  one of the case studies listed bel.docxevonnehoggarth79783
 
For this assignment, you will use what youve learned about symbolic.docx
For this assignment, you will use what youve learned about symbolic.docxFor this assignment, you will use what youve learned about symbolic.docx
For this assignment, you will use what youve learned about symbolic.docxevonnehoggarth79783
 
For this Assignment, you will research various perspectives of a mul.docx
For this Assignment, you will research various perspectives of a mul.docxFor this Assignment, you will research various perspectives of a mul.docx
For this Assignment, you will research various perspectives of a mul.docxevonnehoggarth79783
 
For this assignment, you will be studying a story from the Gospe.docx
For this assignment, you will be studying a story from the Gospe.docxFor this assignment, you will be studying a story from the Gospe.docx
For this assignment, you will be studying a story from the Gospe.docxevonnehoggarth79783
 
For this assignment, you will discuss how you see the Design Princip.docx
For this assignment, you will discuss how you see the Design Princip.docxFor this assignment, you will discuss how you see the Design Princip.docx
For this assignment, you will discuss how you see the Design Princip.docxevonnehoggarth79783
 

More from evonnehoggarth79783 (20)

For this Portfolio Project, you will write a paper about John A.docx
For this Portfolio Project, you will write a paper about John A.docxFor this Portfolio Project, you will write a paper about John A.docx
For this Portfolio Project, you will write a paper about John A.docx
 
For this portfolio assignment, you are required to research and anal.docx
For this portfolio assignment, you are required to research and anal.docxFor this portfolio assignment, you are required to research and anal.docx
For this portfolio assignment, you are required to research and anal.docx
 
For this paper, discuss the similarities and differences of the .docx
For this paper, discuss the similarities and differences of the .docxFor this paper, discuss the similarities and differences of the .docx
For this paper, discuss the similarities and differences of the .docx
 
For this paper, discuss the similarities and differences of the impa.docx
For this paper, discuss the similarities and differences of the impa.docxFor this paper, discuss the similarities and differences of the impa.docx
For this paper, discuss the similarities and differences of the impa.docx
 
For this paper choose two mythological narratives that we have exami.docx
For this paper choose two mythological narratives that we have exami.docxFor this paper choose two mythological narratives that we have exami.docx
For this paper choose two mythological narratives that we have exami.docx
 
For this module, there is only one option.  You are to begin to deve.docx
For this module, there is only one option.  You are to begin to deve.docxFor this module, there is only one option.  You are to begin to deve.docx
For this module, there is only one option.  You are to begin to deve.docx
 
For this Major Assignment 2, you will finalize your analysis in .docx
For this Major Assignment 2, you will finalize your analysis in .docxFor this Major Assignment 2, you will finalize your analysis in .docx
For this Major Assignment 2, you will finalize your analysis in .docx
 
For this Final Visual Analysis Project, you will choose one website .docx
For this Final Visual Analysis Project, you will choose one website .docxFor this Final Visual Analysis Project, you will choose one website .docx
For this Final Visual Analysis Project, you will choose one website .docx
 
For this essay, you will select one of the sources you have found th.docx
For this essay, you will select one of the sources you have found th.docxFor this essay, you will select one of the sources you have found th.docx
For this essay, you will select one of the sources you have found th.docx
 
For this discussion, you will address the following prompts. Keep in.docx
For this discussion, you will address the following prompts. Keep in.docxFor this discussion, you will address the following prompts. Keep in.docx
For this discussion, you will address the following prompts. Keep in.docx
 
For this discussion, research a recent science news event that h.docx
For this discussion, research a recent science news event that h.docxFor this discussion, research a recent science news event that h.docx
For this discussion, research a recent science news event that h.docx
 
For this Discussion, review the case Learning Resources and the .docx
For this Discussion, review the case Learning Resources and the .docxFor this Discussion, review the case Learning Resources and the .docx
For this Discussion, review the case Learning Resources and the .docx
 
For this Discussion, give an example of how an event in one part.docx
For this Discussion, give an example of how an event in one part.docxFor this Discussion, give an example of how an event in one part.docx
For this Discussion, give an example of how an event in one part.docx
 
For this discussion, consider the role of the LPN and the RN in .docx
For this discussion, consider the role of the LPN and the RN in .docxFor this discussion, consider the role of the LPN and the RN in .docx
For this discussion, consider the role of the LPN and the RN in .docx
 
For this discussion, after you have viewed the videos on this topi.docx
For this discussion, after you have viewed the videos on this topi.docxFor this discussion, after you have viewed the videos on this topi.docx
For this discussion, after you have viewed the videos on this topi.docx
 
For this discussion choose  one of the case studies listed bel.docx
For this discussion choose  one of the case studies listed bel.docxFor this discussion choose  one of the case studies listed bel.docx
For this discussion choose  one of the case studies listed bel.docx
 
For this assignment, you will use what youve learned about symbolic.docx
For this assignment, you will use what youve learned about symbolic.docxFor this assignment, you will use what youve learned about symbolic.docx
For this assignment, you will use what youve learned about symbolic.docx
 
For this Assignment, you will research various perspectives of a mul.docx
For this Assignment, you will research various perspectives of a mul.docxFor this Assignment, you will research various perspectives of a mul.docx
For this Assignment, you will research various perspectives of a mul.docx
 
For this assignment, you will be studying a story from the Gospe.docx
For this assignment, you will be studying a story from the Gospe.docxFor this assignment, you will be studying a story from the Gospe.docx
For this assignment, you will be studying a story from the Gospe.docx
 
For this assignment, you will discuss how you see the Design Princip.docx
For this assignment, you will discuss how you see the Design Princip.docxFor this assignment, you will discuss how you see the Design Princip.docx
For this assignment, you will discuss how you see the Design Princip.docx
 

Recently uploaded

JAPAN: ORGANISATION OF PMDA, PHARMACEUTICAL LAWS & REGULATIONS, TYPES OF REGI...
JAPAN: ORGANISATION OF PMDA, PHARMACEUTICAL LAWS & REGULATIONS, TYPES OF REGI...JAPAN: ORGANISATION OF PMDA, PHARMACEUTICAL LAWS & REGULATIONS, TYPES OF REGI...
JAPAN: ORGANISATION OF PMDA, PHARMACEUTICAL LAWS & REGULATIONS, TYPES OF REGI...anjaliyadav012327
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...fonyou31
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDThiyagu K
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Disha Kariya
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfJayanti Pande
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajanpragatimahajan3
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesFatimaKhan178732
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 

Recently uploaded (20)

JAPAN: ORGANISATION OF PMDA, PHARMACEUTICAL LAWS & REGULATIONS, TYPES OF REGI...
JAPAN: ORGANISATION OF PMDA, PHARMACEUTICAL LAWS & REGULATIONS, TYPES OF REGI...JAPAN: ORGANISATION OF PMDA, PHARMACEUTICAL LAWS & REGULATIONS, TYPES OF REGI...
JAPAN: ORGANISATION OF PMDA, PHARMACEUTICAL LAWS & REGULATIONS, TYPES OF REGI...
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajan
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and Actinides
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 

76 May 2007Vol. 50, No. 5 COMMUNICATIONS OF THE ACM COMMUNIC.docx

  • 1. 76 May 2007/Vol. 50, No. 5 COMMUNICATIONS OF THE ACM COMMUNICATIONS OF THE ACM May 2007/Vol. 50, No. 5 75 Adding the word architect to a software practitioner’s title seems sim- ple enough, but beneath the surface fundamentally different thinking, toolsets, and disciplines are required to succeed. In teaching software architecture and working as a software architect, database architect, and chief architect, I have often found that an unfortunate lack of knowledge surrounds the architect’s role. Even experienced software practitioners are often unable to define what exactly the architect does or adds to the soft- ware development process. THE SOFTWARE ARCHITECT B y M a t t h e w R . Mc B r i d e Leadership is the defining characteristic in an unforgiving technology arena. The context for my discussion here is the construction of enterprise-level business appli- cations. I chose it for its inherent difficulty and complexity, though the related architectural
  • 2. principles may be applied to any type of soft- ware construction. Specifically, I examine the results of applying these principles to three sep- arate development efforts: a product-ordering Web site, a complex business-to-business inte- gration project, and the design and develop- ment of an enterprise application. Regardless of the situation, my experience has been that software architects are not born but trained, sometimes in the school of hard knocks. Although effective software architects seem to intuitively understand and guide projects, an intellectual framework and its associated disci- plines and tools are behind this thinking. Reports of IT overspending and project failure emphasize the fact that these skills must be developed. Software professionals in a variety of roles can leverage them to lead software pro- jects to exceed customer expectations. Many seminal ideas in software architecture can be traced back to a speech Christopher Alexander, a distinguished building architect, • Explicit requirements explode by a factor of 50 or more into implicit (design) requirements as a soft- ware solution proceeds. Perhaps more than any other task, managing com- plexity is an essential element of architecture the architect must address in order to deliver the promised system. Strategic approaches are high-level, broad-brush techniques
  • 3. used by architects to master complexity across technical and nontechnical audiences alike (see Figure 2). Included are effective com- munication and informa- tion gathering, detailed planning, and the educa- tion of all stakeholders regarding all relevant tech- nologies. Tactical approaches address the techniques the architect employs at a lower level of detail, typically with those who construct or use the system. This group includes software designers, pro- ject teams, and end users. Requirements planning, separation of the system into logical layers, and care- ful interface definition are only a few of the tactical tools at the architect’s dis- posal. Logical layering and careful interface definition improve the overall design effort in several ways. First, there is a clear separation of design concerns that must be enforced. Additionally, smaller design subteams tend to form organically within boundaries provided by the logical layers, greatly reducing the complexity
  • 4. each design team must address. A GUI designer does not have to address the insertion of data into a database, only how it is repre- sented to the user. Effective object-oriented code is modular; that is, it is packaged efficiently, and each component is well- defined and constructed. The architect must use sim- ilar techniques at the system level. The definition and packaging of components, subsystems, and a system’s logical layers are critical to the system’s performance. The system-level solution environment is not readily mastered, and without strong supervision from the software architect, projects and attempted solutions tend to fall apart due to the weight of unmitigated complexity. MANAGE FUNCTIONAL REQUIREMENTS At the start of a project, the software architect monitors the require- ments-elicitation effort to derive the high-level design solution. While architects are not neces- sarily planning or domain experts, they must be able to act on and process this informa- tion effectively (see Fig- ure 3). The architect establishes several impor- tant baselines during initial requirements gathering.
  • 5. First, and possibly most important, is an initial understanding of the problem domain. High-level requirements and unstated expectations for the design must also be identified and validated. During the initial requirements process, the archi- tect must be able to per- form some out-of-the-box thinking. This is impor- tant because business and domain experts under- stand their business and its problems but are inher- ently constrained by them. As the solution expert, the architect must transcend these limita- tions and imagine what is possible, given time and budget constraints. New approaches to old prob- lems may have to be con- sidered and requirements altered, added, or deleted to deliver an optimal solution. System requirements are sometimes relatively static and unchanging. Most of the time, they represent only a first look at the problem domain, which may still be evolving. Customer expectations (both stated and unstated) and technology are also constantly changing. Perhaps the most successful way to manage this change is to deliver the software solution in itera- tions. Each one takes four to six weeks and results in COMMUNICATIONS OF THE ACM May 2007/Vol. 50, No. 5
  • 6. 7776 May 2007/Vol. 50, No. 5 COMMUNICATIONS OF THE ACM delivered at the OOPSLA conference in 1996 [1, 2]. The practical application of this growing body of knowledge will continue to play an important role in the maturing of the software development profession and its ability to deliver solutions. In my own early days as a chief architect, I encoun- tered a business owner who demanded quarterly releases of software without regard to the system’s scope or complexity. When I asked him why, he said, “Because that is the only way I will get anything from your guys.” As we applied the princi- ples of architecture, he eventually became one of my software development group’s strongest allies. Another business owner who actually screamed at me regarding previously unfulfilled promises for her software prod- uct—the product-ordering Web site—became one of the group’s most vocal supporters. Navigat- ing these situations involves more than just coding skill. Funda- mentally different ways of thinking about design and inter- acting with systems and stake- holders represent the essence of the software architect. As a starting point for this dis- cussion, the Unified Modeling
  • 7. Language and other industry standards agree: architecture is a system’s organiza- tional structure [10, 11]. Some organizations allow that structure to evolve unintentionally or through neglect; others focus on designing or deriving it by following a planned process. However, allowing sys- tems to evolve haphazardly often results in failure. Martin Fowler, a noted software development author, wrote: “In its common usage, evolutionary design is a disaster. The design ends up being the aggregation of a bunch of ad-hoc tactical decisions, each of which makes the code harder to alter. As design deteriorates, so does your ability to make changes effectively; over time the design gets worse and worse” [6]. Unfortu- nately, many businesses fail to consider the ramifica- tions of poorly designed systems and suffer significant losses in terms of competitive advantage, time to mar- ket, and total cost of ownership. Software architects are sometimes viewed by cus- tomers and developers alike as technical experts in a specific set of development technologies. Given the types of decisions they must make and influence, this perception is not surprising. However, identifying a single trait of software architects does not begin to capture the depth and breadth of their work. It is essential to proactively focus on system- and subsys- tem-level issues to establish a solid foundation for detailed design, particularly for large-scale efforts (see Figure 1). Software architects are technically compe- tent system-level thinkers, guiding planned and eco- nomically efficient design processes to bring a system into existence. To do this, they must lead multiple stakeholders in a technologically challenging and
  • 8. sometimes politically charged environment. The guiding principles behind the architectural decisions explored here represent an intellectual framework for any architect and a basis for success; they also represent a concrete agenda for training future architects. MITIGATE UNBOUNDED COMPLEXITY Almost 2,500 years ago, the Chinese philosopher and military general Sun Tzu, wrote, “If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself and not the enemy, for every victory gained you will also suffer a defeat. If you know neither the enemy or yourself, you will succumb in every battle” [4]. Unbounded complexity represents a formidable enemy for any software architect. Architects must deal with the inherent complexity of both the problem and the solution domains. This complexity manifests itself [8] in two ways: • For every 25% increase in problem (domain) complexity, there is a 100% increase in complex- ity of the software solution; and McBride fig 1 (5/07) System level • High-level technology analysis for solution space • System design based on high-level requirements • Risk identification and mitigation Subsystem level • Separation of system into subsystems, logical layers • Application of enterprise level patterns
  • 9. Package level • Interface design • Deployment planning A rc h it e ct In vo lv e m e n t Lo w (g ui de an d
  • 10. m o ni to r) H ig h (h an ds o n) Component level • Idioms • Application of design patterns P ro je ct T im e li n
  • 12. McBride fig 2 (5/07) Strategic Strong project management and risk analysis Effective (audience appropriate) communication Technology and solution space education Tactical Effective requirements gathering Layering and interface definition Iterative development and build out Project Manager CEO Developer User Business Manager CFO Technical Manager Analyst Figure 2. Multiple approaches are needed to mitigate complexity. McBride fig 3 (5/07)
  • 13. Software Architect Solution Expert Project Manager Planning Expert Business Manager Domain Expert Figure 3. Sample team relationships required to build an effective solution. • Explicit requirements explode by a factor of 50 or more into implicit (design) requirements as a soft- ware solution proceeds.
  • 14. Perhaps more than any other task, managing com- plexity is an essential element of architecture the architect must address in order to deliver the promised system. Strategic approaches are high-level, broad-brush techniques used by architects to master complexity across technical and nontechnical audiences alike (see Figure 2). Included are effective com- munication and informa- tion gathering, detailed planning, and the educa- tion of all stakeholders regarding all relevant tech- nologies. Tactical approaches address the techniques the architect employs at a lower level of detail, typically with those who construct or use the system. This group includes software designers, pro- ject teams, and end users. Requirements planning, separation of the system into logical layers, and care- ful interface definition are
  • 15. only a few of the tactical tools at the architect’s dis- posal. Logical layering and careful interface definition improve the overall design effort in several ways. First, there is a clear separation of design concerns that must be enforced. Additionally, smaller design subteams tend to form organically within boundaries provided by the logical layers, greatly reducing the complexity each design team must address. A GUI designer does not have to address the insertion of data into a database, only how it is repre- sented to the user. Effective object-oriented code is modular; that is, it is packaged efficiently, and each component is well- defined and constructed. The architect must use sim-
  • 16. ilar techniques at the system level. The definition and packaging of components, subsystems, and a system’s logical layers are critical to the system’s performance. The system-level solution environment is not readily mastered, and without strong supervision from the software architect, projects and attempted solutions tend to fall apart due to the weight of unmitigated complexity. MANAGE FUNCTIONAL REQUIREMENTS At the start of a project, the software architect monitors the require- ments-elicitation effort to derive the high-level design solution. While architects are not neces- sarily planning or domain experts, they must be able to act on and process this informa- tion effectively (see Fig- ure 3). The architect establishes several impor-
  • 17. tant baselines during initial requirements gathering. First, and possibly most important, is an initial understanding of the problem domain. High-level requirements and unstated expectations for the design must also be identified and validated. During the initial requirements process, the archi- tect must be able to per- form some out-of-the-box thinking. This is impor- tant because business and domain experts under- stand their business and its problems but are inher- ently constrained by them. As the solution expert, the architect must transcend these limita- tions and imagine what is possible, given time and budget constraints. New approaches to old prob- lems may have to be con-
  • 18. sidered and requirements altered, added, or deleted to deliver an optimal solution. System requirements are sometimes relatively static and unchanging. Most of the time, they represent only a first look at the problem domain, which may still be evolving. Customer expectations (both stated and unstated) and technology are also constantly changing. Perhaps the most successful way to manage this change is to deliver the software solution in itera- tions. Each one takes four to six weeks and results in COMMUNICATIONS OF THE ACM May 2007/Vol. 50, No. 5 7776 May 2007/Vol. 50, No. 5 COMMUNICATIONS OF THE ACM delivered at the OOPSLA conference in 1996 [1, 2]. The practical application of this growing body of knowledge will continue to play an important role in the maturing of the software development profession and its ability to deliver solutions. In my own early days as a chief architect, I encoun- tered a business owner who demanded quarterly releases of software without regard to the system’s
  • 19. scope or complexity. When I asked him why, he said, “Because that is the only way I will get anything from your guys.” As we applied the princi- ples of architecture, he eventually became one of my software development group’s strongest allies. Another business owner who actually screamed at me regarding previously unfulfilled promises for her software prod- uct—the product-ordering Web site—became one of the group’s most vocal supporters. Navigat- ing these situations involves more than just coding skill. Funda- mentally different ways of thinking about design and inter- acting with systems and stake- holders represent the essence of the software architect. As a starting point for this dis- cussion, the Unified Modeling Language and other industry
  • 20. standards agree: architecture is a system’s organiza- tional structure [10, 11]. Some organizations allow that structure to evolve unintentionally or through neglect; others focus on designing or deriving it by following a planned process. However, allowing sys- tems to evolve haphazardly often results in failure. Martin Fowler, a noted software development author, wrote: “In its common usage, evolutionary design is a disaster. The design ends up being the aggregation of a bunch of ad-hoc tactical decisions, each of which makes the code harder to alter. As design deteriorates, so does your ability to make changes effectively; over time the design gets worse and worse” [6]. Unfortu- nately, many businesses fail to consider the ramifica- tions of poorly designed systems and suffer significant losses in terms of competitive advantage, time to mar- ket, and total cost of ownership. Software architects are sometimes viewed by cus- tomers and developers alike as technical experts in a specific set of development technologies. Given the types of decisions they must make and influence, this perception is not surprising. However, identifying a single trait of software architects does not begin to
  • 21. capture the depth and breadth of their work. It is essential to proactively focus on system- and subsys- tem-level issues to establish a solid foundation for detailed design, particularly for large-scale efforts (see Figure 1). Software architects are technically compe- tent system-level thinkers, guiding planned and eco- nomically efficient design processes to bring a system into existence. To do this, they must lead multiple stakeholders in a technologically challenging and sometimes politically charged environment. The guiding principles behind the architectural decisions explored here represent an intellectual framework for any architect and a basis for success; they also represent a concrete agenda for training future architects. MITIGATE UNBOUNDED COMPLEXITY Almost 2,500 years ago, the Chinese philosopher and military general Sun Tzu, wrote, “If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself and not the enemy, for every victory gained you will also suffer a defeat. If you know neither the enemy or
  • 22. yourself, you will succumb in every battle” [4]. Unbounded complexity represents a formidable enemy for any software architect. Architects must deal with the inherent complexity of both the problem and the solution domains. This complexity manifests itself [8] in two ways: • For every 25% increase in problem (domain) complexity, there is a 100% increase in complex- ity of the software solution; and McBride fig 1 (5/07) System level • High-level technology analysis for solution space • System design based on high-level requirements • Risk identification and mitigation Subsystem level • Separation of system into subsystems, logical layers • Application of enterprise level patterns Package level • Interface design • Deployment planning
  • 25. n) Component level • Idioms • Application of design patterns P ro je ct T im e li n e C o ns
  • 27. is the foundation of successful design. McBride fig 2 (5/07) Strategic Strong project management and risk analysis Effective (audience appropriate) communication Technology and solution space education Tactical Effective requirements gathering Layering and interface definition Iterative development and build out Project Manager CEO Developer User
  • 28. Business Manager CFO Technical Manager Analyst Figure 2. Multiple approaches are needed to mitigate complexity. McBride fig 3 (5/07) Software Architect