Software Architecture Vision

advertisement
Ian Barnett
Dr. Richard N. Taylor,
Professor of Information and Computer
Sciences
at the University of California, Irvine
Dr. Nenad Medvidovic,
Director of the USC CSSE
Dr. Eric M. Dashofy,
Senior member of Computer Systems Research,
The Aerospace Corporation
- Software architecture can be thought of as:
- a map through the jungle
- blueprints for a building
- Essential to establish the vision, and how to accomplish it
- Provides greater understanding of the software system to be
designed
- Helps overcome complexity
- “Good architecture makes construction easy, ” (McConnell
44)
- Coordinates work of developers
- Ensures software vision from top to bottom
- Provides evidence to all stakeholders that the software
system is feasible.
- To achieve this overall understanding of the system as
a whole and to obtain this shared vision, all
stakeholders need to own the architecture.
- “Quality of architecture determines conceptual
integrity of the system. A well thought-out
architecture provides the structure needed to
maintain a system’s conceptual integrity from the top
levels down to the bottom,” (Code Complete, 44).
Collaboration with all the
stakeholders is essential for
architectural success
- “. . . the principle of deciding the form of the whole before the
details have been explored outside the mind of the chief designer
does not work in novel situations for which the necessary
experience cannot be contained within the mind of one person,”
(Taylor, Medvidović, and Dashofy 86).
- Too much complexity for one individual.
- This leads to lack of sufficient understanding of the problem and
solution.
- “The designer of today’s state-of-the-art artifact needs help from
masters of various crafts,” (Brooks).
- Complexity leads to probable misinterpretation, but which can be
circumvented by collaborative design (Blair, Watt, and Cull 28).
- “Don’t close the trade-space too fast,” Neil Siegel
- This allows for more fact-based decisions
- A team working toward creating the architecture will be able to
explore a larger trade-space
- More cases explored can lead to
greater understanding of the
problem and greater evidence
that the best solution was chosen
- “By describing the …
alternatives, the architecture
provides the rationale for system
organization and shows that each
class has been carefully
considered,” (McConnell 45)
- Architecture itself contributes to feasibility evidence
that the system can be built which can increase
stakeholder commitment
- If the system is built according to the architecture, it
will meet all requirements and operational concepts.
- Architecture, if understood by customers, convinces
them that their requested system has a
way forward
- Collaborative design helps all to feel
like winners, so they will fight to make
it a success
- All understand the software
solution better
- Tangible
- Neil Siegel, Effective teams come from:
- Exploring the trade-space
- Listening
- Making the success of the project ‘our’ success
- Collaborate early and often, (Chiang and Mookerjee 91).
- “Exactly one person per area of architectural concern (that
is, availability, deployability, auditability, and so on)”
- Make each contributor to the architecture accountable
- Architect works as a facilitator instead of façade (i.e. helps
customers communicate to developers, encouraging direct
interaction) (Blair, Watt, and Cull 29).
- Team communication integrated into process, every phase
- Scheduled walkthroughs, peer reviews,
of code and
architecture, project meetings, win-win sessions (Chiang
and Mookerjee 90)
- “Programmers realize and refine the architects vision… If
an architectural design decision has unforeseen
consequences, a programmer likely will be the first to
notice,” (Taylor, Medvidović, and Dashofy 670).
- System engineers need to understand how the software
will fit with the rest of the system.
- Management needs to support and drive the team toward
that architectural goal. Architects help them think of the
consequences of their decisions.
- Customers present vision. Architecture convinces them
that their requirements are being met.
- “The higher the system complexity, the more intense
coordination should be,” (Chiang and Mookerjee 92).
- Frederick Brooks suggested two main reasons to use
collaborative design in software
- Complexity of system/unfamiliarity with software
technologies
- Short development time
- Collaborative design and architecture promotes learning
- Helps bring a team unfamiliar with the technologies up to
speed more quickly
- More considerations can be addressed
- Because of the improved understanding by all, the
construction of the software can be expedited and
improved.
- Improve success of CS577 projects
Blair, Stuart, Richard Watt, and Tim Cull. “Responsibility Driven Architecture.”
IEEE Software March/April (2010): 26-32.
Brooks, Frederick P. The Design of Design. Boston: Addison-Wesley, 2010.
Chiang, I. Robert, and Vijay S. Mookerjee. “Improving Software Team
Productivity.” Communications of the ACM 47 (2004): 89-93.
Covey, Stephen R. The 7 Habits of Highly Effective People. New York: Fireside,
1990.
McConnell, Steve Code Complete. 2nd ed. Redmond: Microsoft Press, 2004.
Smolander, Kari, Matti Rossi, and Sandeep Purao “Software Architectures:
Blueprint, Literature, Language or Decision?” European Journal of
Information Systems 17 (2008): 575-589
Taylor, Richard N., Nenad Medvidović, and Eric M. Dashofy. Software
Architecture: Foundations, Theory, and Practice. Hoboken: John Wiley
and Sons, 2010.
Jungle images obtained from http://writingday.wikispaces.com/group13 and
http://www.costaricafuntravel.com/Tours-Caribbean-Costa-Rica.html
Download