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

Architecture Workshop

Introduction
Agenda
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


R.Kazman
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

Architecture
Architecture

 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
purpose
 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


attributes)
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
technology
 Determines the applicability of the technology and
defines the architecture using that particular
technology
 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
solution
 Other Flavors : .NET architect, J2EE architect,
integration architect, BPM architect, …

 Solution Architect

Architect ’ s Focus

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

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

Development
Development Lead
Lead
Development
Development Team
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
13.
14.
Competencies

Strategy Mindset

Communication
Skill
Technical Acumen s

Domain Knowledge Project Mgmt Foundati


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

 General approach to designing application


architectures
 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