As we all know , software engineering is a method of software development and management, which has been put forward in the end of the last century. since the waterfall development model has been proposed, software engineering has embarked on a standardized road. for some powerful, large-scale software, people can be the development process engineering, do a good job in each stage of planning, set the corresponding standards, so that can create a full-featured, and very safe software.
However, with the progress of the Times and development, with the development of software Engineering, gradually derived a variety of software development model. The most notable of these is the agile development model. Agile development in the short-term development, gradually separated from the traditional development model, gradually occupied the software development industry half. However, the two ways of development who are stronger, who is more excellent?
First, let's take a look at two development patterns.
(a) Traditional software engineering
contains different types of development models. One of the most common is waterfall-style development patterns. Others include RAD models, incremental process models, prototype models, helical models, concurrent development models, object-oriented development, formal development, and so on.
- Waterfall-style development Model
it is an old-fashioned development model that has become slightly outdated in today's software development environment. The core idea of waterfall development is to separate the design and implementation of function, and to facilitate the division of labor, that is, the logical realization is separated from the physical realization by the method of structural analysis and design. In a waterfall model, the software lifecycle is divided into requirements analysis, system design, program design , program writing, joint testing, system testing, compatibility testing , and Run and maintain these modules. these activities are top-down, and if they are not completed at the previous level, they will not be able to perform the following post-move or even return to the previous level of activity.
This development model is characterized by the requirement that several activities are in strict order, and that the results of each phase are reviewed and that the requirements are not allowed to be uncertain. It is inevitable that there will be some blockage in the development process, so the customer is required to have enough patience. Therefore, in the face of some frequently changing requirements, need to complete the short-term design requirements, waterfall Development does not apply.
- RAD Model
This model is a rapid development model based on component. People are divided into enough groups according to the software components, and each group develops a component. None of the components are divided into business modeling, data modeling, processing modeling, application generation and testing, and 5 steps over and over again . This can bedone within a short period of time (60-90 days) of the different components, and thus constitute a complete software engineering. But for large projects, this model requires a huge amount of manpower, and it does not apply to programs that do not properly divide the modules.
- Incremental process model, helix model, and concurrency development model
these three types are all part of the evolutionary software process model. They embody the changing features of software and highlight the idea of iteration. The incremental process model strives to occupy the market as early as possible and release the new version gradually. QQ and a variety of large-scale online games are good examples. The Helix model is committed to changing different versions in different forms, and requires a high level of risk assessment techniques. Concurrent development models are driven by user requirements, management decisions, and review results. None of the software engineering activities will trigger the state transition of the active network.
(ii) Agile development
The
Agile Development is a development theory proposed in this century. This theory follows the idea that process and tools Working software trumps all-encompassing documentation Customer cooperation over contract negotiation Span style= "font-family: Arial" >, response change Although the ideas presented by traditional software engineering are valuable, we think that in some cases, some of the things pursued by agile development will be more useful. Agile development includes Scrum xp (extreme programming), crystal , ppd
- Scrum Development
This development model requires a
Three roles: Process manager, product owner, and development team.
Three artifacts: List of products, iteration list, and Burndown chart.
four meetings:sprint plan Meeting,daily Scrummeeting,Sprint review meet and Sprint retrospectivemeeting.
Five steps:
1) The project staff determines the ordered product backlog (on-demandtable) based on the priority of the requirements
2) The Scrum team selects the target to iterate on according to the list. It takes about 4 weeks to complete this goal .
3) The Scrum team daily the scrummeeting every day . Everyone reports on the completion and problems. Complete the sprint burn down diagram.
4) After all the iteration goals are completed , the Sprint reviewmeeting, all personnel, and adjusted according to the needs of the product responsible personnel.
5) Sprint retrospectivemeeting, summarizing the sprint, for the next Sprint be prepared.
- XP Development
XpDevelopment relative toScrumThere are not many gaps in the overall thinking of development, but there are still some small differences between the two. XPdevelop a shorter time set that does not have an iterative goal to complete, about1to the2weeks. In addition, theXPin development, if a small demand has not yet been completed, you can choose to replace it with an equal amount of work. Relative toScrummore flexible. One more thing,XPdevelopment must adhere to the order of precedence, andScrumconsider a person's delay or the low priority is the basis of a high priority, and does not require a certain priority to be developed in accordance with the previously agreed-upon priorities. Meanwhile,XPis a strict management, automatic testing, pairing into the act of binding groups. andScrumis to ensure that the entire team's development process is fully dependent on the people's consciousness.
Second, talk about the two development methods of some models, and then talk about the traditional software and agile development of the difference between the two.
The advantages of agile development are lightweight, simple, fast delivery, maximum transparency, inspection and adaptation, a focus on timely communication between development teams and the development team and customers, and a response to demand changes, but not enough system.
The advantage of the traditional software architecture lies in the foresight and systematization, which can foresee the functional and non-functional requirements of the software before the formal development, the biggest feature is that it attaches great importance to the document and structure, and it is difficult to respond to the change of customer's demand, which makes it difficult to guarantee the flexibility of development.
To be blunt, it is the literal meaning that agile development focuses on agility and speed. The traditional soft workers pay attention to the engineering method, pay more attention to the system development, and ensure its integrity and safety.
Nowadays, the computer science is more and more developed, the two development ways of software engineering should take advantage of each other, and strive to make greater progress in software development. I think it's possible to transplant the architectural approach of software engineering into the Agile development phase, to granular it, and to have an architecture for every particle. This enables software engineering to have both the predictability of traditional software and the convenience and adaptability of agile development.
Of course, this method is not absolute. We should learn to consider which of these two methods to use in different situations. For a large project, it may take a long time to complete the project, which may even have personnel replacement, in this case, we should be decisive to adopt the traditional software engineering methods, so as to ensure that the project predictability and systematic, in the long period of development process, Do not have to be too much because of the communication is not smooth or personnel changes caused by errors, or the entire project failure.
And if we are a small team, doing small-scale development in a lab or office, and the software needs are likely to change software requirements at any time, then agile development is the right one. Develop at any time, find that the problem can be changed at any time, changes in requirements can always keep up with the progress, due to communication facilities, the quality of the project will not have problems.
According to the above analysis, I think both of these methods will have their own vitality today. The two do not exist to who superior who inferior relationship, in the choice of development mode, according to their own needs, personnel configuration, work environment and so on to judge, in the end, which kind of development is more suitable for their own, this is the most important.
Agile Software Development vs. traditional Software engineering