有关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