Modeling and Documenting Software Architectures Hany H Ammar
- Slides: 45
ﺑﺴﻢ ﺍﻟﻠﻪ ﺍﻟﺮﺣﻤﻦ ﺍﻟﺮﺣﻴﻢ ﻭﺍﻟﺼﻼﺓ ﻭﺍﻟﺴﻼﻡ ﻋﻠﻰ ﺭﺳﻮﻝ ﺍﻟﻠﻪ ، ﺍﻟﺤﻤﺪ ﻟﻠﻪ Modeling and Documenting Software Architectures Hany H. Ammar, Professor, LANE Department of Computer Science and Electrical Engineering West Virginia University, Morgantown, West Virginia, USA, and Faculty of Computers and Information, Cairo University, Cairo, Egypt Modeling and Documenting Software Architectures 1
OUTLINE • Introduction • Documenting Software Architectures: Views and Beyond (From: Comparing the SEI’s Views and Beyond Approach for Documenting Software Architectures with ANSI-IEEE 1471 -2000 Paul Clements July 2005, Software Architecture Technology Initiative Technical Note. CMU/SEI-2005 -TN-017), and Clements, P. ; Bachmann, F. ; Bass, L. ; Garlan, D. ; Ivers, J. ; Little, R. ; Nord, R. ; & Stafford, J. Documenting Software Architectures: Views and Beyond. Boston, MA: Addison-Wesley, 2003. ) • Architecture Styles Modeling and Documenting Software Architectures 2
Introduction • A software architecture determines the blueprint for the project and the team developing the software. • Teams are formed around architectural elements, which are the units of implementation, unit testing, integration, configuration management, documentation, and a host of other activities. • Unlike code, architecture is a design artifact largely intended for use and analysis by humans. • Hence, representing the architecture in a readable, accessible fashion for its stakeholders becomes an issue of great importance. • Architecture gives the marching orders to implementers, telling them what pieces to build and how those pieces should behave and interact with each other. Modeling and Documenting Software Architectures 3
Introduction • The Architecture determines the project structure for managers, who use it to plan, schedule, and budget. • It gives the first glimpse of the system to maintainers who must change the architecture and new team members who must become familiar with it. • Therefore, architecture documentation has emerged as an important architecture-related practice. • Researchers at the Carnegie Mellon® Software Engineering Institute (SEI) published “Documenting Software Architectures: Views and Beyond” , a book published by Addison-Wesley, 2003. Modeling and Documenting Software Architectures 4
“Documenting Software Architectures: Views and Beyond” • Documenting a software architecture is a matter of – Choosing a set of relevant views of the architecture, – Documenting each of those views, and then – Documenting information that applies to more than one view or to the set of views as a whole. • The last step ties the views together and makes them become a holistic and integrated representation of the architecture, as opposed to disjoint snapshots taken from different angles. • The detailed approach includes a method to choose the most relevant views, standard templates for documenting a view and documenting the information beyond views, and definitions of the templates’ content. Modeling and Documenting Software Architectures 5
“Documenting Software Architectures: Views and Beyond” • Why a Multi-View Approach ? – Modern software architecture practice embraces the concept of architectural views (The IEEE 1471 standard), – A view is a representation of a set of system elements and the relations associated with them. – Views are representations of the many system structures present simultaneously in software systems. – Modern systems are too complex to be grasped all at once. Instead, we restrict our attention at any one moment to one (or a small number) of the software system’s structures, which we represent as views. Modeling and Documenting Software Architectures 6
“Documenting Software Architectures: Views and Beyond” • Different Kinds of Views – There is an almost unlimited supply of views to choose from. – To lend some order to an otherwise chaotic collection of possible views, it’s helpful to think about views in groups (viewpoints), – according to the kind of information they convey: 1. Module views describe how the system is to be structured as a set of code units. 2. Component-and-connector (C&C) views describe how the system is to be structured as a set of interacting runtime elements. 3. Deployment or Allocation views describe how the system relates to non-software structures in its environment. Modeling and Documenting Software Architectures 7
“Documenting Software Architectures: Views and Beyond” • Different architectural styles – One might show the hierarchical decomposition of the system’s functionality into modules or, – show the system is arranged into layers; another might show the system accomplishes work through communicating processes or the interaction of clients and servers. – Still another might show software elements are deployed onto hardware processing and communication nodes. – A style is a specialization of element types (e. g. , “client, ” “layer”) and relationship types (e. g. , “is part of, ” “request-reply connection, ” “is allowed to use”), along with any restrictions (e. g. , “clients interact with servers but not each other” or “all the software comprises layers arranged in a stack such that each layer can only use software in the next lower layer”). Modeling and Documenting Software Architectures 8
“Documenting Software Architectures: Views and Beyond” • Steps of the methodology: – Step 1: Produce a Candidate View List • Build a stakeholder/view table for your project. • Enumerate the stakeholders for your project’s software architecture documentation down the rows. • Enumerate the views that apply to your system. Some views (e. g. , decomposition, uses, and work assignment) apply to every system, while others (e. g. , pipe and-filter, layered) only apply to systems designed according to the corresponding styles. Modeling and Documenting Software Architectures 9
“Documenting Software Architectures: Views and Beyond” • Steps of the methodology (Cont. ): – Step 2: Combine Views • The candidate view list from Step 1 is likely to yield an impractical number of views. Step 2 winnows the list to a manageable size. • First, look for views in the table that require only overview depth or that serve very few stakeholders. See if the stakeholders could be equally well served by another view that has a stronger constituency. • Next, look for views that are good candidates to become combined views. A combined view shows information native to two or more separate views. A rule of thumb is that if there is a strong correspondence between the elements in two views, they are good candidates to be combined. Modeling and Documenting Software Architectures 10
“Documenting Software Architectures: Views and Beyond” • Steps of the methodology (Cont. ): – Step 3: Prioritize • After Step 2, you should have the minimum set of views needed to serve your stakeholder community. At this point, you need to decide what to do first. • For example, some stakeholders’ interests supersede others. The project manager of a company you are partnering with often demands attention and information early and often, and you may want to cater to his/her needs first. Modeling and Documenting Software Architectures 11
“Documenting Software Architectures: Views and Beyond” • Templates for Views and Information Beyond Views Modeling and Documenting Software Architectures 12
“Documenting Software Architectures: Views and Beyond” • Template for the View Packet: the documentation for it is placed into a standard organization or template comprising seven parts: 1. A primary presentation shows the elements and relationships among them that populate the portion of the view shown in this view packet. The primary presentation should contain the information you wish to convey about the system (in the vocabulary of that view) first. The primary presentation is usually graphical. If so, it must be accompanied by a key that explains or points to an explanation of the notation. 2. An element catalog details the elements (and their properties, including interfaces) depicted in the primary presentation. In addition, if elements or relations relevant to this view packet were omitted from the primary presentation, the catalog is where they are introduced and explained. Modeling and Documenting Software Architectures 13
“Documenting Software Architectures: Views and Beyond” Template for the View Packet (Cont. ): 3. A context diagram shows how the system (or portion of the system) depicted in the primary presentation relates to its environment. 4. A variability guide shows how to exercise any variation points that are part of the architecture shown in this view packet. 5. An architecture background or rationale explains why the design reflected in the view packet came to be. 6. An “other information” section contains items that vary according to the standard practices of each organization or the needs of the particular project. Modeling and Documenting Software Architectures 14
“Documenting Software Architectures: Views and Beyond” Modeling and Documenting Software Architectures 15
“Documenting Software Architectures: Views and Beyond” • Template for Documentation Beyond Views: The final piece of architecture documentation is the information that applies to more than one view and to the entire package. It ties together the views and provides a holistic picture of the total design. 1. Documentation roadmap. The documentation roadmap is the reader’s introduction to the information that the architect has chosen to include in the suite of documentation. – A roadmap begins with a brief description of each part of the documentation package. – For each view in the package, the roadmap gives a brief description of the view’s element types, relation types, and property types, its purpose, and its stakeholders. Modeling and Documenting Software Architectures 16
“Documenting Software Architectures: Views and Beyond” Template for Documentation Beyond Views (Cont. ): 2. View template. A view template is the standard organization for a view. Its purpose is to help a reader navigate quickly to a section of interest. 3. System overview. A system overview is a short prose description of what the system’s function is, who its users are, and any important background or constraints. The purpose is to provide readers with a consistent mental model of the system and its purpose. 4. Mapping between views. This shows the correspondence between individual elements in different views. Helping a reader or other consumer of the documentation understand the relationship between views will help that reader gain a powerful insight into how the architecture works as a unified conceptual whole. 5. Directory. The directory is simply an index of all the elements, relations, and properties that appear in any of the views, along with a pointer to where each one is defined and used. Modeling and Documenting Software Architectures 17
“Documenting Software Architectures: Views and Beyond” Template for Documentation Beyond Views (Cont. ): 6. Project glossary and acronym list. The glossary and acronym list define terms unique to the system that have special meaning. These lists, if they exist as part of the overall system or project documentation, might be given as pointers in the architecture package. 7. Cross-view rationale. This section documents the reasoning behind decisions that apply to more than one view. Prime candidates for cross-view rationale include documentation of background or organizational constraints that led to decisions of system-wide import. Modeling and Documenting Software Architectures 18
Documenting Software Architectures: Examples • Course Registration System • Web Curator Tool Modeling and Documenting Software Architectures 19
“Documenting Software Architectures: Views and Beyond” • Where is the concept of viewpoints as specified in the 1471 standard? – Viewpoints correspond most closely to architectural styles. – A style is defined by the elements, relations, and properties that should be used in documenting a system built using that style. – By extension, a viewpoint definition can be provided by a style guide. – A style guide defines the elements, relationships, and restrictions inherent in the style, and contains a section noting what it’s for and not for (which should help users in deciding what concerns will be addressed), as well as a section on notations and analysis techniques useful for working with that style. Modeling and Documenting Software Architectures 20
OUTLINE • Introduction • Documenting Software Architectures: Views and Beyond (From: Comparing the SEI’s Views and Beyond Approach for Documenting Software Architectures with ANSI-IEEE 1471 -2000 Paul Clements July 2005, Software Architecture Technology Initiative Technical Note. CMU/SEI-2005 -TN-017), and Clements, P. ; Bachmann, F. ; Bass, L. ; Garlan, D. ; Ivers, J. ; Little, R. ; Nord, R. ; & Stafford, J. Documenting Software Architectures: Views and Beyond. Boston, MA: Addison-Wesley, 2003. ) • Architecture Styles Modeling and Documenting Software Architectures 21
Architecture Styles or Patterns • There is a number of styles or patterns that has been defined and used in many software systems Notable examples are: 1. Independent Components: Event-based Architecture 2. Virtual Machines 3. Data Flow: Pipes and Filters 4. Data-Centered Systems 5. Call-and Return Architectures Modeling and Documenting Software Architectures 22
Architectural Styles Grouped Into Five Families 1. Independent Components. SW system is viewed a set of independent processes or objects or components that communicate through messages. Two subfamilies: - Event based systems (implicit and direct invocation style), and - Communicating processes family. Modeling and Documenting Software Architectures 23
Architectural styles: Event-based Architecture Some processes post events, others express an interest in events Modeling and Documenting Software Architectures 24
Event-based Architecture Implicit Invocation: The Observer Pattern
Modeling and Documenting Software Architectures 26
Modeling and Documenting Software Architectures 27
Another Example: Lunar Lander Game Players Subscribers register to the Game Server that Publishes information on new Lunar Terrain data, new spacecraft, and the locations of currently registered space crafts Component-connector notation
Architectural Styles: Virtual Machines 2. Virtual Machines. Originated from the concept that programs are treated as data by a virtual machine, which is an abstract machine implemented entirely in software, that runs on top of the actual hardware machine. ex rule-based style. Modeling and Documenting Software Architectures 29
Architectural Styles Virtual Machines
Virtual Machines: The primary benefits are the separation between instruction and implementation, (Used when inputs are defined by a script and data) Example: Java Virtual Machine. Java code translated to platform independent bytecodes. JVM is platform specific and interprets (or compiles -JIT) the bytecodes. Modeling and Documenting Software Architectures 31
Architectural Styles: Data Flow 3. Data Flow. Include batch sequential systems (BSS) and pipes and filters (PF). – - BSS: different components take turns at processing a batch of data, each saving the result of their processing in a shared repository that the next component can access. Ex. Dynamic control of physical processes based on a feedback loop. - PF: A stream of data processed by a complex structure of process (filters). Ex, UNIX. Modeling and Documenting Software Architectures 32
Architectural Styles: Data Flow Control Loop Modeling and Documenting Software Architectures 33
Modeling and Documenting Software Architectures 34
PF Another Architecture Example: Watch for the Two Views Modeling and Documenting Software Architectures 35
Architectural Styles 4. Data-Centered Systems. Consist of having different components communicate through shared data repositories. When data repository is an active repository that notifies registered components of changes in it then-blackboard style. Modeling and Documenting Software Architectures 36
Data-Centered Architectural Styles Repository Architecture Style
Styles Repository Architecture Example: CASE Tools Example
Data-Centered Architectural Styles Repository Architecture Example: Compiler Architecture
Data-Centered Systems: Central data repository Components perusing shared data, and communicating through it. Used in Database intensive systems Modeling and Documenting Software Architectures 40
Architectural styles 5. Call-and Return Architectures. Due to heir simple control paradigm and component interaction mechanism , these architectures have dominated the SW landscape by the early decades of the SW Eng. There are several styles within this family: examples are main program and subroutine, and layered architectures. -) Main Program and Subroutine Style. Programs are modularized based on functional decomposition, single thread of control held by the main program, which is then passed to subprograms, along with some data on which the subprograms can operate. Modeling and Documenting Software Architectures 41
Main Program and Subroutine Style Register. exe Course registration System example People. Info Course Student. Info Professor. Info Course. Offering Modeling and Documenting Software Architectures 42
Architectural styles -) Layered. Functionality is divided into layers of abstractioneach layer provides services to the layer(s) above it, and uses the services of layer(s) below it. In its purest form, each layer access only the layer below it, but does not depend on lower layers. Modeling and Documenting Software Architectures 43
Layered Architectural styles Example of a Layered Application Architecture
SW Systems-Mix of Architecture Styles • • Most SW systems use a mix of architecture styles. Ex, personnel management system with a scheduling component, implemented using the independent component style, and a payroll component, using the batch sequential style. Choosing a style to implement a particular system depends on several factors. The technical factors concern the level of quality attributes that each style enables us to attain. EX, event-based systems-achieve very high level of evolvability, at the expense of performance and complexity. Virtual-machine style-achieve very high level of portability, at expense of performance and perhaps even testability. Modeling and Documenting Software Architectures 45
- Hany ammar
- Hany ammar
- Hany ammar
- Modeling and role modeling theory
- Iso 26000 7 core subjects
- Ammar pronunciation
- Ammar yaseen
- Dr ammar attiya
- Zookeeper ammar
- Ammar mirascija
- Kevin gimpel
- Ammar sultan
- Relational vs dimensional data modeling
- Documenting use cases
- Fdar sample charting
- Week by week plans for documenting children's development
- Documenting maine jewry
- Documenting java code
- Database storage architecture
- Autoencoders, unsupervised learning, and deep architectures
- Trigonometria érettségi feladatok
- Rfolyam
- Hány szó van a magyar nyelvben
- Hány féle aminosav építi fel a fehérjéket
- Négyzetméter négyzetdeciméter
- Vízbontás endoterm
- Elektron hejak
- Hany el kateb
- Product architecture
- Ansi sparc
- Switched backbone networks
- Scalable internet architectures
- Product architecture design
- Gui architectures
- Database system architectures
- Cdn architectures
- Aaron bannert
- Different olap architectures
- Accumulator isa example
- System architecture of e commerce website
- Distributed systems architectures
- Backbone network architectures
- Cache coherence for gpu architectures
- Why systolic architectures
- Plasma modeling software
- Context models in software engineering