Intro to Software Architecture, Essays (university) of Software Engineering

Introduction to a Software Architecture course

Typology: Essays (university)

2019/2020

Uploaded on 10/22/2020

doaa-mohamed
doaa-mohamed 🇪🇬

1 document

1 / 25

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Systems Analysis & Design II
Lecture 1
Introduction
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19

Partial preview of the text

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?