CS223: Software Engineering Lecture 13: Software Architecture.

Slides:



Advertisements
Similar presentations
ARCHITECTURES FOR ARTIFICIAL INTELLIGENCE SYSTEMS
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Executional Architecture
Implementation Architecture
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Software Systems.
® IBM Software Group © 2006 IBM Corporation Rational Software France Object-Oriented Analysis and Design with UML2 and Rational Software Modeler 04. Other.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Architectural Modeling Notations.
© 2005 Prentice Hall7-1 Stumpf and Teague Object-Oriented Systems Analysis and Design with UML.
Software Connectors. Attach adapter to A Maintain multiple versions of A or B Make B multilingual Role and Challenge of Software Connectors Change A’s.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors Software Architecture Lecture 7.
Unified Modeling (Part I) Overview of UML & Modeling
CS CS 5150 Software Engineering Lecture 13 System Architecture and Design 1.
CS CS 5150 Software Engineering Lecture 13 System Architecture and Design 1.
Essential Software Architecture Ian Gorton CS590 – Winter 2008.
Objectives The key roles an architecture description plays in a software project. The key roles an architecture description plays in a software project.
Chapter 9: Moving to Design
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Siemens’ 4 View Model (props to My-An Nguyen for giving me her 344 notes on which this lecture is based)
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors Software Architecture Lecture 7.
Software Architecture for DSD The “Uses” Relation.
What is Software Architecture?
Ekrem Kocaguneli 11/29/2010. Introduction CLISSPE and its background Application to be Modeled Steps of the Model Assessment of Performance Interpretation.
Documenting Software Architectures
The Design Discipline.
Database System Concepts and Architecture Lecture # 3 22 June 2012 National University of Computer and Emerging Sciences.
Smith’s Aerospace © P. Bailey & K. Vander Linden, 2005 Architecture: Component and Deployment Diagrams Patrick Bailey Keith Vander Linden Calvin College.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
Topics Covered: Software requirement specification(SRS) Software requirement specification(SRS) Authors of SRS Authors of SRS Need of SRS Need of SRS.
An Introduction to Software Architecture
Software Requirements Engineering CSE 305 Lecture-2.
4/2/03I-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Software Architecture and Design Readings: Ambler, Chap. 7 (Sections to start.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
Smith’s Aerospace © P. Bailey & K. Vander Linden, 2005 Architecture: Component and Deployment Diagrams Patrick Bailey Keith Vander Linden Calvin College.
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Lecture 7: Requirements Engineering
CS CS 5150 Software Engineering Lecture 13 System Architecture and Design 1.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
Documenting Software Architectures 1.Uses and Audiences for Architecture Documentation Architecture documentation serves as a means of education Architecture.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
CPSC 372 John D. McGregor Module 3 Session 1 Architecture.
TAL7011 – Lecture 4 UML for Architecture Modeling.
07/09/04 Johan Muskens ( TU/e Computer Science, System Architecture and Networking.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
CS CS 5150 Software Engineering Lecture 13 System Architecture and Design 1.
John D. McGregor Class 4 – Initial decomposition
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
Architectural Design 1. Topics covered  The role of Software Architecture.  Architectural views  Component and Connector view  Architectural Styles.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 15. Review Interaction-Oriented Software Architectures – MVC.
Software Connectors Acknowledgement: slides mostly from Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic,
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors in Practice Software Architecture.
CS223: Software Engineering
Basic Concepts of Software Architecture. What is Software Architecture? Definition: – A software system’s architecture is the set of principal design.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Software Architecture1. 2 Background Any complex system is composed of sub-systems that interact While designing systems, an approach is to identify sub-systems.
Databases and DBMSs Todd S. Bacastow January 2005.
CS223: Software Engineering
Unified Modeling Language
Software Architecture
Analysis models and design models
An Introduction to Software Architecture
Chapter 9 Architectural Design.
Software Architecture Lecture 7
Software Architecture Lecture 7
Software Architecture Lecture 7
Software Architecture Lecture 6
Presentation transcript:

CS223: Software Engineering Lecture 13: Software Architecture

Recap Requirement Engineering Object oriented design SRS writing UML based modeling

Objective After completing this lecture the students will be able to Explain the importance of software architecture Identify the type of architecture to be used in their projects

Definition The complex or carefully designed structure of something.

Architecture It is a design of the software that gives a very high level view of parts and they relate to form the whole o Partitions the sys in parts such that each part can be comprehended independently o And describes relationship between parts A complex system can be partitioned in many diff ways, each providing a useful view o Same holds true of software also o There is no unique structure; many possible

Architecture Software arch is the structure or structures which comprise elements, their externally visible properties, and relationships among them o For elements only interested in external properties needed for relationship specification o Details on how the properties are supported is not important for arch o The defnition does not say anything about whether an arch is good or not – analysis needed for it An arch description describes the different structures of the system

Key Uses of Arch Descriptions Understanding and communication o By showing a system at a high level and hiding complexity of parts, arch descr facilitates communication o To get a common understanding between the diff stakeholders (users, clients, architect, designer,…) o For negotiation and agreement o Arch descr can also aid in understanding of existing systems

Uses… Reuse o A method of reuse is to compose systems from parts and reuse existing parts o This model is facilitated by reusing components at a high level providing complete services o To reuse existing components, arch must be chosen such that these components fit together with other components o Hence, decision about using existing components is made at arch design time

Uses.. Construction and evolution o Some structures in arch description will be used to guide system development o Partitioning at arch level can also be used for work allocation to teams as parts are relatively independent o During s/w evolution, arch helps decide what needs to be changed to incorporate the new changes/features o Arch can help decide what is the impact of changes to existing components on others

Uses… Analysis o If properties like perf, reliability can be determined from design, alternatives can be considered during design to reach the desired perf levels o Sw arch opens such possibilities for software (other engg disciplines usually can do this) o E.g. rel and perf of a system can be predicted from its arch, if estimates for parms like load etc is provided o Will require precise description of arch, as well as properties of the elements in the description

Architectural Views There is no unique arch of a sys There are different views of a sw sys A view consists of elements and relationships between them, and describes a structure The elements of a view depends on what the view wants to highlight Diff views expose diff properties A view focusing on some aspects reduces its complexity

Views… Many types of views have been proposed Most belong to one of these three types o Module o Component and Connector o Allocation The diff views are not unrelated – they all represent the same system o There are relationships between elements of diff views; this relation may be complex

Views… Module view o A sys is a collection of code units i.e. they do not represent runtime entities o I.e. elements are modules, eg. Class, package, function, procedure,… o Relationship between them is code based, e.g. part of, depends on, calls, generalization-specialization,..

Views… Component and Connector (C&C) o Elements are run time entities called components o I.e. a component is a unit that has identity in executing sys, e.g. objects, processes,.exe,.dll o Connectors provide means of interaction between components, e.g. pipes, shared memory, sockets

Views… Allocation view o Focuses on how sw units are allocated to resources like hw, file system, people o I.e. specifies relationship between sw elements and execution units in the env o Expose structural properties like which process runs on which processor, which file resides where, …

Views… An arch description consists of views of diff types, each showing a diff structure o Diff sys need diff types of views depending on the needs o E.g. for perf analysis, allocation view is necessary; for planning, module view helps The C&C view is almost always done, and has become the primary view o We focus primarily on the C&C view o Module view is covered in high level design, whose focus is on identifying modules

Component and Connector View Two main elements – components and connectors Components: Computational elements or data stores Connectors: Means of interaction between comps A C&C view defines the comps, and which comps are connected through which connector The C&C view describes a runtime structure of the system – what comps exist at runtime and how they interact during execution Is a graph; often shown as a box-and-line drawing Most commonly used structure

Components Units of computations or data stores Has a name, which represents its role, and provides it identity A comp may have a type; diff types rep by diff symbols in C&C view Comps use ports (or interfaces) to communicate with others An arch can use any symbols to rep components; some common ones are shown

Some Component examples…

Connectors Interaction between components happen through connectors A connector may be provided by the runtime environment, e.g. procedure call But there may be complex mechanisms for interaction, e.g http, tcp/ip, ports,…; a lot of sw needed to support them Important to identify them explicitly; also needed for programming comps properly

Connectors… Connectors need not be binary, e.g. a broadcast bus Connector has a name (and a type) Often connectors represented as protocol – i.e. comps need to follow some conventions when using the connector Best to use diff notation for diff types of connectors; all connectors should not be shown by simple lines

Connector examples

An Example Design a system for taking online survey of students on campus o Multiple choice questions, students submit online o When a student submits, current result of the survey is shown Is best built using web; a 3-tier architecture is proposed o Has a client, server, and a database components (each of a diff type) o Connector between them are also of diff types

Example…

At arch level, details are not needed The connectors are explicitly stated, which implies that the infrastructure should provide http, browser, etc. The choice of connectors imposes constraints on how the components are finally designed and built

Extension 1 This arch has no security – anyone can take the survey We want that only registered students can take the survey (at most once) o To identify students and check for one-only submission, need a authentication server o Need to use cookies, and server has to be built accordingly (the connector between server and auth server is http with cookies)

Extension 1…

Extension 2 It was found that DB is frequently down For improving reliability, want that if DB is down, student is given an older survey result and survey data stored The survey data given can be outdated by at most 5 survey data points For this, will add a cache comp, which will store data as well as results

Extension 2…

Example… One change increased security, 2 nd increased performance and reliability I.e. Arch level choices have a big impact on system properties That is why, choosing a suitable arch can help build a good system

Thank you Next Lecture: Software Architecture