final-18653

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

总体介绍

  • Basic concepts
  • Architectural styles
  • Design patterns
  • ATAM

Basic concepts

Architecture Standards

What are Standards

A form of agreement between parties. There are many kinds of standards, such as notations, tools, processes…

Pros and cons of standards

Why use standards

  • To ensure interoperability between products developed by different organizations
  • To carry hard-won engineering knowledge from one project to another
  • As an effort to attract tool vendors
  • To attempt to control the standard’s evolution in your favor
    Drawbacks of standards
  • Limits your agility
  • Standards often attempt to apply the same techniques to a too-broad variety of situations
  • The most widely adopted standards are often the most general

Pros and cons of early adoption(早期采用Standards的优劣)

Benefits

  • Improved ability to influence the standard
  • Early to market.(If standard becomes successful, early marketers will profit)
  • Early experience
    Drawbacks
  • Risk of failure
  • Moving target(Early standards tend to evolve, and maybe buggy)
  • Lack of support

Prevalent Architectural Standards

IEEE 1471

  • Recommended practice for architecture description
  • Scope is limited to architecture descriptions
  • Identifies the importance of stakeholders and advocates models that are tailored to stakeholder needs
  • Very high level and useful as a starting point

DoDAF

Basic Knowledge

  • Short for Department of Defense Architecture Framework
  • Contains three views, and identifies specific viewpoints that should be captured
    • Operational View: Identifies what needs to be accomplished, and who does it
    • System View: Describe the systems that provide or support operational functions and interconnections between them.
    • Technical Standards View: Identify standards, (engineering) guidelines, rules, conventions, and other documents
  • Takes a high-level organizational perspective
  • Tells us a lot about WHAT to model, but nearly nothing about HOW to model it

TOGAF

Basic Knowledge

  • Short for The Open Group Architecture Framework
  • An enterprise architecture framework
    • Focus beyond hardware/software
    • How can enterprises build systems to achieve business goals
  • Four key areas addressed
    • Business concerns: address business strategies, organizations, and processes;
    • Application concerns: address applications to be deployed, their interactions, and their relationships to business processes;
    • Data concerns: address the structure of physical and logical data assets of an organization and the resources that manage these assets; and
    • Technology concerns: address issues of infrastructure and middleware.

UML

Basic Knowledge

  • Short for Unified Modeling Language
  • A general-purpose, developmental, modeling language in the field of software engineering(WIKI)
  • Provide a common syntactic framework to express many common types of design decisions
  • Documenting a system in UML does not ensure overall system quality

Microservices

Software monolith

Defination

A Software Monolith is a system that has

  • One build and deployment unit
  • One code base
  • One technology stack

Pros and Cons

Benefits

  • Simple mental model for developers
  • Simple scaling model for operations

Drawbacks

  • Huge and intimidating code base for developers
  • Development tools get overburdened
  • Scaling is limited
    • Running acopy of the whole systemis resource-intense
  • Deployment frequency is limited
    • Re-deploying means halting the whole system

Microservices

Defination

A microservices architecture puts each element of functionality into a separate service…

Pros and Cons

Benefits

  • Simple and lightweight
  • services decoupled, easy to scaling and re-deploying

Drawbacks

  • API cannot be changed between microservices

SOA vs Microservices

SOA
Focus on functionla decomposition, but

  • services are not required to be self-contained with data and UI
  • It is often thought as decomposition within tiers
  • does not focus on independent deployment units

Microservices
can be seen as SOA-the good parts

Why SOA is moving toward microservices(PPT上没找到,自己整理的)

  • Microservices are the first post-DevOps revolution architecture.
  • Microservices make change less expensive.
  • Microservices enable unique opportunities.

Some discussions of using Spring Cloud for SOC project.

看作业

Design patterns

具体见另一篇Blog,总之要理解所有的设计模式

  • Understand every design pattern
  • Study homework & projects

Architectural Styles

具体见另一篇Blog

  • Understand every style
  • Study homework & projects

Implementing Architectures

Mapping problem of design decisions to implementation artifacts (code, executables, etc.)

Common Element Mapping

Components and Connectors

  • Partitions of application computation and
    communication functionality
  • Modules, packages, libraries, classes

    Interfaces

  • Programming-language level interfaces are common
  • State machines or protocols are harder to map

    Configurations

  • Interconnections, references, or dependencies
    between functional partitions
  • May be implicit in the implementation
  • May involve use of reflection

One-way vs Round Trip mapping

  • One-way mappings are easier
    • Must be able to understand impact on implementation for an architectural design decision or change
  • Two way mappings require more insight
    • Must understand how a change in the implementation impacts architecture-level design decisions

Architecture Implementation Frameworks

Defination

An architecture implementation framework is a piece of software that acts as a bridge between a particular architectural style and a set of implementation
technologies.

It provides key elements of the architectural style in code, in a way that assists developers in implementing systems that conform to the prescriptions and constraints of the style.

How to make decision

Evaluate frameworks

  • Platform support
  • Fidelity
    • How much style-specific support is provided by the framework?
  • Other quality considerations
    • Size, Cost, ease of use, reliability, robustness, protability

Non-Functional Properties(NFPs)

Designing for Non-Functional Properties (NFPs)

A software system’s non-functional property (NFP) is a
constraint on the manner in which the system implements
and delivers its functionality

Example NFPs

– Efficiency
– Complexity
– Scalability
– Heterogeneity
– Adaptability
– Dependability