As the components in the software industry into the assembly industry (software component industry) in the process of their designers continue to find components of the desired component of the applications environment and application software division software architecture often can not be perfectly integrated together, leading to Application Software division is difficult to flexibly reuse (reuse) another design components, resulting in growth of the software component industry bottlenecks. OO software experts are also increasingly aware of their problem is that the main structure of the software from the mismatched (mismatch).
The importance of the primary structure of the software is not showing up today, 20 years ago, software master Fred. P. Brooks mentions: software design among participants, the design concept must be consistent (conceptual integrety) to create a simple and friendly software, while he also stressed that the concept of software to achieve the same primary structure in the process of living in a central role. 20 years old this issue is still OO Software division today must strive to overcome.
To keep up with it, must know what it is. I will first introduce some concepts related to knowledge:
1. Architecture (Architecture)
Architecture can also be referred to as architecture, the so-called software architecture, according to Perry and Wolfe definition: Software Architecture = (Elements, Forms, Rationale / Constraint), which is the main software component architecture = (element, element of mutual assistance and cooperation of the model, based on requirements and limitations). Philippe Kruchten using the above definition, and describes the design of the main structure is: will the component elements of the ideal model of cooperation in some organized, in order to achieve the system's basic functions and limitations. Architecture is divided into a variety of styles such as Pipes and Filters, etc..
2. Framework (Framework)
Framework can also be referred to as application architecture, framework of the general definition is: in a particular area can be re-based architecture design. Also that the framework is under architectures in specific areas of application. Framework of the well-known example is the MVC.
3. Library (Library)
Library should be reusable, a collection of resources for mutual cooperation for the development of staff to repeat calls. The main difference between it and the frame is called run-time relationship with the program. Library is invoked by program, but the framework of the caller. Good library with JDK.
4. Design Patterns (Design Pattern)
We should be very familiar with design patterns, especially the book written by the Gang of Four is known. "Gang of Four" will model described as "a certain environment to solve a problem of the program." These three things - issues, solutions and the environment - the basic elements of the pattern. To model a name, consider using the model will produce results and to provide one or more examples of models for the shows are also useful.
5. Platform (PlatForm)
Posed by a variety of systems, which can include hardware.
The concept for more than a more clear understanding of, the software can be applied development process. Theory and practice are indispensable and complementary. No theoretical guidance, based on the lack of practice; no practical Di proof theory on the lack of merit, so I always thought: For the contemporary De programmers, Zaiyouyiding practical base Must study after more deeply the theory of knowledge . Whether you are first starting to learn from that side.
In the software development process, from the practice of many processes and methods, generally can be extracted from the five major steps: requirements analysis, design, coding, testing. The architecture is the software framework, is the most important foundation. Architecture is involved in every step. Generally required to obtain the same time, you should start analyzing the software architecture. Architecture is different now generally combined into larger modules, and then describe the relationship between the parts.
I generally think that framework is the architecture of each module in smaller structures. If you need that web technology, will use MVC framework, web function is the entire software system in a functional module. Each frame can have many instances, such as the implementation of the MVC framework with java structs.
Under the framework is in the design pattern, design patterns are usually applied in the framework, and also can be said to complement the framework. Because the framework is to provide an environment, we need to fill more things inside me. Whether application of the design mode, you can achieve the functions of the software, and correct application of design patterns, is our previous method of software design or implementation of a succession, so that your software is more flexible.
Architecture can be analyzed from a different perspective, so the software architecture design can follow different perspective to the. Discourse by 4 +1 views, it is the four views: logical, development, process, physical and scenes. So architecture is gradually refined, you can not begin to come up with a perfect architecture, but only gradually under the development process, refine the structure of the system.
Analogy: If we are prepared to build a house, that house if the feature points by: walls, floors, lighting and so on, which is formed according to the kind of style, the house is so Quartet, or circular, thus formed house architecture. Under the architecture, we can apply the framework of each module, such as walls, what we are prepared to apply the framework. Wall may include: windows, doors. Windows and doors is a framework consisting of. What is the shape of the window or a large or small, is to in order to achieve the brightness of the house, so what kind of window is the selection of design patterns.