Вы находитесь на странице: 1из 15

Architecture Workshop

Software Architecture –
Definition 1
“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) by L.Bass, P.Clements, and

Software Architecture –
Definition 2
“Architecture is defined by the
recommended practice as the
fundamental organization of a
system, embodied in its components,
their relationships to each other and
the environment, and the principles
governing its design and evolution.”
- ANSI/IEEE Std 1471-2000,

Recommended Practice for

Architectural Description of Software-
Software Architecture –
Definition 3
“[Software architecture goes] beyond the
algorithms and data structures of the
computation; designing and specifying the
overall system structure emerges as a new
kind of problem. Structural issues include
gross organization and global control
structure; protocols for communication,
synchronization, and data access; assignment
of functionality to design elements; physical
distribution; composition of design elements;
scaling and performance; and selection among
design alternatives.”
-D. Garlan , M. Shaw, An Introduction to Software


 Is an Abstraction
 Defines Structure
 Defines Behavior
 Focuses on Significant Elements
 Balances Stakeholder Needs
 Embodies Decisions based on Rationale
 Specifies Component Communication
 Addresses Non-functional Requirements
 Business constraints
 Technical constraints
 Quality attributes
 Influences team structure
Architecture vs . Design

 Architecture is used to:

 Make buy decisions
 Discriminate between options
 “Discover” the true requirements
 Drive one or more systems to a common “use” or
 Provides guidelines/blue print and a set of
best practices for design

 Design is used to:
 Develop system components
 Build the system
 Understand configuration changes as the
system is modified
Types of Architectures
Abstraction Granularity Key Design Concerns
Enterprise Architecture Business Process and Models
Business Data
Organizational Structure and Relationships
Enterprise Stakeholders
IT Infrastructure

System Architecture Identification of system context

Partitioning (hardware/software focus)
Identification of S/W requirements
Overall systemic Functional requirements
Systemic Integration and Testing

Software Architecture Identification of Crosscutting Design Concerns (quality

Software Functional Requirements
Partitioning of Software Applications
Software and Systemic Integration and Testing

Detailed Software Design

Language Features
Algorithmic Efficiencies
Data Structure Design
Software Application Testing
Implementation of Functionality
Types of Architects
 Technical Architect
 Specialist in a particular technology
 Understands the strengths and limitations of a
 Determines the applicability of the technology and
defines the architecture using that particular
 Guides the team to implement the solution
 Knows various vendor tools in the technology area the
latest trends in the market, and various
architectural alternatives for implementing the
 Other Flavors : .NET architect, J2EE architect,
integration architect, BPM architect, …

 Solution Architect

Architect ’ s Focus

Da pec
Enterprise ta i a
Enterprise , li
Se z
Scope and Responsibility

Architect cu ed
ri A
ty rc
Solution , hi
Architect Ne te
Architect tw ct
or s
Application or
or Software

Development Lead
Development Team
Strategic Hands on Coder
Level of Detail
Architect ’ s Play a Major
Role in
1. Analysis of the problem domain
2. Risk management
3. Requirements management
4. Estimation
5. Technology roadmap management
6. Determination of implementation approaches
7. Assessment of technical feasibility through POCs
8. Definition of an architecture that meets the system
requirements (functional and quality attributes),
goals of the organization, budget and schedule
9. Interface design
10.Oversight of the mapping from the architecture to the
design and implementation
11.Communication of the software architecture to
technical and non - technical audiences
12.Maintenance of the software architecture throughout
the project lifecycle

Strategy Mindset

Technical Acumen s

Domain Knowledge Project Mgmt Foundati

Leadership Relationship Mgmt Experience
SDLC Processes &
 Waterfall  Iterative
Architect’s Involvement
across Phases (Ideal)
You will learn about

 General approach to designing application

 Different types of applications that you
can build
 Key factors you must consider when
designing application architectures
 Layered approach to application design
 Quality attributes that affect the overall
success and acceptance of an application