1 / 22

Software Architectures

Software Architectures. Lecture 1-2. Course Details. Title: Software Architectures Code: SSZG653 Faculty: PANKAJ VYAS. Scope of the course.

prentice
Download Presentation

Software Architectures

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Architectures Lecture 1-2

  2. Course Details Title: Software Architectures Code: SSZG653 Faculty: PANKAJ VYAS

  3. Scope of the course To understand architectural abstractions, localizing and codifying the ways components interact, and distinguish among the various ways in which architectural principles can be applied to software system and analysis and design. To present a pattern-oriented approach to software architecture, without restricting to a particular paradigm say, object oriented.

  4. Learning Principle • Learning principle • “… You can know the name of a bird in all the languages of the world, but when you’re finished, you’ll know absolutely nothing whatever about the bird. You’ll only know about humans in different places, and what they call the bird, So let’s look at the bird and see what it’s doing – that’s what counts” • Richard P Feynman (Book: What Do You Care What Other People Think) Decide what you would like to focus on

  5. Course Objectives • To illustrate the current state of the discipline of Software Architecture and examine the ways in which architectural design can affect software design • To explain the importance of nonfunctional requirements in terms of quality attributes of a system • To study the various architectural styles used in software engineering • To understand the evaluate designs of existing software systems from an architectural perspective • To provide the intellectual building blocks for designing new systems in principled ways, using well-understood architectural paradigms • To present concrete examples of actual system architectures that can serve as model for new designs

  6. Text Books Len Bass, et al, Software Architecture in Practice, Pearson, Second Edition, 2003. Buschmann, F. et al, Pattern Oriented Software Architecture – Volume1, Wiley, 1996.

  7. References • Stephen T. Albin, The Art of Software Architecture, Wiley Dreamtech, 2003. • Jeff Garland et al, Large Scale Software Architecture: A Practical Guide Using UML, Wiley Dreamtech, 2003. • Alan Shalloway and J R Trott, Design Patterns Explained, Pearson, 2004 • Mary Shaw & David Garlan, Software Architecture – Perspectives on an Emerging Discipline, PHI, 1996. • Gamma, E. et. Al. Design Patterns: Elements of Reusable Object Oriented Software, Addison Wesley, 1995

  8. Topic Understanding Software Architecture

  9. Software Architecture Definition 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 (Ref: Bass, Clements and Kazman, Software Architecture in Practice, 2nd edition) Software Architecture is “a description of the subsystems and components of a software system and the relationships between them”. Architecture thus attempts to define the structure “the way in which something is constructed or organised” SWEBOK, 2004, Chapter 3 Software Design, Pg 3-3

  10. Software Architecture Definition 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 (Ref: Bass, Clements and Kazman, Software Architecture in Practice, 2nd edition) Software Architecture is “a description of the subsystems and components of a software system and the relationships between them”. Architecture thus attempts to define the structure “the way in which something is constructed or organised” SWEBOK, 2004, Chapter 3 Software Design, Pg 3-3

  11. A typical Software Architecture Viewer Composer Protocol Engine Storage Utility Functions

  12. What’s clear? System has 5 elements Position of elements shows some properties. What’s visible? What’s not visible? Layered? Elements have a relationship Is this complete architecture? Is everything clear? Is there anything missing? What’s missing?

  13. Unclear from diagram • Nature of elements • Significance of separation • Contain process or programs or both • Runtime separation or division of labour • Clarity of the blocks; objects, tasks, functions, processes, distributed programs or something else • Responsibilities of each element • Their function; what do they do? • How does their function relate to the system

  14. Unclear from Diagram • Significance of connections • Signify control or data, invoke each other, synchronization • Mechanism of communications • Significance of layout • Does level shown signify anything • Was the type of drawing due to space constraint

  15. Properties of Architecture • Externally visible – those assumptions other elements can make of an element • A few of these properties • Services provided • Performance characteristics • Fault handling • Shared resource usage

  16. Architecture Definition Implications Architecture defines Software elements Systems can and do comprise of more than one structure Every computing system with software has a software architecture The behaviour of each element is a part of the architecture The architecture of a system is a good one or a bad one

  17. Some more views • Architecture • Is a high level design • Is the overall structure of the system • Is the structure of the components of a program or system, their interrelationships, and the principles and guidelines governing their design and evolution over time • Is components and connectors

  18. Patterns, Model and Reference Arch An architectural pattern is a description of element and relation types together with a set of constraints on how they may be used A reference model is a division of functionality together with data flow between the pieces A reference architecture of a reference model mapped onto software elements (that cooperatively implement the functionality defined in the reference model) and the data flows between them

  19. Patterns, Model and Reference Arch Reference Model Reference Architecture Software Architecture Architectural Pattern Reference models, architecture patterns and reference architectures are not architectures; they are useful concepts that capture elements of an architecture

  20. Software Arch Importance Communication among stake holders Early design decisions Transferable abstractions of a system

  21. Stake holder communication • Architecture provides a common language in which different concerns can be expressed, negotiated and resolved • Customer, User, Project Manager, Development Engineer, Test Engineer … • On schedule and on budget: Customer • On schedule, on budget, work split among teams: Manager • Reliable, available, easy to use: User • Helps make early decisions • Architectural analysis depends on communication

  22. Manifests earliest set of design decisions • The architecture • Defines constraints on implementation • Dictates organization structure • Inhibits or Enables a system’s quality attributes • Enables predicting system qualities • Makes it easier to reason about and Manage Change • Helps in evolutionary prototyping • Enables more accurate cost and schedule estimates

More Related