Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
74 views

Module 1

This document provides an overview of software architecture. It begins with an analogy comparing software architecture to building architecture. Some key points made include: - Software architecture represents the earliest design decisions that are hardest to change and most critical to get right. - Software architecture is defined as the fundamental organization of a system, including its components, their relationships, and design principles. - Common elements of architecture include defining major components, their relationships and interactions, and excluding unnecessary component details. - Characteristics of good architecture include performance, security, safety, availability, and maintainability.

Uploaded by

Javeria
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
74 views

Module 1

This document provides an overview of software architecture. It begins with an analogy comparing software architecture to building architecture. Some key points made include: - Software architecture represents the earliest design decisions that are hardest to change and most critical to get right. - Software architecture is defined as the fundamental organization of a system, including its components, their relationships, and design principles. - Common elements of architecture include defining major components, their relationships and interactions, and excluding unnecessary component details. - Characteristics of good architecture include performance, security, safety, availability, and maintainability.

Uploaded by

Javeria
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 30

SE 4352

Software Architecture and


Design
Fall 2016
Module 1

What is software architecture?

Analogy From Building Architecture

What can we learn from buildings?

A building HAS an architecture


Separate but linked to the physical structure
We can talk about it and describe it and
compare it

Major elements
Composition
Arrangement

Architecture is induced by the design to meet


needs
Distinctive role and character of an architect
Process is not as important as architecture
Architecture has matured over the years into
discipline

Limitations of the analogy

Almost everyone knows a lot about buildings


You can discern a buildings architecture by looking
at it
Software isnt restricted by physical limitations like
buildings
The software construction industry is not
developed to the same degree as the building
construction industry
Software is dynamic

Software Architecture

In which era were the first buildings made?


Mesopotamia, Greece
250 BC

Architecture is Early

Architecture represents the set of earliest design decisions


Hardest to change
Most critical to get right
Architecture is the first design artifact where a systems
quality attributes are addressed

Software Architecture defined


Software architecture is what software
architects do!!!!!

Software Architecture: Formal Definitions

ANSI/IEEE 1471-2000

Software architecture is 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
ACM
architecture is concerned with the selection of
architectural elements, their interactions, and the
constraints on those elements and the interactions
necessary to provide a framework in which to satisfy the
requirements and serve as a basis for the design
SEI
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.

Some definitions from experts


Booch, Kruchten, Reitman, Bittner, and Shaw
Software architecture encompasses the set of significant decisions about the organization
of a software system
Selection of the structural elements and their interfaces by which a system is
composed
Behavior as specified in collaborations among those elements
Composition of these structural and behavioral elements into larger subsystems
Architectural style that guides this organization
Boehm
A software system architecture comprises
A collection of software and system components, connections, and constraints
A collection of system stakeholders' need statements
A rationale which demonstrates that the components, connections, and constraints
define a system that, if implemented, would satisfy the collection of system
stakeholders' need statements
Clements
The software architecture of a program or computing system is the structure or structures
of the system, which comprise software components, the externally visible properties
of those components, and the relationships among them
Garlan and Shaw
[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 10
design elements; scaling and performance; and selection among design alternatives.

Common elements of these definitions

Architecture defines major components


Architecture defines component relationships (structures) and
interactions
Architecture omits content information about components that does
not pertain to their interactions
Behavior of components is a part of architecture insofar as it can be
discerned from the point of view of another component
Every system has an architecture (even a system composed of one
component)
Architecture defines the rationale behind the components and the
structure
Architecture is not a single structure -- no single structure is the
architecture

Software Architecture

Software architecture is the process of designing


the global organization of a software system,
including:
Dividing software into subsystems.
Deciding how these will interact.
Determining their interfaces.

The architecture is the core of the design, so all


software engineers need to understand it.
The architecture will often constrain the overall
efficiency, reusability and maintainability of the
system.

Architecting a dog house

13

Architecting a house

14

Architecting a high rise

15

Architecture characteristics

Performance

Security

Localize safety-critical features in a small number of sub-systems.

Availability

Use a layered architecture with critical assets in the inner layers.

Safety

Localize critical operations and minimize communications. Use


large rather than fine-grain components.

Include redundant components and mechanisms for fault


tolerance.

Maintainability

Use fine-grain, replaceable components.

Design stable architecture

To ensure the maintainability and reliability of a


system, an architectural model must be designed
to be stable.
Being stable means that the new features can
be easily added with only small changes to the
architecture

Contents of a good architectural


model

A systems architecture will often be expressed in


terms of several different views
The logical breakdown into subsystems
The interfaces among the subsystems
The dynamics of the interaction among
components at run time
The data that will be shared among the
subsystems
The components that will exist at run time, and
the machines or devices on which they will be
located

Developing an architectural model

Start by sketching an outline of the architecture


Based on the principal requirements and use
cases
Determine the main components that will be
needed
Choose among the various architectural styles
Suggestion: have several different teams
independently develop a first draft of the
architecture and merge together the best ideas

Developing an architectural model


Refine

the architecture

Identify the main ways in which the components will


interact and the interfaces between them
Decide how each piece of data and functionality will
be distributed among the various components
Determine if you can re-use an existing framework, if
you can build a framework

Consider

each use case and adjust the


architecture to make it realizable
Mature the architecture

Architectural Styles

Architectural style - set of constraints placed on


development in order to produce desirable qualities
Eg. Medieval castle

Architectural Styles

The notion of patterns can be applied to software


architecture.
These are called architectural patterns or
architectural styles.
Each allows you to design flexible systems
using components

The components are as independent of each other as


possible.

Software Development Models

Software development life cycle (SDLC)

Structure imposed on the development of a software product

Several models for such processes

Waterfall, Iterative

Each describes approaches to a variety of tasks or activities that take


place during the process

Traditional Waterfall Software Development Model


Formal Description - 1970 by Winston W. Royce

Owes its origin to the standard workflow process in construction


and manufacturing industries

Software Development Process:


The Waterfall Process

Each rectangle represents an activity in the overall process.


Each activity produces work products that are used by activities in
later stages of the process.
Requirements

Formal Requirements Documents

Business / Domain Models

Analysis and Design


Software Components
Construction and Testing

System Integration

Planning Activities

Construction Activities

Executable System

Deployment

Iterative Software Development


Process

An iterative software development process is a process


that minimizes the damage caused by new, changing,
missing, or incorrectly understood system requirements.
An iterative process accomplishes this by:

Recognizing that the system can not be completely


understood before construction begins.
Defining, designing, and constructing the system in many
incremental deliveries.
Allowing the customer to evaluate each incremental
delivery and to make necessary changes.

Agile Software Development Model

Adaptability and Agility, requirements changing constantly


People-oriented rather than process-oriented
Extreme Programming (XP), Scrum - examples of Agile methodology
Iterations vary from three weeks to a month

Software Development Model

What are the pros and cons of the traditional waterfall


and agile software development models?

Traditional Waterfall Model


Advantages

Ensures greater project and deadline control

Allows for thorough planning - logical design, implementation and


deployment
Works well for smaller projects - requirements are very well understood

Disadvantages
Inflexible and rigid - hard to change according to time and user needs

Product tested only at the very end - entire program has to be rewritten, time-consuming and inefficient

Agile Software Development Model


Advantages
Focus on interaction, communication - team members, customers, daily
status
Feedback given - Day 1 of software testing with each iteration

Disadvantages
Highly skilled, competent team members, fast paced environment
Last minute changes stress, late hours

You might also like