1. 3. Architecture Description Language (ADL)
1.1. Usages
1.1.1. Describe architecture components and their connections, interface, and configurations
1.1.2. Provides designer with the ability to decompose components, combine components, and define interface of components
1.2. Requirement
1.2.1. Composition
1.2.2. Abstraction
1.2.3. Reuse
1.2.4. Configuration
1.2.5. Heterogeneity
1.2.6. Analysis
1.3. Definition
1.3.1. A notation specification providing syntax and semantics for defining software architecture
1.3.2. A formal specification language with well-defined syntax and semantics
2. 2. Architecture View Models
2.1. The Scenario view
2.1.1. Describes the functionally of the system
2.1.2. How the system provides services to the users
2.1.3. How the user employs the system
2.2. The Logical of Conceptual View
2.2.1. An abstraction of the system's functional requirements
2.2.2. Focuses on functional requirements, the main building blacks, and key abstractions of the system
2.2.3. Decomposition into conceptual entities (such as object) and connection between them
2.3. The Development or Module view
2.3.1. Describes the static organization of the system modules
2.4. The Process View
2.4.1. Focusses on the dynamic aspects of the system, i.e.., its execution time behavior
2.4.2. Contributes to many nonfunctional requirements and quality attributes such a scalability and performance requirements
2.5. The Physical View
2.5.1. Describes installation, configuration, and deployment of the software application
2.5.2. Shows the mapping of software onto hardware
2.5.3. Takes into account the system's non-functional requirements
2.6. The User Interface View
2.6.1. Provides a clear user computer interface view and hides implementation deatails
2.6.2. Provided as a series of screen snapshots or a dynamic, interactive prototype demo
3. 1. UML for Software Architecture
3.1. Definition
3.1.1. A typical object-oriented analysis and design notation tool that provides many useful analysis diagrams and even generates code skeleton
3.1.2. A graphical language for visualizing, specifying, constructing, and documenting the artifacts of a software-intensive system
3.2. Provides several modeling diagrams
3.2.1. Structural Diagrams
3.2.1.1. Class Diagram
3.2.1.1.1. Captures the vocabulary of the design system
3.2.1.1.2. Provides a static view of the system
3.2.1.1.3. Describe each individual class its type, interface, properties, and methods
3.2.1.2. Object Diagram
3.2.1.2.1. Shows a snapshot of class instance connection and interaction
3.2.1.2.2. The instances of classes
3.2.1.2.3. Describe a sample subset of object in the system at a specific point in time
3.2.1.3. Composite Structure Diagram
3.2.1.3.1. Describe the composition of interconnected elements or the collaboration of runtime instances
3.2.1.3.2. Two basis notations
3.2.1.4. Component Diagram
3.2.1.4.1. A deployable, reusable, building block used in software design and development
3.2.1.4.2. Allow the organization of all closely related classes in one container
3.2.1.5. Package Diagram
3.2.1.5.1. Allow the organization of all closely related classes in one container
3.2.1.5.2. Represented by a tabbed folder that indicates where all included classes and sub-packages reside
3.2.1.5.3. Play a similar role as a directory for grouping files in a file system
3.2.1.6. Deployment Diagram
3.2.1.6.1. Depicts the physical configuration of the software system deployed on hardware server nodes and the network between the nodes
3.2.2. Behavioral Diagrams
3.2.2.1. Use Case Diagram
3.2.2.1.1. Describe user requirements in term of system functionality as a contract between the users (actors) and the software system
3.2.2.2. Activity Diagram
3.2.2.2.1. Describe complex business processes
3.2.2.2.2. Involves complex workflow, decision making, concurrent executions, exception handling, process termination,...
3.2.2.3. State Machine Diagram
3.2.2.3.1. Event oriented diagram in which the system's elements change their states in response to external or internal stimuli
3.2.2.3.2. Used for embedded systems and device software analysis design
3.2.2.4. Interaction Overview Diagram
3.2.2.4.1. Describes the control flow of the interactions rather than the message
3.2.2.4.2. Variant of the activity diagram
3.2.2.5. Sequence Diagram
3.2.2.5.1. Time-oriented interaction diagram showing the chronological sequence of message between object
3.2.2.6. Communication or Collaboration Diagram
3.2.2.6.1. Summarizes how object in the system receive and send messages
3.2.2.6.2. Message-oriented diagram that describes all message passing sequences, flow control, object coordination
3.2.2.7. 3.2.2.7 Timing Diagram
3.2.2.7.1. Combines the state diagram and time sequences to show the dynamic view of sate change caused by external events over time