Let me begin at the end This is the first and only great secret of architects worldwide
Everything is a tradeoff This course shall teach you Why “it depends” (and when it doesn’t matter much that – e.g. when you can you an off- the-shelf architecture like “3-tier” etc.) how to know what are the tradeoffs What to look for How to evaluate the impact of tradeoffs
Nobody is born an architect You usually start as a great developer Maybe then a lead developer I, for one, even moved on to project and development management And then one day you are nominated as an “Architect”
You need to understand implications of decisions and their long terms effects
I am experienced developer and designer – so now what? Isn’t that engough
Architect needs breadth of knwoledge (depth is always nice but you can’t have it all..) Design skill Patterns Anti-patterns Understand technologies Views Quality attributes analysis Business considerations Tools Software life-cycle Softskills communications leadership organizational politics etc. Etc.
Columbos Alan Dershowitz At the age of 28 he became the youngest full professor in Harvard law school history Successfully defended high profile clients O.J. Simpson Claus von Bülow Frank Lloyd Wright Frank Lloyd Wright ( June 8 , 1867 – April 9 , 1959 ) was one of the most prominent and influential architects of the first half of 20th century . He not only developed a series of highly individual styles over his extraordinarily long architectural career (spanning the years 1887-1959), he influenced the whole course of American architecture and building. To this day he remains probably America's most famous architect. (wikipedia)
2003 PSS Global Summit Software architecture is the collection of the fundamental decisions about a software product/solution designed to meet the project's quality attributes (i.e. requirements). The architecture includes the main components, their main attributes, and their collaboration (i.e. interactions and behavior) to meet the quality attributes. Architecture can and usually should be expressed in several levels of abstraction (depending on the project's size). If an architecture is to be intentional (rather than accidental), it should be communicated. Architecture is communicated from multiple viewpoints to cater the needs of the different stakeholders. Architectural decisions are global tied to quality attributes Designs decisions are local –tied to functionality Every system has an architecture, even if it is not formally “spec’ed out”.
To deal with the size and complexity : Scale Process Cost Schedule Skills and development teams Materials and technologies Stakeholders Risks Somebody has got to balance the (conflicting ) requirements
Here’s a definition Don’t bother to remember it Because… What’s important is that It is there
<ul><li>Credential Provisioning </li></ul><ul><li>Network Access </li></ul><ul><li>Directory Services </li></ul><ul><li>Authentication, Authorization and Accounting </li></ul><ul><li>Federation </li></ul><ul><li>Single Sign-On (SSO) </li></ul><ul><li>Data Access Strategy </li></ul><ul><li>Application Layering </li></ul><ul><li>Architectural Description </li></ul><ul><li>Architecture Styles </li></ul><ul><li>Architecture Viewpoint and Views </li></ul><ul><li>Asset Management Systems </li></ul><ul><li>Business Strategy Identification </li></ul><ul><li>Gap Analysis </li></ul><ul><li>Identifying De Facto Technology and Business Direction </li></ul><ul><li>Technology Strategy Evolution Approach Definition </li></ul><ul><li>Business-Technology Strategy Rationalization </li></ul><ul><li>Industry Vertical Capability Perspective </li></ul><ul><li>Strategy Canvas Methods </li></ul><ul><li>Business Capability Mapping </li></ul><ul><li>Business Considerations </li></ul><ul><li>Business Community Organizational Aspects </li></ul><ul><li>Business Fundamentals </li></ul><ul><li>Business Intelligence </li></ul><ul><li>BPE & BPM </li></ul><ul><li>Opportunity Cost and Value </li></ul><ul><li>Return on Investment Calculation </li></ul><ul><li>Total Cost of Ownership </li></ul><ul><li>Viability Assessment </li></ul><ul><li>Business Valuation </li></ul><ul><li>Business-Technology Strategy </li></ul><ul><li>Capability Development, Training and Management </li></ul><ul><li>Capability Mix Identification </li></ul><ul><li>Scaling Solutions </li></ul><ul><li>Capacity Planning </li></ul><ul><li>Change Control </li></ul><ul><li>Source Control Systems </li></ul><ul><li>Database Management </li></ul><ul><li>Intranet and Internet Services </li></ul><ul><li>Common Application Services </li></ul><ul><li>Compliance: Audits, Certification and Regulation </li></ul><ul><li>Conflict Management </li></ul>Schedule/Effort Estimation Crisis Management Customer Information and Relationship Management (CIM/CRM) Customer Relations Dependency Identification and Management Design Diagram Design Methodologies including review Design Skills Development and Build Environments Client Management Device Management Server Management Storage Management Domain-Specific Languages End-to-End (E2E) Test Design and Implementation Software Development Life Cycle (SDLC) Engineering Governance Frameworks Governance Methodologies Governance Policies Tool Identification Human Dynamics Balancing and Optimizing Design Attributes Quality Attributes for Post Deployment Balancing and Optimizing Quality Attributes Quality Attribute Impact Across Domains Quality Attributes for Delivery and Packaging Implementing Quality Attributes Implementing the User Experience User Interface Options Visualization Web Portals Standards Major Vendors and System Integrators Technology Industry Trending Tool and Solution Categorization Competitive Landscape Industry Vertical Awareness Technologies Data Modeling Data Transformation Data Warehousing Product Architecture Management Context in Design Cost Estimation and Tracking Information Architecture Strategy Metadata Management Relational Database Management Systems (RDBMS) Information Architecture Infrastructure Architecture Integrated Development Environments (IDEs) and Modeling Tools IT Environment Knowledge Management Coaching and Inspiring Leadership Strategy Thought Leadership Leadership Internationalization issues Localization Mainframe Development and Design Maintenance and Support Incident Response Service Level Agreements (SLA) Manageability, Maintainability and Supportability Mentorship Messaging (protocols ,standards, technologies Transports Mobile Platforms and Frameworks Monitoring Quality Attributes Persuasion Negotiation Skills Network Design Network Devices and Appliances Network Protocols Routing, Load Balancing and Traffic Prioritization Network Management Tools Alerting, Operations Support and Dashboards System Management and Services Related Tools Service Change Management Operational Management Operations Methodologies Requirements and Constraints Analysis Requirements Analysis as a Design Skill Resource Balancing and Management Frameworks, Components, Reference Implementations, Products, and Systems HPC Computing Stakeholder Definition System’s theory Release and Capacity Management Operations Frameworks Infrastructure Concerns in Solutions Architecture Optimization Techniques Organizational Dynamics Anti-Patterns Design Patterns Effective Questioning Listening Skills Meeting Skills Performance, Extensibility, Flexibility Personalization User Profile and Relationship Design Relationship/Power Map Interpersonal Dynamics Politics Team Participation Visual and Diagrammatic Communications Presentation , verbal and writing skills programming Programming Language Considerations Proof of Concept Design Prototyping Auditing Quality Attributes Reliability, Availability, Scalability Analysis and Opportunity Identification Automation and Tooling Current Business Evaluation Process Identification and Cataloging Refactoring Building Blocks of Design Security Attributes Selling Skills Application and Service Management Automated Policy Application Component Architecture Enterprise Service Bus (ESB) Event Driven Architecture Service Orientation Service Network Understanding Perspective Adaptation Solution Architecture Solution Architecture Methodologies Distributed Computing
The role of the architect From Ron Jacobs Yeah – but a better analogy is Explorer Designer Advocate
The Role of the Architect – take II Designer Renaissance Man Visionary & Leader Mentor
Software architecture is… what the software architect does
<ul><li>collection of the fundamental decisions about a software product/solution designed to meet the project‘s quality attributes </li></ul><ul><li>Includes the main components, their main attributes, and their collaboration </li></ul><ul><li>expressed in several levels of abstraction (depending on the project's size). </li></ul><ul><li> </li></ul><ul><li>Architecture is communicated from multiple viewpoints </li></ul><ul><li>Tradeoffs are made explicit </li></ul>
The Tao of Software Architect The architect doesn't talk, he acts. When this is done, the team says, "Amazing: we did it, all by ourselves!" (17) The architect observes the world but trusts his inner vision. He allows things to come and go. His heart is open as the sky. (12) By Philippe Kruchten - http://www.bredemeyer.com/tao_by_Kruchten.htm
A particular slide catching your eye?
Clipping is a handy way to collect important slides you want to go back to later.