Recently read "software architecture color design" of this book, harvest story, happened to see this online book notes, is reproduced below:
【Title】: Software Architecture Design Press 【】: Electronics Industry Press 【作者】:温昱
Foreword
Before and after Chinese New Year spent nearly two months before the "Software Architecture Design" read one book. Tightly around the book "Software Architecture Design" in this subject, very systematic analysis of the concept of software architecture on a practical software architecture design methods, can give a very complete implementation of the architecture design process. The process of reading this book, will find that people usually brighten the citation or points of view. This notebook will be reading "Software Architecture Design" in the views of extracted essential to carry out once again and finishing the induction. The purpose of writing this note first, in order to strengthen the future of reading this book again when targeted; followed also for their own architecture practice in peacetime the item enough to provide a concise outline of the guidance.
1. Software architecture overview
1.1 What is software architecture
The concept of software architecture ◎ very confusing. If you ask five different people, you may receive five different answers.
◎ the concept of software architecture is divided into two main genres:
Composed of faction: Software Architecture = Components + interactive.
Decision to send: Software Architecture = Key decision-making set.
◎ composition and decision-making to send to send the concept of complementarity.
1.2 Software Architecture and subsystems, the relationship between the framework
◎ complexity are hierarchical. - "The Mythical Man-Month"
◎ good architecture must be designed to put points错落有致Change package to the software system to different parts (ie, separation of concerns).
Through separation of concerns, to "part of the system changes will not affect the other parts" of goals.
◎ software unit size:
* Particle size is usually the smallest unit is "category."
* Some type of close collaboration with the formation of "modules."
* Completion of the relative number of independent functional modules constitute "subsystem."
* A number of subsystems each other in order to meet the needs of a complete application, which constitutes a software "system."
* A large-scale enterprises tend to use many systems, multi-system interoperability through the formation of "integrated system."
◎ software unit size is relative. With a software module, in different scenes, we will look at it a different size.
◎ Architecture (Architecture) is not equal to the framework (Framework).
Framework is only a special kind of software, there is also the framework architecture.
◎ architecture framework can achieve "reuse architecture" purpose such as a lot of people are using the framework provided by Spring IoC and dependency injection to build their own architecture.
1.3 The role of software architecture
◎ If the system architecture of a project (including the theoretical basis) has not yet been determined, there should be a comprehensive development of this system.
- Barry Boehm, "Engineering Context"
◎ defects filled with a system that will always be filled with a defective system.
- Timothy C. Lethbridge, "Object-Oriented Software Engineering"
Software architecture design ◎ Why so difficult?
Because it is across the real world and computer world, a bridge between the divide.
Software architecture design from business-oriented technology for the conversion, at a bridge the gap from shelves.
Demand -> Architecture Design -> Software Architecture -> System -> Software System ~~~~~~~~ ~~~~~~~~
◎ software architecture for new product development role:
* Up for business objectives.
* Decision-making under the access technology.
* Control complexity.
First architecture design, after the detailed design and coding implementation, in line with the "problem based on the depth of divide and rule" concept.
* Organizational development.
Software architecture program at middle group played a "bridge" and "co-operation contract" role.
* Conducive to iterative development and incremental delivery.
To architecture-centric development for incremental deliveries provided a good foundation. At proven architecture, you can focus on the function of the incremental submitted.
* Improve quality.
◎ software architecture of the software product line development role:
* Curing the core of knowledge;
* To provide reusable assets;
* The introduction of products to shorten the cycle;
* Reduce the development and maintenance costs;
* Improve product quality;
* Support for Mass Customization.
◎ software product line: refers to having a set of management, public properties, software-intensive system of collection of these systems to meet specific market demands or mission requirements, and in accordance with the pre-defined from a common set of core assets to be developed.
Software Product Line Architecture: For a company or organization within a range of products designed for general-purpose architecture.
2. Software Architecture Design Method
2.1 Software Architecture Designed For Whom the
◎ architect for the project should be related to different roles and Design:
* Customer is responsible for architect to meet their business objectives and constraints.
* Architect is responsible for the users to meet their functional needs and concerns of the quality of run-time property.
* Architect must take into account in a collaborative division of labor "downstream" developers.
* Architect must consider the "surrounding" the management of personnel, for their division of labor management, coordination and control and evaluate the work of monitoring to provide a clear foundation.
2.2 Friday view law
◎ What is a software architecture view?
Software architecture views are seen from a perspective of the system by simplifying the description, the description covers a particular aspect of the system, and omitted nothing to do with other aspects.
◎ software architecture to cover the content and the decision-making much more than the human brain, "overnight" the ability range, so should adopt the "divide and rule" approach. Through different views to describe the architecture.
◎ software architecture view of the five Law:
* Logical architecture concerns the logic of the functional architecture. Its design focus on functional requirements.
* The development of architecture concerns the development of architecture package. Its design focus on the development phase to consider the quality of property, such as scalability, reusability,
Portability, easy to understand and easy to test and so on.
* Run Architecture
Concerned about the architecture running processes, threads, objects, such as the concept of run-time, as well as related concurrency, synchronization, communication and so on.
Its design focus on the quality of run-time property, such as performance, scalability, continuous availability and security.
* Physical physical architecture of software system architecture concerns finally how to install or deploy to the physical machine. Its design focus on "installation and deployment requirements."
* Data Architecture
Persistent concern about the data architecture of data storage programs. Its design focus on "data needs."
2.3 from the conceptual to the actual architecture architecture
◎ Less Is More (Less is more.). - Mies van der Rohe
◎ conceptual design of system architecture are the original idea.
◎ In general, the actual software architecture design process is to first conduct a conceptual architecture design, the most critical design elements and interactive mechanism to identify and then to consider the use of specific technologies, the design of practical architecture.
2.4 Architecture of the key elements of design and solutions strategy
◎ strategy is the key to victory.
- Chang Ming-cheng, "unstoppable trends"
◎ the best software developers are aware of a secret: what the United States than the ugly things together to create cheaper and more efficient.
- Robert C. Martin, "The Beauty of Software"
◎ time is the life of the system architecture.
- Philippe Kruchten
◎ methods in fear.
◎ face time pressure, we have reason to question the kind of spending regardless of the time, blind pursuit of high-quality software architecture approach. Software architecture are the core of the quality of software systems must be enough, but at the wrong time "time-for-perfection" will ruin the whole project.
◎ design architecture is not "well is successful", but "the fit is successful."
◎ software architecture design of key elements and solution strategies:
Key elements of strategy
------------------------------------ -------------- ---
1. Whether the omission of a crucial non-functional requirements? Comprehensive understanding of the needs.
2. Can tame the enormous quantity and frequent changes in demand? Decide the critical needs of architecture.
3. Can easily design different aspects of software architecture? Explore the multi-view architecture.
4. As soon as possible to verify whether the architecture program and make adjustments? Authentication architecture as soon as possible.
2.5 software architecture to design to what extent
◎ software system architecture encompasses the entire system, even though some parts of the architecture may be only "an inch deep."
- Ivar Jacobson, "Unified Software Development Process Road"
◎ software architecture are the basis for team development.
◎ software architecture to design to what extent?
* Because of the different projects, the different development teams, software architecture design of the degree will be different.
* Software architecture for the development should provide sufficient guidance and restrictions.
◎ go high to high-style architecture designed symptoms:
* Loss of important architecture view.
Omitted some important view, and thus missed out on some of the role of the guidance team.
* 浅尝辄止, not deep enough.
Will be a significant technical risk to the follow-up to the legacy development.
* Name of the layered architecture.
On all floors of the interaction between the interface and interactive design of a serious shortage of mechanisms.
3. Software architecture design process
3.1 Overview of software architecture design process
◎ general software process:
Conceptualization stage -> analysis phase -> architecture design stage -> parallel development and testing phase -> acceptance and delivery phase ─ ─ ┬ ─ ─ ─ ─ ┬ ─ ─ ─ ─ ┬ ─ ─ ─ ─ ─ ─ ┬ ─ ─ ─ ─ ─ ─ ─ ┬ ─ ─ ─
↓ ↓ ↓ ↓ ↓
Executable architecture vision systems demand delivery system
◎ software architecture design process:
Needs analysis -> Domain Modeling -> identification of key demand -> conceptual design architecture -> architecture refinement -> Authentication Architecture │ │ └ ─ ─ ─ ─ ─ ─ ┬ ─ ─ ─ ─ ─ ─ ┘ └ ─ ─ ─ ─ ┬ ─ ─ ─ ┘
│ │ the actual architecture conceptual architecture └ ─ ─ ─ ┬ ─ ─ ─ ─ ┘ └ ─ ─ ─ ─ ─ ─ ─ ┬ ─ ─ ─ ─ ─ ─ ┘
Analysis of stage architecture design phase
3.2 Requirements Analysis
3.2.1 the concept of some
◎ demand needs analysis vs capture vs demand analysis * Capture is the process of access to knowledge, knowledge from scratch.
* Needs analysis are digging and finishing the process of knowledge, it has acquired on the basis of knowledge.
* Systems Analysis? If the needs analysis is committed to "what", then the analysis involves "how to do."
3.2.2 architect must master the demand for knowledge
◎ software architect needs to capture do not have to be experts, but also do not have to be prepared "software requirements specification specification" experts.
But he must be at the demand for classification, the demand for compromise and demand changes are experts in research, he and other software architect as compared to the losers at the "starting line" on.
◎ the type of software requirements
Functional requirements ┌ ┌ property run-time quality software requirements quality property ┤ ┤ ┌
Non-Functional Requirements └ ┤ └ └ property development period the quality bound
◎ software quality classification of property
Run-time performance of the quality of property * (Performance)
* Security (Security)
* Ease of use (Usability)
* The continued availability (Availability)
* Scalability (Scalability)
* Interoperability (Interoperability)
* Reliability (Reliability)
* Robustness (Robustness)
The quality of property development period
* Understandability (Understandability)
* Scalability (Extensibility)
* Reusability (Reusability)
* Test line (Testability)
* Maintainability (Maintainability)
* Portability (Portability)
3.3 Domain Modeling
◎ like "Highly Effective People The Seven Habits of" referred "from the inside out to create their own comprehensive" point of view, the
Treatment of software development, should have "from the inside out to create software" concept.
◎ want on-demand software system吗? Please give the software a Supporting Change the "heart."
◎ What is a domain model?
Domain model is an abstract field of practical problems that it focused on the analysis of problem areas of their own to explore the concept of important business areas, and set up the concept of business relationships.
◎ area of demand modeling and analysis activities are associated with each other and support each other, overlap evolution.
◎ domain model of software architecture as a whole software system to develop job role:
* To explore complex issues, curing the field of knowledge;
* To determine the function of the scope of the impact of scalability;
* Provide basic communicate, and promote effective communication.
3.4 to determine the critical needs of
◎ function, quality and commercial demand for a collection of "mold" the architecture.
- Len Bass, "Software architecture in practice (2nd edition)"
◎ decide the critical needs of architecture, and the remaining demand for architecture verification.
◎ What is the key to the architecture of the software needs?
* The key functional requirements.
* The key to the quality of property demand.
* Key business needs.
◎ How to determine critical needs?
┌> ┐ identification of key functional requirements
● -> comprehensive finishing needs -> Analysis of the demand for binding ┤ ├> ●
└> identification of key quality of the demand for property ┘
3.5 conceptual architecture design
◎ architecture conceptual design steps (three steps to iterative manner):
1. Robustness analysis;
2. To introduce architecture models;
3. The quality of property analysis.
3.5.1 Robustness Analysis
◎ the so-called robustness analysis is such an approach: by analyzing the use case flow of the Statute of the case, identify the implementation requirements of the functional use case requirements for the major objects and their responsibilities, the formation of the main responsibilities of the preliminary design model.
◎ robustness analysis are from the functional requirements to the design over the first step, the access to the preliminary design is an idealized model of responsibility, and its focus is to identify the composition of the advanced functions of software system block, planning their relations.
◎ Robustness analysis of the analysis and design to fill the gap between.
◎ Robust map contains three elements: boundary objects, control objects and entity objects. (See book P196)
3.5.2 the introduction of architecture model
◎ more classic architecture of several modes:
Tiered, MVC, micro-kernel, based on the element model of architecture, plumbing - filter.
◎ points about architecture model Description:
* Avoid the name of the stratified layered architecture, that is, on all levels of interaction between the interface and interaction mechanism for the design of a serious shortage.
* Microkernel disadvantage: the design and implementation complexity; performance lower.
Advantages: scalability, and portability, and software system life cycle length.
3.5.3 Analysis of the quality of property
◎ "property - the scene - the decision-making" table method. For example as follows:
┌ ─ ─ ─ ─ ┬ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┬ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐
Property scene │ │ │ │ decision-making
├ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
│ │ scalable database type can be set up to replace the database access layer │ │
├ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
│ │ to load third-party modules permit the use of plug-in mechanism │ │
├ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
│ ... │ ... │ ... │
└ ─ ─ ─ ─ ┴ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┴ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘
3.6 Architecture Design Refinement
◎ Architecture Refinement manifested mainly in the job five view-based approach to architecture refinement:
Bound ↓
┌ ─ ─ ─ ─ ─ ─ ─ ┐
Domain model -> │ │ Ways view based on the five
The key demand -> │ │ -> Architecture program conceptual framework -> │ │ for architecture refinement
└ ─ ─ ─ ─ ─ ─ ─ ┘
↑
Experience
◎ detailed architecture design of job content:
┌ ─ ─ ─ ─ ─ ─ ─ ┬ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐
Architecture Design view │ │ │ Designed Missions
├ ─ ─ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
Logical Architecture Refinement │ │ functional unit; │
│ │ find common mechanism; │
│ │ the field of model refinement; │
│ │ identified subsystem interface and interaction mechanisms. │
├ ─ ─ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
The development of architecture │ │ sure you want to develop or direct-use package dependencies; │
│ │ to determine the technologies used; │
│ │ identified using the framework. │
├ ─ ─ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
│ │ persistent data architecture of data storage programs; │
│ │ data transfer, data replication, data synchronization strategy (optional). │
├ ─ ─ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
Architecture │ │ run to determine what process and thread the introduction; │
│ │ initiative to identify objects, passive objects, as well as control of the relationship; │
│ │ deal with the process of thread creation, destruction, communication mechanisms, resource contention, etc.; │
│ │ Designed protocol. │
├ ─ ─ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
│ │ to determine the physical structure of the physical configuration; │
│ │ program to determine how the target is mapped to the physical node. │
└ ─ ─ ─ ─ ─ ─ ─ ┴ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘
◎ logic design architecture, "found common mechanism" should be given special emphasis.
Mechanism (Mechanism) are examples of models. Mechanism is the specific context of the recurring problem of a specific solution.
Has a good system architecture with the concept of integrity. Architecture of the system through the establishment of a clear common understanding to discover the abstract and mechanisms. Use this common system so that eventually produced a more simple structure.
3.7 implementation and verify that the software architecture
◎ best strategy must be repeated for verification, testing, flaw found loopholes, and the other approaches and methods being used to want to make up for lack of strategy, and sometimes even a whole to give up, to re-engineer.
- Chang Ming-cheng, "unstoppable trends"
◎ prototype architecture for functional implementation is very limited demand, then the "architecture verification" to verify what?
The answer is to test and verify the architecture of the quality of the degree of support the demand for property, including the quality of run-time property and quality of property development period.
◎ validate the architecture in two ways:
* Prototyping.
For project-oriented development, often using "prototype." That is, to a group of architecture design decisions at non-functional needs to verify the level of satisfaction. The prototype is often the evolution of type, rather than disposable.
* The framework of law.
For Product-type development, the use of "framework law" has many advantages. This method will use the framework of architecture design the form of implementation,
And on this basis to assess the validation. In the framework of implementation, in the framework of implementation on some basic functions, namely, the vertical implementation of a small prototype in order to carry out the actual non-functional testing and development period of evaluation of the quality of property.
(END OF TEXT)







