You are previewing Software Architect Bootcamp, Second Edition.
O'Reilly logo
Software Architect Bootcamp, Second Edition

Book Description

The completely updated "field manual" for becoming a better software architect!

The crucial skills you need to survive and thrive as an enterprise software architect! Fully updated for the latest techniques-from lightweight methods and architectural layers to Model-Driven Architecture and UML 2.0!

In this book, Raphael Malveau and Thomas J. Mowbray share up-to-the-minute insights and practical solutions for all the key challenges of building enterprise software systems with objects, components, and Internet technologies. You'll master today's best technical and business practices for the entire project lifecycle as you discover how to avoid crucial pitfalls and costly errors. Coverage includes:

  • Choosing the right architectural model for your project

  • Executing heavyweight and lightweight approaches to software architecture

  • Understanding the architectural issues associated with open source development

  • Managing complexity, scalability, reliability, security, latency, and flexibility

  • Making the most of abstraction, refactoring, and architectural prototyping

  • Leveraging proven design patterns and anti-patterns

  • Effective prototyping, business-case development, and project leadership

  • Coordinating smoothly with project managers and teams

  • Managing your own career as a software architect

With hands-on exercises, real-life war stories, and a take-no-prisoners attitude, Software Architect Bootcamp, Second Edition, won't just help you become a great software architect: it'll help you become a true technical leader of your organization.

