Software architects are the soul characters in the user requirements analysis and system design phase when developing software, and the work of the Software architect can provide better guidance for the next code design and future operation than the traditional system analyst. Some people think that the architect's work is to decompose the system module and define the relationship between them, and some people believe that the architect is a series of decisions on the core of the software design, and the architect is becoming more and more important in the modern software development system, and it has some relation with the popular software development organization structure.
One, "The software person" faces the perplexity:
As competition intensifies in the software industry, data shows that a business software launch cycle cannot exceed nine months. Customers in order to adapt to market changes, business processes, operating patterns are constantly adjusted with the market, often have new business needs support, development cycle of more than nine months, even if the software launched, but also face "market elimination" risk. The reason: For the software users, software is no longer just Office document editing tools, but the business operation of the support platform, is the customer's business fast and changeable, that is, often said business management pressure, now directly passed to the software developers. In the past, the operator's "train of thought", not only the operators to fight the idea, but also to fight the IT support to the operators of new ideas of operational support capabilities.
How can the software adapt to rapidly changing requirements? Plainly, is to constantly modify the enterprise's software functions and control processes, software developers are not less effort, the use of object-oriented reuse technology to save code writing, the use of layered isolation technology to reduce the impact of changes in demand on the code, the use of business development platform technology to allow users to assemble their own business processes ...
In order to make up for the differences between the software developers and the business staff, we can quickly give customers the experience of operation, image communication, "extreme Programming" is the favorite of many software developers.
Extreme programming is a large number of adaptation requirements change, the development of a small version of the technology, the purpose is to avoid the software design of the huge, complex, as soon as possible to launch the user visible, simple function, sufficient small version of the software, let users first use, in practice experience feeling, and then gradually improve
When the increase of new requirements is difficult to overcome, we use "refactoring" technology to adjust the software architecture, such as Object reconstruction, database reconstruction and Function module reconstruction. Refactoring is the process of rewriting a local program without affecting the external calling interface. Of course, the entire software architecture is not adapted to the time, it had to be pushed back, redevelopment. This is the end of the software lifecycle.
Ii. new problems arising from the new approach:
Extreme programming is a kind of organization mode of software development, it needs managers to have a clear understanding of the whole structure of software system, otherwise the software development process will "roam" with the user's demand, and become the "big tail" project that can never be delivered eventually. The reason has the following two points:
1, the software provides functions not only with the needs of users, but also with its quality of service, constraints. Constraints generally for the computer hardware, system software, network, etc., the quality of service generally for the user's software quality requirements, such as concurrent support volume, continuous service and so on.
Extreme programmers are very good at focusing on the changing needs of users, but adapt to these changes in the software system as a whole framework, under the permission of the constraints, the quality of service acceptable scope, otherwise the release of software is unacceptable to users, the latter can not achieve the desired effect.
2, because to "agile", many development organizers on the "narrowing" of the previous architecture design time, in the "sufficient principle" support, simple to build, and even the use of development tools, middleware, objects, such as the abstraction of the work to twist, until the development of the late, became hot "sweet potato", difficult "chicken ribs", Continue to retain the user's new requirements can not be met, a thorough replacement is a lot of work needs to restart, but also what "agile" it.
Therefore, a software team that uses the Agile development methodology should be more concerned about the design of the software architecture than the traditional approach, which is why the current career of software architects is more popular than the former system analyst. I admire Cisco's 65-series switch, which has undergone several generations of engine compatibility that many manufacturers envy. And some manufacturers own products, before and after the other, similar products are difficult to match each other, each product a new face, really "sparrow with small, viscera with a new".
How to design the software architecture in a more complete way, Wen Yu "Five View Method" is more comprehensive in "Software architecture design".