240 likes | 556 Views
Software Architectures. Lecture 1-2. Course Details. Title: Software Architectures Code: SSZG653 Faculty: PANKAJ VYAS. Scope of the course.
E N D
Software Architectures Lecture 1-2
Course Details Title: Software Architectures Code: SSZG653 Faculty: PANKAJ VYAS
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.
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
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
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.
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
Topic Understanding Software Architecture
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
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
A typical Software Architecture Viewer Composer Protocol Engine Storage Utility Functions
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?
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
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
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
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
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
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
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
Software Arch Importance Communication among stake holders Early design decisions Transferable abstractions of a system
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
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