Table of Contents

  1. Copyright
  2. About Prentice Hall Professional Technical Reference
  3. Preface
  4. One. Introduction
    1. 1.1. Defining Software Architecture
    2. 1.2. The Need For The Software Architect
    3. 1.3. Goals
      1. Industry Background and History
      2. Technology Trends and Architectural Styles
      3. Tactics
      4. Strategies
      5. Tools
      6. Mindset
  5. Two. Military History
    1. 2.1. Software Architecture Approaches
      1. Architectural Approaches
        1. Zachman Framework
        2. Open Distributed Processing
        3. Domain Analysis
        4. 4+1 View Model
        5. Academic Software Architecture
      2. Common Principles
      3. Architectural Controversies
    2. 2.2. The Architectural Paradigm Shift
    3. 2.3. The Need for Software Architecture
    4. 2.4. Zachman Framework
    5. 2.5. Reference Model for Open Distributed Processing
    6. 2.6. Enterprise Architecture Standards
      1. Federal Enterprise Architecture Framework
    7. 2.7. Design Patterns
    8. 2.8. AntiPatterns
    9. 2.9. Software Design-Level Model
    10. 2.10. Conclusions
    11. 2.11. Exercises
  6. Three. Software Architecture: Basic Training
    1. 3.1. Object-Oriented Technology
      1. Databases and Objects
      2. Object in the Mainstream
      3. Scripting Languages
    2. 3.2. Component-Oriented Technology
      1. Components versus Objects
      2. Component Infrastructures
      3. Component Software Design Patterns
      4. Component Software Architecture
    3. 3.3. Technology Ownership
      1. Proprietary Software
      2. Open Systems Software
    4. 3.4. Client-Server Technology
      1. History
      2. Distributed Components
    5. 3.5. Internet Technology
      1. eXtensible Markup Language (XML)
      2. Sun Microsystems J2EE and Microsoft's .Net
      3. Web Services
    6. 3.6. Architectural Layers and When to Use Them
    7. 3.7. Software Application Experience
    8. 3.8. Technology and Application Architecture
    9. 3.9. Applying Standards to Application Systems
    10. 3.10. Distributed Infrastructures
    11. 3.11. Conclusions
    12. 3.12. Exercises
  7. Four. Software Architecture: Going to War
    1. 4.1. Software Architecture Paradigm Shift
      1. Traditional System Assumptions
      2. Distribution Reverses Assumptions
      3. Multiorganizational Systems
      4. Making the Paradigm Shift
    2. 4.2. Doing Software Incorrectly
      1. This Old Software
      2. An Example: Doing Software Incorrectly
      3. Enter the Knight: Heroic Programmers
    3. 4.3. Doing Software Correctly: Enterprise Architecture Development
      1. Architecture-Centered Process
      2. Step 1: System Envisioning
      3. Step 2: Requirements Analysis
      4. Step 3: Mockup Prototype
      5. Step 4: Architectural Planning
        1. Business Enterprise Architecture
        2. Logical Information Architecture
        3. Computational Interface Architecture
        4. Distributed Engineering Architecture
        5. Technology Selection Architecture
      6. Step 5: Architectural Prototype
      7. Step 6: Project Planning
      8. Step 7: Parallel Development
      9. Step 8: System Transition
      10. Step 9: Operations and Maintenance
      11. Step 10: System Migration
    4. 4.4. Bottom Line: Time, People, and Money
    5. 4.5. Conclusions
    6. 4.6. Exercises
  8. Five. Software Architecture: Drill School
    1. 5.1. Architecture Versus Programming
      1. The Fractal Model of Software
      2. Major Design Forces
      3. The Effect of Scale on Forces
      4. Software Design Levels
      5. Using Design Levels
    2. 5.2. Managing Complexity Using Architecture
      1. Creating Complexity
      2. Option 1: Sweep It under a Rug
      3. Option 2: Hide It in a Crowd
      4. Option 3: Ignore It
      5. Option 4: Slice It
      6. Option 5: Dice It
    3. 5.3. Systems Integration
    4. 5.4. Making the Business Case
    5. 5.5. Architectural Linkage to Software Development
    6. 5.6. Conclusions
    7. 5.7. Exercises
  9. Six. Leadership Training
    1. 6.1. Leadership Is a Necessary, Learnable Skill
    2. 6.2. The Architect as Team Builder
    3. 6.3. Always Insist on Excellence in Deliverables
    4. 6.4. Architect's Walkthrough
    5. 6.5. Project Management Basics
      1. Planning Phase
      2. Analysis Phase
      3. Implementation Phase
    6. 6.6. Architect's Role Versus Project Management
      1. Planning Phase
      2. Analysis Phase
      3. Implementation Phase
    7. 6.7. Conclusions
    8. 6.8. Exercises
  10. Seven. Software Architecture: Jump School
    1. 7.1. Process
      1. Process Prerequisites
      2. A Basic Component Framework Software Design Process
    2. 7.2. Creating New Processes
    3. 7.3. Teamwork
    4. 7.4. Conclusions
    5. 7.5. Exercises
  11. Eight. Communications Training
    1. 8.1. Communications Challenges
    2. 8.2. Responsibility-Driven Development
    3. 8.3. Communication Responsibilities
    4. 8.4. Handling Feedback
    5. 8.5. Evolution of Software Design Notations
    6. 8.6. Unified Modeling Language Notation
    7. 8.7. Model-Driven Architecture
    8. 8.8. Conclusions
    9. 8.9. Exercises
  12. Nine. Software Architecture: Intelligence Operations
    1. 9.1. Architectural Mining
      1. Top Down and Bottom Up
      2. Architectural Farming
      3. Architectural Mining Process
      4. Applicability of Mining
      5. Mining for Success
      6. Horizontal Versus Vertical
      7. Horizontal Design Elements
      8. What About Traceability?
      9. Designing for Future Applications
    2. 9.2. Architectural Iteration
      1. Software Process Background
      2. The Role of the Architecture Process
      3. The Macro Process: Architectural Iteration
      4. Developer Reaction to Architecture
      5. After Intelligence, Iterate the Design
      6. The Micro Process: Architecture with Subprojects
      7. Architecture in Chaos
    3. 9.3. Architectural Judgment
      1. Problem Solving
      2. Review and Inspection
    4. 9.4. Conclusions
    5. 9.5. Exercises
  13. Ten. Software Architecture: Psychological Warfare
    1. 10.1. Alternative Learning
    2. 10.2. Internal Control
    3. 10.3. Expectation Management
    4. 10.4. Psychology of Truth
    5. 10.5. Software Envisioning
    6. 10.6. Reference Models and Human Psychology
      1. Reference Models as Perception
      2. Biological Response Model
      3. Group Applications of Response
    7. 10.7. Example: Reference Selling
    8. 10.8. Psychology of Ownership
    9. 10.9. Psychological Akido
    10. 10.10. Conclusions
    11. 10.11. Exercises
  14. Eleven. Software Architecture: Career Advice
    1. 11.1. Read, Read, Read
    2. 11.2. Word of Caution
      1. Nascent Body of Knowledge
      2. Confusion and Gurus
      3. The Management Trap
    3. 11.3. Making A NAME
    4. 11.4. Becoming an Expert
    5. 11.5. Conclusions
    6. 11.6. Exercises
  15. A. Architecture Example: Test Results Reporting System
    1. A.1. Introduction
    2. A.2. Component Interoperability Challenge
    3. A.3. Target Architecture for the TRRS
    4. A.4. Target Enterprise Viewpoint
    5. A.5. Target Information Viewpoint
    6. A.6. Target Technology Viewpoint
    7. A.7. Prototype Implementation
    8. A.8. Prototype Computational Viewpoint
    9. A.9. TRRS Terminology
    10. A.10. Use Case Definitions
      1. Use Case 001 Product Information Retrieval Session
      2. Use Case 002 Product Data Entry Session
      3. Use Case 003 Experience Report Entry Session
    11. A.11. Core Workflows
      1. UC004 Product Entry Workflow
      2. UC005 COTS Validation Workflow
      3. UC006 Interoperability Validation Workflow
      4. UC007 Experience Report Update
    12. A.12. Information Model
      1. Product Information
        1. TRRS Status and URL Links
      2. Standard Profile Information
      3. Organization Information
      4. Product-Related Services Information
        1. TRRS Status and URL Links
      5. Experience Report Information
      6. Operating Environment Information
    13. A.13. Conclusions
  16. B. Design Templates and Examples
    1. B.1. Conceptual Design
      1. Section 1 Goal
        1. Good Example
        2. Poor Example
      2. Section 2 Conceptual Overview
        1. Example (from Profile Service Conceptual Design)
      3. Section 3 Responsibilities
        1. Good Example
        2. Poor Example
      4. Section 4 Architectural Level
      5. Section 5 Classes and Objects, Class Semantics, and Class Relationships
        1. Example (See Figure B.1.)
      6. Section 6 Description of Features, Data Types, and Constraints
        1. Examples
      7. Section 7 How the Design Addresses Relevant Use Cases and Requirements
        1. Example
    2. B.2. Relationship Service Conceptual Design
      1. Section 1 Goal
      2. Section 2 Conceptual Overview
      3. Section 3 Responsibilities
      4. Section 4 Architectural Level
      5. Section 5 Classes and Objects, Class Semantics, and Class Relationships
      6. Section 6 Description of Features, Data Types, and Constraints
        1. Features
        2. Data Types
        3. Constraints
      7. Section 7 How the Design Addresses Relevant Use Cases and Requirements
    3. B.3. High-Level Design
      1. Section 1 Screen Mockups
      2. Section 2 UML Diagrams
      3. Section 3 Discovery Interface UseSection 4 Component ReuseSection 5 Representative Use Cases
    4. B.4. Relationship Service High-Level Design
      1. Section 1 Screen Mockups
      2. Section 2 Design Considerations
      3. Section 3 Component Reuse
      4. Section 4 Discovery Interface Use
      5. Section 5 OMG IDL
        1. Complete IDL
      6. Section 6 Population
        1. Associated-With
        2. Composed-Of
        3. Produced-By
      7. Section 7 Representative Use Cases for Event Traces
        1. VHP3c Associates Geographical Feature
      8. Section 8 Client Profile
      9. Section 9 UML Class Diagrams
  17. C. Glossary of Software Architecture Terminology
    1. Glossary
  18. D. Abbreviations
  19. E. Bibliography