midterm-18653

有关18653-Software Architecture and Design的期中考试复习

Basic questions

What is Software Architecture

Software architecture is a level of design that involves

  • the description of elements from which systems are bulit
  • interactions among those elements
  • patterns that guide their composition
  • constraints on these patterns

Why software architecture is important

  • It has been proved useful for families of system.
  • It can make the complex system flexible and well organized

Various view points

4+1 Views

角度1:从作业2的要求中获取的名词与解析

  • Function View: Show the component diagram, including interfaces and dependencies.
  • Information View: Show the schema, data models and data flows.
  • Deployment View: Where to deploy the software components
  • Development View: main software packages
  • Concurrency View: How do we ensure data consistency in the distributed system

角度2:从课件中获取的名词与解析

  • Logical View: 让普通用户能看懂的示例图,介绍整个系统的主要模块与简单交互。包含了简单地类图,时序图等
  • Development View: 从程序员的角度较宏观得介绍整个系统的组成。包含了包图,类图
  • Process View: 介绍了系统事件处理的流程,介绍整个系统是如何运行的,今儿验证系统的性能。
  • Physical View: 从系统工程师的角度介绍,从物理仪器角度介绍系统的架构。mapping the software to hardware
  • Scenarios: Putting it all together and use them to show the important scenarios

    What does it mean by architecture through software lifecycle?

  • Requirements
  • Design
  • Implementation
  • Analysis and Testing
  • Evolution
  • Development Process

Will architecture design allow creativity?

Yes

Stakeholders

Architects, Developers, Testers, Managers, Customers, Users, Vendors

Basic elements

Component

Defination

A software component is an architectural entity that

  • encapsulates a subset of the system’s functionality and data
  • restricts access to that subset

Connector

Defination

A software connector is an architectural building block tasked with effecting and regulating interactions among components

Taxonomy

4 main roles

Communication, Conversion, Facilitation, Coordination

8 main types

Event, Stream, Procedure Call, Arbitrator, Data Access, Distributor, Linkage, Adaptor

Benefits of first-class connectors

Software evolution, separation of concerns, modularity, pluggability

Configuration

An architectural configuration, or topology, is a set of specific associations between the components and connectors of a software system’s architecture

Rationale

Rationale is the information that explains why particular architectural decisions were made, and what purpose various elements serve

Architectural sytles and patterns

Architectural sytles

Defination

A set of architectural desgin decisions that

  • are applicable in a given deveopment context
  • constrain architectural design decisions that specific to a particular system within that context
  • elicit beneficial qualities in each resulting system

Example

详见另一篇文章。

Architectural patterns

Defination

A set of architectural design decisions that are applicable to a recurring design problem, and parameterized to account for different software development contexts in which that problem appears.

Example

3-tier (Stage-Logic-Display), MVC, Sense Compute Control

Comparisons of style and pattern

Compared to styles, architectural patterns are at a coarser level of granularity (design decisions versus actual architectural elements) and are inherently more domain specific

Methods of evaluating design methods like styles and patterns

Vocabulary, structural patterns, computational model, invariants, common examples, disadvantages, specializations

Methods of design

Greenfield design

这里指的是大家对一个领域都没有经验,就需要用一系列方法不断学习或者试错找出最优解,常用的方法有:
Analogy searching, Brainstorming, Literature searching, Morphological Charts, Removing Mental Blocks, Insight from requirements/implementation

Architectural Modeling

Defination

  1. An architectural model is an artifact that captures some or all of the design decisions that comprise a system’s architecture
  2. Architectural modeling is the reification and documentation of those design decisions

How to choose what to model?

Cost/Benefit Decision

What do we model?

Structure (Architectural element), static/dynamic behaviors, functional/non-functional aspects, Views/Viewpoints

Important things to “get right”

  • Ambiguity: A model is ambiguous if it is open to more than one interpretation
  • Accuracy: A model is accurate if it is correct, conforms to fact, or deviates from correctness within acceptable limits.
  • Precision: A model is precise if it is specific, detailed and exact.

How do we evaluate modeling techniques?

Scope/Purpose, Basic Elements, Style, Static/Dynamic Aspects, Dynamic Modeling

Service Oriented Architecture

Concept of SOA

SOA is a business IT aligned approach in which applications rely on available services to facilitate business processes. It guides the establishment of a loosely coupled system with flexibility and extensibility.

Services Computing

  • bridges the gap between business and IT
  • promises to benefit business
  • enable reusable, scalable software as services on the internet

SOA on a Bilateral View

  • Top-Down Approach: decompose business components into business process each been realized by IT process
  • Bottom-Up Approach: provides SOA based IT resources, which can be seamlessly integrated to rapidly. Create new business processes that lead to new business opportunities.

Enterprise Service Bus(ESB)

ESB is a conceptual software infrastructure that facilitates dynamic integration, message routing and their interactions, which paves a new systematic way of constructing and deploying enterprise services.

SOA-RA

SOA-RA partitions an SOA-based system into a reusable architecture components

Enterprise SOA Abstraction Layers

  • Business Process Layer
  • Business Services Layer
  • Component Layer
  • Legacy Object Integration Layer
soa-ra.jpg

ATAM

Quality attribute

  • Performance
  • Modifiablity
  • Availability
  • Security

9 steps

  • Step 1: Present ATAM
  • Step 2: Present Business Drivers
    • Business context for the system
    • High-level functional requirements
    • High-level quality attribute requirements
  • Step 3: Present the Architecture
    • Technical constraints such as an OS, hardware
    • Architectural styles used to address quality attribute requirements
  • Step 4: Identify Architectural Approaches
    • client-server, 3-tier, proxy, publish-subscribe
  • Step 5: Generate Utility Tree and scenario
  • Step 6: Analyze Architectural Approaches
    • risk & non-risk
    • sensitivity: A property of a component that is critical to success of system
    • tradoff: A property taht affects more than one attribute or sensitivity point
  • Step 7: Brainstorm & Prioritize Scenarios
  • Step 8: Analyze Architectural Approaches
  • Step 9: Present ATAM results
    • Architectural approaches
    • Utility tree
    • Scenarios
    • Risk and non-risks
    • Sensitivity points and tradeoffs

People, Roles and Teams

Architect desired skills

  • Software development expertise
  • Domain expertise
  • Communicator
  • Strategist
  • Consultant
  • Leader
  • Technologist
  • Cost estimator
  • Cheerleader
  • Politician
  • Salesperson