Download Intro to Software Architecture and more Essays (university) Software Engineering in PDF only on Docsity!
Systems Analysis & Design II
Lecture 1
Introduction
Course Info.
(^) Lectures: Wednesday 8-10 am (^) Office hours: Sunday/ Wednesday 10:00-12: (^) Contact: [email protected] (^) Assistant Instructor/TA: ??? (^) Textbook:
- (^) Software Architecture in Practice, Second Edition by Len Bass, Paul Clements, Rick Kazman.
- (^) Software Design Methodology, Hong Zhu, Elsevier, 2005 (^) Other References:
- (^) An Introduction To Software Architecture by David Garlan And Mary Shaw.
- (^) Software Architecture, Course Book by A. Bijlsma, B.J. Heeren, E.E. Roubtsova, S. Stuurman. https://www.researchgate.net/publication/278847459_A_Bijlsma_BJ_Heeren_EE_Roubtsova_S_Stuurman_S oftware_Architecture
- (^) Software Architecture & Design Tutorial file:///F:/USB/SAD%20II/SA%20Tutotrial/Software%20Architecture%20and%20Design%20Tutorial.html
Preliminaries
Students should be familiar with:
- (^) The Unified Modeling Language UML to describe software
- (^) Object-Oriented Concepts and Programming
- (^) Be motivated to participate in the lecture and Lab
What do you expect from this
course?
About Design…
What is System Design?
What makes a good design?
Is there only one correct solution to any
given design problem?
Do applying a well-established design
method will always results in the correct
solution to a design problem?
About Design…
Systems Design is the process of problem-
solving and planning for a software solution.
A good design is the key to a successful
product. A well-designed system is:
- (^) easy to implement,
- (^) understandable and reliable,
- (^) and allows for smooth evolution.
learning the theories of Software Architecture, especially software architectural styles and analysis and evaluation of architectural designs, are the right level of abstraction that will allow you to analyse and compare alternative designs.
What is Software Architecture? How do I create an architecture? Why should we pay attention to Architecture? Where does Architecture fit in development? Who is right for the architect role?
Software Architecture
What is System Architecture?
Architecture is a Set of Software Structures
Software systems are composed of many
structures, and no single structure holds claim to
being the architecture.
There are three important categories of
architectural structures.
- (^) Module
- (^) Component and Connector
- (^) Allocation
Component-and-connector (C&C) Structures C&C structures focus on the way the elements interact with each other at runtime to carry out the system’s functions. (^) C&C views help us answer questions such as these:
- (^) What are the major executing components and how do they interact at runtime?
- (^) What are the major shared data stores?
- (^) Which parts of the system are replicated?
- (^) How does data progress through the system?
- (^) What parts of the system can run in parallel? (^) C&C views are crucially important for asking questions about the system’s runtime properties such as performance, security, availability, and more. 16
Allocation Structures
Allocation structures describe the mapping from
software structures to the system’s environments
- (^) organizational
- (^) developmental
- (^) installation
- (^) Execution
For example
- (^) Modules are assigned to teams to develop, and assigned to places in a file structure for implementation, integration, and testing.
- (^) Components are deployed onto hardware in order to execute.
Why should we pay attention to Architecture?
On the organizational side
- (^) communicating the high-level design
- (^) providing the system context
- (^) work allocation
On the technical side
- (^) meets system requirements and objectives
- (^) enables flexible distribution/partitioning of the system
- (^) reduces cost of maintenance and evolution
- (^) increases reuse and integrate with legacy and third party software
20
Pre-architecture life cycle
SE, Software Architecture, Hans van Vliet, © Requirements Agreement Quality Development Stakeholders (few) (^) Iteration mainly on functional requirements (^) Few stakeholders involved (^) No balancing of functional and quality requirements
Where does Architecture fit in
development?