Loading presentation...

Present Remotely

Send the link below via email or IM


Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.


Pragmatic Software Architecture and the Role of the Architect

What is software architecture? What is the role of the architect? Is architecture relevant to agile development? What does this have to do with developers? This presentation will answer these questions and more.

Joe Wirtley

on 13 May 2010

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of 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
System Qualities Stakeholders Users
Project sponsors Users
Project sponsors
C-Level Management
Project Managers
Other systems
Documenter Deployer
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
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

Full transcript