Professional Documents
Culture Documents
1.ABSTRACT
Software architecture is about making fundamental structural choices which are costly to
change once implemented. Software architecture choices include specific structural options
from possibilities in the design of software. For example, the systems that controlled the
space shuttle launch vehicle had the requirement of being very fast and very reliable.
Therefore, an appropriate real-time computing language would need to be chosen.
Additionally, to satisfy the need for reliability the choice could be made to have multiple
redundant and independently produced copies of the program, and to run these copies on
independent hardware while cross-checking results.
Documenting software architecture facilitates communication between stakeholders, captures
early decisions about the high-level design, and allows reuse of design components between
projects.
2. INTRODUCTION
Software architecture refers to the high level structures of a software system and the
discipline of creating such structures and systems. Each structure comprises software
elements, relations among them, and properties of both elements and relations. The
architecture of a software system is a metaphor, analogous to the architecture of a building.
It functions as a blueprint for the system and the developing project, laying out the tasks
necessary to be executed by the design teams.
Software architecture is about making fundamental structural choices which are costly to
change once implemented. Software architecture choices include specific structural options
from possibilities in the design of software. For example, the systems that controlled the
space shuttle +launch vehicle had the requirement of being very fast and very reliable.
Therefore, an appropriate real-time computing language would need to be chosen.
Additionally, to satisfy the need for reliability the choice could be made to have multiple
redundant and independently produced copies of the program, and to run these copies on
independent hardware while cross-checking results.
3. OBJECTIVES
This course introduces the concepts and the methods required for the construction
of large software intensive systems. It aims to develop a broad understanding of
the discipline of software engineering.
It seeks to complement this with a detailed knowledge of techniques for the
analysis and design of complex software intensive systems. It aims to set these
techniques in an appropriate engineering and management context.
It provides a brief account of associated professional and legal issues.
Each group writes software that interacts with the other groups’ software through carefully
crafted interfaces that reveal the minimal and most stable information necessary for
interaction. From that interaction emerges the functionality and quality attributes—security,
modifiability, performance, and so forth—that the system’s stakeholders demand.
The larger and more complex the system, the more critical is this partitioning—and hence,
architecture.
And as we will see, the more demanding those quality attributes are, the more critical the
architecture is.
A single system is almost inevitably partitioned simultaneously in a number of different
ways. Each partitioning results in the creation of an architectural structure: different sets of
parts and different relations among the parts. Each is the result of careful design, carried out
to satisfy the driving
quality attribute requirements and the most important business goals behind the system.
Architecture is what makes the sets of parts work together as a coherent and successful
whole. Architecture documentation help architects make the right decisions; it tells
developers how
to carry them out; and it records those decisions to give a system’s future caretakers insight
into the architect’s solution.
An architectural style defines the vocabulary of components and connectors types and a set
of constraints on how they can be combined.
Lists of common Architectural Styles,
Pipes and filters
Objects.
Implicit invocation.
Layered.
Interpreters.
Repositories.
Process control.
Interpreters.
Heterogeneous Architecture.
Architectural style can be combined in several ways,
Hierarchical.
A component of a system organized in one architectural style may
have different internal structure.
Example: Unix Pipeline
Combining styles to permit a single component may use mixture of
architectural connectors.
Example: A component might access a repository through part of its
interface, but interacts through pipes.
4.3 Quality
Layers helps the structure an application that can be decomposed into groups of subtasks in
which each group of subtasks is at a particular level of abstraction.
Architectural Style.
Architectural styles tell us, in very broad strokes, how to organize our code. It’s the highest
level of granularity and it specifies layers, high-level modules of the application and how
those modules and layers interact with each other, the relations between them. Examples of
Architectural Styles:
Component-based
Monolithic application
Layered
Pipes and filters
Event-driven
Publish-subscribe
Plug-ins
Client-server
Service-oriented
Blackboard.
The blackboard model is usually presented with 3 major parts,
The knowledge sources: Separate, independent parts of application
dependent knowledge.
The blackboard data structure: Application dependent, problem
solving state data. Knowledge sources can make changes to the
blackboard that lead incrementally to a solution to the problem.
Control: It is driven by the state of blackboard.
Broker.
A broker is used to structure distributed software systems with decoupled components that
interact by remote service invocation. A broker component is responsible for coordinating
communication, such as forwarding request, as well as for transmitting result and exception.
Presentation-Abstraction-Control.
Microkernel.
5. CONCLUSION
6. REFERENCES
Software Architecture in Practice by Len Bass, Paul Clements, and Rick Kazman
Documenting Software Architectures: Views and Beyond Book by Paul Clements
https://en.wikipedia.org/wiki/Software_architecture