Software architecture slides chap1 .pptx

alimunawar4316 40 views 37 slides May 10, 2024
Slide 1
Slide 1 of 37
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37

About This Presentation

Software architecture introduction


Slide Content

Architecture What? WEEK# 01 DR. Muhammad Ali Memon Associate Professor, University of Sindh

Building Architectures

Build a Place

What is Architecture? the action or process of building; construction. a plan for organizing space a systematic arrangement of information or ideas. the manner in which the components of a computer or computer system are organized and integrated.

The Architect

You need an architect first.

A software Architect

Structure Matters – Dijkstra 1968 Dijkstra, 1968 :  „‟...Correct arrangement of the structure of software systems before simple programming...„‟  Layered Structure  Programs are grouped into layers  Programs in one layer can only communicate with programs in adjoining layers  with easier development and maintenance Edsger Dijkstra 1930-2002

Evolution of software Problem  Software problems have changed in nature (algorithmic to general purpose applications)  and increased in complexity (to millions and millions lines of code)  It has now become very hard/impossible to develop system without architecture

Structure in software

Structure concept in Software 1960s - Structured Programming  Adopted into programming languages because it‟s a better way to think about programming 1970s - Structured Design  Methodology/guidelines for dividing programs into subroutines. 1980s – Modular programming languages  Modular (object-based) programming  Grouping of sub-routines into modules with data. 1990s – Towards Software Architectures  Object-Oriented Analysis/Design/Programming started being commonly used  Software Architecture Design 2000s - Software Architectures  Starting to be Common Practice  Specialization of concepts

Large scale complex software systems… Large(distributed) systems. Many people working on the same problem Programming in the large Million of lines of code Overly complex Should be delivered on time and budget. Only the coding will not do. According to Brook: Adding more programmers will make a delayed project later.

Architecture Definitions

Definitions Basic artifact shown to the customers and made from the requirements. Breaking down of the system into components And describing the interrelations between the components A prototype of the system Identify the components of the system along with the interraction between them Its an abstraction of the system Earliest artifact

SOFTWARE ARCHITECTURE- Booch 1991 “The logical and physical structure of a system, forged by all the strategic and tactical decisions applied during development.” Architecture is the high level structure of a system.

SOFTWARE ARCHITECTURE- Perry and Wolf  Perry and Wolf distinguish between processing elements, data elements, and connecting elements, and this taxonomy of architectural elements largely persists through most other definitions and approaches. SOFTWARE ARCHITECTURE- IEEE “Software architecture is the fundamental organization of a system, embodied in its components, their relationships to each other and their environment, and the principles governing its design and evolution.” SOFTWARE ARCHITECTURE – BASS, CLEMENTS, KAZMAN 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 Examples

SE, Software Architecture, Hans van Vliet, ©2008 18

SE, Software Architecture, Hans van Vliet, ©2008 19

SE, Software Architecture, Hans van Vliet, ©2008 20

SE, Software Architecture, Hans van Vliet, ©2008 21

SE, Software Architecture, Hans van Vliet, ©2008 22

23 Pre-architecture life cycle requirements agreement quality development stakeholders (few)

24 Adding architecture, the easy way architecture detailed design implementation requirements agreement quality development stakeholders (few)

25 Architecture in the life cycle requirements architecture quality agreement stakeholders (many) development

Quality This can be compared with the construction of a sky scraper. Due to the complexity of such a building, we need to think about the qualities of the building upfront. For example, if the landlord requires the building to be earthquake resistant, the architect will think about solutions from seismic engineering and add structures to the building that can resist lateral forces. At this point he will not specify the materials or the supplier of those structures as those are construction details

Software Design

WHAT IS SOFTWARE DESIGN Software design  is the process by which we create a specification of a software artifact, using a set of primitive components and subject to constraints. The process of defining the architecture, components, interfaces, and other characteristics of a system or component. DIFFERENCE Software architecture deals with high level concepts without regard to any implementation details. Software design on the other hand takes high level concepts and applies concrete details so that software can be implemented. Every architectural work is a kind of design, but the reverse is not true

It's about addressing those architecturally significant requirements (the "what") that will drive (and constrain) the "how" (the design).

SA Provides a design plan of a system Blueprint Implies purpose Is an abstraction that helps in managing the complexity of a system Software architects are limited by Lack of standardized ways to represent architecture Lack of analysis methods to predict whether an architecture will result in an implementation that meets the requirements

QUESTION What do you think would happen if same requirements were given to two different architects of different organizations?

ARCHITECTURE BUSINESS CYCLE (ABC) SA – result of technical, business, and social influences A SA also influences technical, business, and social environment That, subsequently, influence future SAs

Architecture affects following factors: Structure of the developing organization Goals of the developing organization Customer requirements for the next system Architect’s experience for subsequent systems Technical Environment

TERMINOLOGY 1. Architectural style/pattern: Defines element types and how they interact together with a set of constraints Sometimes defines a mapping of functionality to architectural elements An architectural style determines the vocabulary of components and connectors that can be used in instances of that style, together with a set of constraints on how they can be combined. These can include topological constraints on architectural descriptions (e.g., no cycles). Other constraints—say, having to do with execution semantics—might also be part of the style definition E.g. Client Server Architectural Pattern.

The following table lists the major areas of focus and the corresponding architectural styles.

2. Reference/domain specific architecture: Defines element types and how they interact They apply to a particular domain They define how the domain functionality is mapped to architectural(software) elements.

3. Product line architecture: A  software product line  is a set of  software -intensive systems that share a common, managed set of features satisfying the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way. Applies to a set of products within a company Defines element types, how they interact, how the product functionality is mapped to them May also define some of the instances of the architectural Elements. E.g., error-reporting components would be common to many products of the product line