Pragmatic Software Architecture and the Role of the Architect
Pragmatic Software Architecture
and the
Role of the Architect
Enterprise Architect
Infrastructure Architect
Solutions Architect
Architect Types
The architect
Translates business strategy into technical strategy
Elicits functional and non-functional requirements
Designs and leads implementation
Consulting
Leadership
Technology
Business Strategy
Organizational Politics
http://www.bredemeyer.com/pdf_files/role.pdf
Challenges
More non-technical work
Ambiguity
More responsibility/less control
Everyone has a better idea
Domains of Competency
Rewards
Interesting and complex problems
Career advancement and recognition
Greater scope of influence and contribution
Process
1. Elicit functional and non-functional requirements
2. Find the most important system qualities
3. Design a system to meet the
Functional requirements
Constraints
System Qualities
Stakeholders
Users
Project sponsors
Users
Project sponsors
C-Level Management
Project Managers
Developers
Testers
Support
Other systems
Documenter
Deployer
Customers
Sales
Marketing
Contractors
System Administrators
Etc.
Good
Right
Successful
Models and Views
Models abstract reality
View like SQL view
A diagram IS NOT a model
Learn UML
Tools
Patterns
“it’s this library of patterns in your mind that will define you as an architect.”
Ray Ozzie, The Architecture Journal, 13
Communication with developers
“Best Practices”
Metaphor
Building architecture
Agile system metaphor
Ackoff
Agility
Software architect and developer for over 20 years
dBASE, Clipper, Delphi, .NET (C#)
Mostly small companies and small teams
One large project for a Fortune 500 corporation
Stint at a large Dayton corporation
Defer Decisions
“one of an architect’s most important tasks is to remove architecture by finding ways to eliminate irreversibility in software design.”
Who Needs an Architect?, Martin Fowler
Document Decisions
Record the rationale
Record alternatives considered
Reference
Tips
The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.
Software Architecture in Practice (2nd edition)
Bass, Clements, Kazman; Addison-Wesley 2003
Software architecture is the set of decisions
the software architect makes.
"What decisions does the software architect make?"
The architect decides!
"What is architecturally significant?"
The architecturally significant ones.
Definition
Use cases that capture essential system
function and have broad coverage
Use cases that challenge the architecture
Address known risks
Highlight architecture demands (performance, scalability, etc.)
Areas of likely change
Integration with external systems
Software Engineering Institute (SEI) has 28 more definitions
http://www.sei.cmu.edu/architecture/start/definitions.cfm
And you can submit your own!
We want to create a software product to assist users with shipping tasks. The application will print pick lists and carton labels. Some data regarding pending shipments will be available to the application from various ERP systems, and some data will be entered by the user. We want the system to be available in a centrally hosted model or at the client site.
Run Time
Performance, Scalability, Security, Usability, Availability, Efficiency, Reliability, Fault Tolerance
Design Time
Modifiability, Maintainability, Testability, Supportability, Marketability, Extensibility, Composability, Reusability, Localizability, Evolvability, Portability, Interoperability, Flexibility, Configurability
http://www.bredemeyer.com/pdf_files/NonFunctReq.PDF
System Qualities ("ilities")
Constraints
Platform
Legacy applications
Competitor features
Development organization
Role
But seriously, what is architecturally significant?
Business Value
Agile Architect
Role, not title
Part of team
Travel light
Often lead
Species
Architectus Reloadus
Architectus Oryzus
Who Needs an Architect, Martin Fowler
http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf
http://www.bredemeyer.com/whatis.htm
Patterns of Enterprise
Application Architecture
Martin Fowler
Enterprise Integration Patterns
Gregor Hohpe, Bobby Woolf
Software Systems Architecture
Nick Rozanski, Eoin Woods
Software Architecture in Practice
Bass, Clements, Kazman
Bredemeyer Resources for Software Architects
http://www.bredemeyer.com/
Training available
Carnegie Mellon Software Engineering Institute (SEI)
http://www.sei.cmu.edu/architecture/
InfoQ
http://www.infoq.com/architecture/
NPlus1
http://NPlus1.org
The Architecture Journal
http://msdn.microsoft.com/en-us/architecture/bb410935.aspx
ARCast
http://channel9.msdn.com/shows/ARCast_with_Ron_Jacobs
Agile Architecture – Scott Ambler
http://www.agilemodeling.com/essays/agileArchitecture.htm
Being an Agile Architect – Sam Gentile
http://codebetter.com/blogs/sam.gentile/archive/2006/09/06/Being-an-Agile-Architect.aspx
Who Needs an Architect – Martin Fowler
http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf
Design Patterns for .NET
http://www.designpatternsfor.net
IASA
International Association of Software Architects
http://www.iasahome.org
Non-Functional Requirements
Last possible responsible moment
MSDN Architecture Center
http://msdn.microsoft.com/architecture
http://WirtleyConsulting.com/Architecture
@JoeWirtley
Joe@WirtleyConsulting.comMore presentations by
Anatomy of an E-Commerce Site
Joe Wirtley on
This presentation examines the technical components supporting the Chefs Catalog web site and the choices and challenges created when integrating third party systems into an ...
Popular presentations
Faith: the Final Frontier
Celebration Christian Church on
http://www.celebrationchristianchurch.com/, celebration christian church is a local part of the body of Christ (The Church) in Northwest Portland Oregon. We are full of the Holy ...
30 Things About Me
Brooke Ahrens on
All About Brooke Ahrens- I used this presentation as an icebreaker to introduce myself to my classes this year.
More popular prezis in Explore>