Académique Documents
Professionnel Documents
Culture Documents
Contents
What is Software Architecture?
The Goals of Architecture
The Principles of Architecture Design
Figure 1
User, business, and system goals
Tradeoffs are likely, and a balance must often be found between competing
requirements across these three areas. For example, the overall user experience of
the solution is very often a function of the business and the IT infrastructure, and
Expose the structure of the system but hide the implementation details.
Realize all of the use cases and scenarios.
Try to address the requirements of various stakeholders.
Handle both functional and quality requirements.
What are the foundational parts of the architecture that represent the
greatest risk if you get them wrong?
What are the parts of the architecture that are most likely to change, or
whose design you can delay until later with little impact?
What are your key assumptions, and how will you test them?
What conditions may require you to refactor the design?
Do not attempt to over engineer the architecture, and do not make assumptions
that you cannot verify. Instead, keep your options open for future change. There
Architectural pattern
An architectural pattern is a general, reusable solution to a commonly occurring
problem in software architecture within a given context. Architectural patterns are
similar to software design pattern but have a broader scope. The architectural patterns
address various issues in software engineering, such as computer hadware performance
limitations, high availability and minimization of a business risk. Some architectural
patterns have been implemented within software frameworks.
Contents
1.Definition
2.Architectural style
3.Examples
Architectural style
Some treat architectural patterns and architectural styles as the same, some treat
styles as specializations of patterns. What they have in common is both patterns
and styles are idioms for architects to use, they "provide a common language"[5] or
"vocabulary"[4] with which to describe classes of systems.
The main difference is that a pattern can be seen as a solution to a problem, while
a style is more general and does not require a problem to solve for its appearance.
Architecture
Sub-Domain Solution Related
Pattern Design Patterns
Area Patterns Patterns
Name
EAI
Error
Master
handling
Change Data Data Hub
Capture Job
ETL (Data Operation
scheduling
Extraction Near Real- al Data
Time ETL Data
Transforma Store
validation
tion & Batch ETL (ODS)
Loading) Slowly
Data Data Mart
Changing
Discovery Data
Data Dimensions
Warehou
Integration/S Load
se
OA
MFT
One-Way
Publish/subscri
Synchronous
be
Request/Res
Request/reply
EAI/ESB ponse SOA
Message
Basic
Exchange
Callback
Patterns
Claim Check
Transactio Custom ETL
Data n Data Applications
EAI
Architecture Stores Databases
SOA
(TDS/OLTP Packaged
Dimension Modeling
al Data Standards
Data Modeling Modeling Naming
E-R Data Conventions
Modeling
The filter transforms or filters the data it receives via the pipes with which it is
connected. A filter can have any number of input pipes and any number of output
pipes.
The pipe is the connector that passes data from one filter to the next. It is a
directional stream of data that is usually implemented by a data buffer to store all
data, until the next filter has time to process it.
The pump or producer is the data source. It can be a static text file, or a keyboard
input device, continuously creating new data.
The sink or consumer is the data target. It can be another file, a database, or a
computer screen.
Examples
Unix programs. The output of one program can be linked to the input of another
program.
Compilers. The consecutive filters perform lexical analysis, parsing, semantic
analysis, and code generation.
Object-Oriented Organization
Heterogeneous Architectures
Systems Integration
Large software systems are often integrated from pre-existing systems. The designer of
such a system must accommodate very different-often incompatible-conceptual models,
representations, and protocols in order to create a coherent synthesis. Systems
integration is a problem-solving activity that entails harnessing and coordinating the
power and capabilities of information technology to meet a customer's needs. It
develops mega systems in which pre-existing independent systems become
subsystems--components that must interact with other components. Successful
integration requires solution of both organizational and technical problems:
"* understanding the current organizational capabilities and processes
"* re-engineering and simplification of processes with a system view "* standardizing
on common data languages and system architectures "• automation of processes and
systems
Five kinds of issues motivate companies to invest in systems integration:
• For many organizations, experiences with information technology have not lived up to
Batch Sequential:
Some of the earliest large computer applications were databases. In these
applications individual database operations-transactions-were collected into large
batches. The application consisted of a small number of large standalone programs
that performed sequential updates on flat (unstructured) files.
The earliest software development tools were standalone programs. Often their
output appeared only on paper and perhaps in the form of object code on cards or
paper tape. Eventually most of the tools' results were at least in some magnetic-
universally readable-form, but the output of each tool was most likely in the wrong
format, the wrong units, or the wrong conceptual model for other tools to use. Even
today, execution profiles are customarily provided in human-readable form but not
propagated back to the compiler for optimization. Effective sharing of information
was thus limited by lack of knowledge about how information was encoded in
representations. As a result, manual translation of one tool's output to another
tool's input format was common.
The use of well-known patterns leads to a kind of reuse of design templates. These
templates capture intuitions that are a common part of our folklore: it is now
common practice to draw box-and-line diagrams that depict the architecture of a
system, but no uniform meaning is yet associated with these diagrams. Many
anecdotes suggest that simply providing some vocabulary to describe parts and
patterns is a good first step.
Pattern is a Model
In the year 1995, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides.
Gang Of Four (GOF) are invented 23 Design Patterns.
History
– The concept of a "pattern" was first expressed in Christopher
Alexander's work, a Pattern Language in 1977 (2543 patterns)
Creational Patterns
1. Abstract factory
2. Builder
3. Factory method
4. Prototype
5. Singleton
Structural Patterns
1. Adapter
2. Bridge
3. Composite
5. Facade
6. Flyweight
7. Proxy
Behavioral Patterns
1. Chain of responsibility
2. Command
3. Interpreter
4. Iterator
5. Mediator
6. Memento
7. Observer
8. State
9. Strategy
10.Template method
11.Visitor
2) Pattern Problem 3)
Pattern Solution ANATOMY OF
DESIGN
PATTERNS 4) Pattern Consequences
Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides in their
Design Patterns (gang of four) book defined 23 design patterns divided into
three types:
1. Creational Patterns
2. Structural Patterns and
3. Behavioral Patterns
Creational Patterns: concerned with abstracting the object-instantiation
process.(or) deal with initializing and configuring classes and objects
1.Creational Patterns
3. Behavioral Patterns
2. Extensible
3. Reusable
4. Reliable
5. Efficient
6. Elegant
– Abstraction, Encapsulation
– Information hiding
– Separation of concerns
– Object-Oriented design
– Software Architecture
Benefits
* Common design jargon
* Consistent format
* Coded infrastructures
* Enhance understanding
Characteristics
* Easy to Design
* Easy to Modify
* Easy to Understand
* Easy to Maintain
* Easy to Execute
* Easy to Visualize
* Easy to Document
* Easy to Model
* Easy to Specify
* Easy to Construct
Advantages
* Reusability
* Reliability
* Flexibility
* Adaptability
* Maintainability
* Efficiency
* Extensibility
* Modifiability
* Understandability
* Portability
Applications
* ATM
* Online Banking
* Industry
* Defense
* Aeronautics
* Engineering
* Medical
* Different Managements
* User interfaces
* Software testing
* Web sites