Software architecture (1)
In recent years, software products have become more complex, larger, and more dependence, and the division of labor is also more refined. For ten years ago, if you tell the developer to need a software, you can make it easy to publish a variety of media and let tens of thousands of users browse these publications. It can be imagined that the poor developers will vignetize their eyes, and they will make tens of thousands of workers to complete this software (or more likely: only half of them). But today, he will relax and shrug your shoulders, then say: "No problem.btw, do you need to add some interactions to this web site?"
The same situation also appears in the software design area, perhaps you need this to say this year, "a client (user interface), providing user and system friendly access; and application service, special business logic; finally data Server, responsible for data information storage, access, and its optimization. Now you just say "three-story structure", people will understand what you mean. The like is also MVC, Pipeline, and even some trademarks, such as the famous J2EE and .NET.
Maybe you still don't know the former, MVC refers to the "Model-View-Controller" instead of Sony's digital camera. Pipeline is not a water pipeline, although they do have something similar.
As the software system is increasingly complex and huge, the choice of data structure and algorithm is part of the next part. The design and description of the entire system becomes more and more important. People write software methods and use development language and tools have a significant development feature, that is, their abstraction is regular, maybe this sentence is also abstract. The degree of abstraction here refers to the particle size of the software developer to consider the problem, and it is an abstract words. Will continue, we will get countless abstract concepts, so it is still looking at the living history. Look at how the software development technology develops in the past 50 years.
In the 1950s, when the first batch of digital computers were born, people used machine instructions to program, representing the binary 01 string with the punch card. Engineers read write instructions and data, arrange and maintain memory allocation in memory. Even if you add a row of code, you must re-consider all instructions and data in memory. The program is completely like a book, all consists of 0 and 1. Soon, people began to use meaningful symbols instead of machine instructions and memory addresses, memory allocation, and updates are also delivered to the system, which is born with assembly language. In 1952, MIT (US MIT) used a symbolic address on the Whirlwind system and started using assembly language writing programs, which can be said to be the earliest software abstraction.
In the late 1950s, people gradually refine some of the most commonly used coding methods, like arithmetic expressions, logical operations, process calls, cycles, and conditions, and more. Some higher-level languages (relatively assembly language), enabled language-level support for these common ways, making developers working on higher levels, greatly improving efficiency. In 1954, IBM's John Backus and his leadership team began to develop a FORTRAN (Formula Translation), which is a programming language for scientific calculations. Development tasks are completed in 1957. Fortran is an outstanding representative of these languages. IBM has developed a monitoring program system written in IBM704, which is the prototype of the operating system and the earliest software of the hardware.
Support for custom data types and modularization than Fortran is beginning to provide support for custom data types and modularization. In 1960, 13 representatives from Denmark, the United Kingdom, France, Germany, the Netherlands, Switzerland and the United States held an international conference, which will post the "report on algorithm language Algol60 on computer authoritative publications." Algol is a language with a form of expression algorithm in a form of usual English and a common mathematical expression. It does not input the output statement, all in the form of a process, based on the block structure. Switzerland's NJKLAUS WIRTH began to develop Pascal languages on ALGOL and completed in 1971. In the same year, the Dennis Ritche (one of the developers of UNIX operating system developers) in the United States developed a C language. Pascal and C language are still widely used now, and many large systems are developed in these two languages. During this period, the first general platform established on the operating system was born. In 1968, IBM has developed the world's first database management system IMS, which has the ability to manage complex databases, support hierarchical databases. And online transactions. Software development in this period is concentrated on the discussion of algorithms and data structures. Or that wirth, proposed program = algorithm data structure, this concept is popular now. The structure of the software at this time is also concentrated on the data structure. Gradually, people have begun to combine the algorithm with the data structure, which means that when developing software, it has been transferred from the right to the right to the left, and consider at a higher level. The concept of abstract data type (ADT) is introduced. In 1968, Ojdahl and K. Nygard, Norwegian Computing Center, delivered a SIMULA 67, which modularize the system overall on the basis of Algol60, this is the first object-oriented object language. But almost stagnation in a considerable period of time. In the late 1960s, people in the selection of useful data structures, gradually recognized some excellent system organization methods. Some of them are based on abstract data types.
This process has led to a strong demand for a representation, which must describe how to connect a subsystem developed by the programming language to constitute a larger system. In 1975, Deremer and Kron invented MIL (MODULE Interconnection Languages module interconnect language), MIL provides a static method of describing the interrelationship between modules and how modules calls. The so-called static means that the interconnection between modules is through some implicit conventions, such as process calls and data sharing. This makes the module interconnect language limitations, usually for specific program development languages, a specific MIL (eg, ADA MIL) must be constructed, that is, MIL is based on program development language. The module defined by the module interconnect language is shown below:
A by-product of MIL is a version control. Since MIL can describe which resources are provided (module interconnect language is the type, constant, variables, and functions of the program development language), depending on which resources, and including functions and modules, these descriptions Can be used to build a large system. This is one of the main goals of version control, baseline management.
In 1970, Ken Thompson and Dennis M.ritchie, Bell Labs, USA, began to develop UNIX operating systems. This is a common interactive time-time operating system, which belongs to the multi-channel operating system, is one of the current internationally recognized operating systems. In the same year, IBM's E.F.CODD proposed relationship database theory and method on the American Computer Association's publication, laid the theoretical basis for the development of relational databases. The following year, Dennis Ritche has developed a C language, which is very useful for system programming, and people began programming for operating systems. The next three decades is the overall development period of the operating system and database. The operating system is developed by the mainframe to the microcomputer, the database has become a platform for development, network, relationship, distributed, object-oriented, etc., operating system and databases become two major platforms for program development. In 1978, the US Codasyl (Data Systems Language Association) issued a report on distributed databases, proposing the structure and basic concepts of distributed databases to cooperate with distributed computer systems in the development. There are now many practical distributed databases and continuing to develop.
In 1980, the development of IBM's open personal computer (ie IBM PC) was developed, Microsoft took the task of designing the operating system, and later became Microsoft's MS-DOS.
In 1983, the US Department of Defense completed the Arpanet (Advanced Research Project Agency Network), which was later developed into Internet. TCP / IP gradually became an Internet core protocol. Hardware manufacturing and software development related to Internet is subject to this standard. Pay attention to TCP / IP. In the years, he will become the basis of most distributed components.
In 1985, Microsoft began researching the development of a Windows operating system for microcomputers. It uses a graphical interface, the first edition of Windows (1985) and the second edition (1987) have many problems, so they have not become commercial products, but Microsoft has still adhered to efforts to succeed in V3.x. The Windows series launched in 1995 became an independent operating system. Based on Windows, Microsoft has a large-scale update for previous development tools, which has launched Visual Basic and Visual C , and released the most popular application development framework (Framework) MFC, making Windows applications. Structural standardization is a tool for new generations to develop applications.
In the 1990s, people gradually realized the importance of software architecture, software engineers in describing and understanding software systems are gradually talking about software architecture. But these exchanges are usually described in the description of some informal, certain small groups. This approach has its obvious weaknesses:
The design of the architecture is difficult to fully understand, and it is difficult to perform formal analysis and design;
The decision on the architecture is usually depends on the individual's decision, not based on the principles and rules of a group of mature engineering;
When the system evolves, the design of the architecture is difficult to maintain and verify.
Tools that can be used for architecture design are very small.
In the 1990s, some tools that are collectively referred to as ADL (Architecture Description Languages Architecture Description Language) are proposed, which is committed to improving the readability, reusability and analytical analysis of architectural design. Can be used to define and model the architecture before the system implementation. Relative to the module of the module interconnect language, the architecture description language is more focused on the component. In addition to determining the components and its interconnections, the architecture description language also focuses on the following three aspects: component behavior specification, including Functionality, including non-functional features. The latter is the focus of architecture description: including availability, reliability, maintainability, etc.; component communication specifications; and components connection specifications. The ADL has solved the above problems, but it is a relatively new technology that has not yet successful business applications. This situation is part because of its incompleteness of its own, part is due to no urgent industrial needs. Although ADL has slowed slow, it has an alternative tool, and the object modeling language has got a rapid development in the past decade. Its important results are the UML (UNIFIED Modeling Language Unified Modeling Language) released by OMG (Object Management Group Object Management) This is a set of standardized object-oriented analysis and design representations, as a graphical language, It includes a set of charts for demand acquisition examples and event diagrams for designing class diagrams and object maps for configured package diagrams and subsystem diagrams, and the like. It allows architectures and analysts to view, construct applications and documents in a standardized manner. Just like an analysis of a Chinese language in the design field.
Today's UML has gradually begun to unify the process, but it has not yet been able to be a world, but it is already enough for us. After all, it is not all people speak English. UML itself also includes sufficient flexibility, most UML development tools support a representation called "STEREOTYPE), which allows custom proprietary symbols and vocabulary. This is a brand new feature that UML can be cut and customized for extremely wide range, which is said to the inventors, although UML is an object-oriented modeling language, but it is fully available Non-objective modeling. The fact is true, I personally, before I change the 40G hard disk, my hard disk is only poor 8G. After installing the required tool, there is no extra space to install Visio, so I often use Rational Rose. Draw to paint office layout.
There will be these developments because of the above-mentioned changes.
The first reason is that since the first database appeared in 1968, the size of the software is getting more and more huge (in fact, the commercial system established by COBOL and ISAM files is already very big), people have the earliest For hardware programming, then programming operating system, next to programming on the database platform, software development has been fully developed in this stage for more than 30 years. Now, people have programmed on the AS (Application Sevrer Application Server), 1995, Bill Coleman, ED Scott, and Alfred Chuang founded BEA, starting their famous WebLogic servers, and this year, the application server market has reached Ten billion US dollars. And the common development of the middle market, the three major commercial components suppliers in the Internet - Flashline.com, Components, and ComponentPlanet, not only buy and sell software components, but also provide the buyer and the seller from testing and support to component management tools, etc. Various other services and resources. CBD (Component Based Developer-based component development) has become an advanced software development method. If you are using Visual Basic, C , C # or Java, you are doing CBD in nature. This part benefits from the increasing popularity of the ASSP (Application Server Software Platform Application Server Software Platform). As IBM's WebSphere, Sun Microsystem IPlanet, BEA System's WebLogic, and Oracle's IAS, ASSPs are pushing CBD to the market. Everyone has adopted and accepted industrial standards such as SOAP and XML. This application and acceptance will help stimulate components development in web services applications. The trend is in Java and J2EE, but with Microsoft's .NET becomes more popular, maybe this 'pendulum' will return to Microsoft. People call the application server as the operating system of the company, Microsoft is behind, but how many times we see it surpass the opponent. The second reason is the distributed demand. More and more applications are running on the Internet, all of which makes a distributed requirement. To support access from the Internet, the load is greatly increased, using multiple parallel servers, rather than using a powerful host, becomes more common, because the latter usually means more expensive and proprietary development Team. The need for security is also required to be distributed, as if you don't put all the eggs in a basket. "
to be continued . . .
All rights reserved, all rights reserved, all rights reserved.