How is the software created? What are experts guided in their activities? Software development methodologies are important in this area. We will consider some of them in this article, dwelling in detail on the tasks, stages, important principles and differences of these methodologies.
What is it?
We start the article with a definition. A software development methodology is a set of principles, a system of ideas, concepts, methods, methods and tools that will ultimately determine the style of software development. In other words, the methodology here is the implementation of any particular standard.
What is important to note, the standards here advise rather than prescribe how it should be. Therefore, before the creator of software, freedom of choice and adaptation of the theory is preserved.
Specific products are implemented through a software development methodology. She will determine how the specialist will perform his work. Today, there are many similar methodologies - we will consider the main ones along the way. What influences the choice of one and only one? The team size, the complexity and specificity of a particular project, the maturity and stability of the processes in the employing company, and the personal preferences of the software creator are highlighted.
Thus, methodologies are the core of the theory of management of the development of any software. Previously, a classification was applied to them, dividing all methodologies into two types: iterative and waterfall (based on the applied life cycle models). Today, a modern general classification is used, which is also divided into two groups: predicted and adaptive. Get to know them in more detail.
Predicted Methodologies
What applies to these software development methodologies? These are the varieties that are focused on detailed planning for the future. Tasks and resources are known throughout the project term. From here, the work team will have difficulty responding to unexpected changes.
The plan is drawn up according to the composition of the necessary work, the requirements for them. Hence, a change in requirements directly leads to a change in the whole plan, design of the project. For forecasted methodologies, it is typical to create a special committee to manage changes so that only the most important requirements are taken into account in the project.
Adaptive methodologies
What is the peculiarity of these computer software development methodologies? They are already aimed at overcoming the expected imperfection, incompleteness of requirements, and the constant change of the latter. Accordingly, with a change in requirements, the project development team will also be replaced.
An accurate adaptive methodology plan is being developed only in the near future. Plans related to events more distant from reality exist in the form of declarations of the goals of the work, its results and expected costs.
Agile methodologies
Flexible software development methodologies Agile software development. Hence the second name: agile methods.
Flexible software development methodologies are a set of approaches to software development that focuses on the use of iterative development, the dynamic formation of project requirements, and the implementation of continuous interaction within working self-organizing teams composed of specialists of various profiles.
First of all, it is an effective work practice of small teams engaged in the same type of creative work. Combined with a combined (democratic and liberal) management method.
Flexible methodologies for developing computer software are aimed at minimizing risks by reducing the overall project to a set of short cycles (so-called iterations), each of which lasts for as long as 2-3 weeks.
The iteration here is a miniature software project that includes all the tasks to ensure functional mini-growth. Something like: planning, requirements analysis, design, programming, development testing, documentation. Of course, a separate iteration is not enough here for the release of the final product. This implies something else. A flexible software product is ready for the end of each iteration. Also, at the end of the period, the team must reassess development priorities.
During each iteration (software development phase), emphasis is placed on direct face-to-face communication of specialists. Most teams are located in the same office. The presence of a โcustomerโ is mandatory - an authorized representative presenting development requirements. The project manager, client-customer, and business analyst manage this role. The office may also include testers, technical writers, interface designers, and so on.
The main metric here is the final product. The advantage of direct communication between specialists is that there is a relatively small amount of related written documentation.
Agile manifesto
Let's analyze the main standards of software development. The first to highlight is a set of development processes called Agile. It is defined by Agile Manifesto. It is important to say that Agile does not include specific practical tips, but contains values โโand principles that should be followed by development teams in their activities.
Agile Manifesto was designed and adopted February 1-13, 2001 at a ski resort in the Utah mountains. It contains 4 main ideas and 12 principles of teamwork without a single practical advice.
Let's introduce the main ideas of this modern software development methodology:
- Interaction and people are more important than tools and processes.
- A working product is above comprehensive documentation.
- Collaboration with the client is more important than the approval of individual contract terms.
- Team readiness for change is more important than following the original plans.
Also within the framework of Agile Manifesto, the following principles for the activities of developers were identified:
- Satisfying customer requests through the uninterrupted early delivery of valuable software.
- Greeting requirements changes even upon completion of a project. After all, this is precisely what can increase its competitiveness.
- Frequent deliveries of working software - every week-month.
- The project employs motivated individuals, provided with comfortable working conditions, trust and support.
- Close daily interaction between the customer and the development team.
- The best measure of progress is working software.
- Users, sponsors and developers must maintain their chosen pace indefinitely.
- Constant attention to improving product design, technical requirements.
- Simplicity is the art of not doing too much work.
- Constant adaptation of the team to changing operating conditions. Developers must constantly find means to improve the efficiency of their work, follow them in the future.
Waterfall model
We are moving from the manifest of a flexible software development methodology to a new type. Waterfall Model - "waterfall" or cascading model. One of the oldest methodologies. It implies the sequential passage of the stages of software development, each of which must end before the next one begins.
Due to such rigidity, it is quite easy to manage a project using this methodology. The cost and terms of development are predetermined, so the work goes quickly. But it is important to remember such an aspect: the cascade model gives an excellent result only in projects with pre-defined requirements and methods for their implementation. Here, specialists have no chance to "turn back", because testing begins only after the stage is completed.
If the choice of such a model is not sufficiently substantiated for the product, then at the output you can see software with significant shortcomings. After all, their presence will be known after the completion of work due to the strict sequence of activities. Bug fixes here are quite expensive. To start corrections, you have to wait until the development is complete.
Experts advise using the "waterfall" methodology in the following cases:
- Project requirements are known, understandable and fixed. There are no contradictions between them.
- There is no problem attracting programmers of the necessary qualifications.
- The project is relatively small.
V-model
The software development stages here are also consistent. V-Model "inherited" this feature from the "waterfall." It is especially good for those systems where smooth functioning is required. A good example: creating clinical application software for continuous patient monitoring. Or, the software that controls the mechanisms of airbags in vehicles. Or an application for a mobile operator, designed to save the user roaming expenses when traveling abroad.
The project is carried out at the same time on clear points of the creative task. However, a significant role is also given to timely testing: functional, integration, load, interface convenience.
When it is necessary to use this methodology for development:
- In cases where careful product testing is required.
- For small and medium-sized projects with clearly defined requirements.
- In an environment where engineers and testers of specific qualifications are available.
Incremental model
In this software development technology, the set of system requirements is divided into assemblies. In other words, this is a description of the phased software assembly. Several cycles of project development add up to a complex called a multi-waterfall.
The cycle, in turn, is divided into separate modules that are easily created. Each of them goes through the stages of determining requirements, design, implementation, testing, coding.
The peculiarity here is that at the first big stage a basic development model is released. And then increments are added to it - new features. Such a process lasts until a complete complex is created. Incremental models are good where individual change requests appear clear, can simply be formalized and implemented.
We describe the cases when using the Incremental Model will be justified:
- Clearly defined and understandable requirements for the final product.
- Modification of some parts over time is allowed.
- There are several risky goals.
- Early market launch is required.
Rad model
Just note that the RAD Model is one of the varieties of the incremental model. The components or functions of the program here are developed in parallel by several teams of professionals. The result is several mini-projects. Time to create each of them is strictly limited. All modules add up to a common working prototype. The system is good in that it helps to quickly present to the customer for review a work product, which can then be made a number of changes.
The software development process here includes several steps:
- Business modeling. This is the definition of information flows between the spectrum of units.
- Modeling information. The data collected in the first stage is used to determine the entities necessary for the circulation of information.
- Process modeling. During this phase, information flows link certain objects to achieve a development goal.
- Build the application. It uses auto-assembly tools to convert design models into code.
- Testing. Testing new components and interfaces.
Use this method of software development should only be in the case when the team has highly qualified and "narrow" specialists. The project budget is definitely large: you need to pay for the work of professionals, the cost of finished tools for automated assembly.
The model is chosen with a solid knowledge of the target business in those cases when you need to present the finished product in a short time - for 2-3 months.
Iterative model
The next example of software development organization is an iterative (or iterative model). A feature of the project is that to start its implementation does not need a full specification of requirements. Creation begins with the construction of a base, which should become the basis for determining further requirements.
The version in this case may be completely imperfect. The main requirement is that it works. The developer understands and sees the ultimate goal of the work. He should strive to ensure that every step of his activity is effective, and every version created is workable.
In some ways, the creation of software here resembles the creation of a picture: first, a sketch is made, then it is filled with colors, details, saturation, transitions of shades, final touches are added, and the process is completed.
Does it resemble an incremental model? Let's look at the difference. According to the incremental methodology, the product is composed of parts, and the software functionality is added, as they say, in pieces. But at the same time, each part is already an integral element. And the โpiecesโ in the iterative model do not have independence.
Another striking example of software development for this methodology is voice recognition equipment. It all started with the preparation of a scientific base. Then the necessary documentation was collected. With each new development, the quality of the equipment increased. But it has not yet reached an ideal level. Consequently, the project has not yet been completed.
The use of an iterative model is justified in the following cases:
- The requirements for the final version of the development are understandable and clearly defined.
- The project is very large.
- The main task is predetermined. But its details are permissible to improve, change in the process.
Spiral model
The spiral model is much like the previous one. However, the emphasis is on another task of software development - risk assessment. Most of all, this methodology is applicable for solving critical business tasks, when the failure of a project can seriously damage the company's activities.
The spiral model is widely used in the release of new lines of software, if necessary, conducting research on the project, practical testing. Each of the "turns of the spiral" takes place in four phases:
- Planning.
- Risk analysis.
- Construction.
- Evaluation of the results. If it is positive, then the developer proceeds to a new round of the project.
The spiral model should not be used for small budget projects. On the contrary, it is more suitable for large-scale and expensive. An excellent example of the application of the methodology is for the development of a banking document management system. Here, much attention is paid not so much to programming itself as to the analysis of each already completed โturnโ.
LD
The so-called lean software development. It is one of the branches of the flexible methodology that we have discussed above. The main advantage of LD: maintaining a high moral and functional condition of specialists. In particular, this is the following:
- Encouragement of each employee for particularly successful activities.
- The current tasks of the project are changed only in case of emergency or at the request of the customer.
- Strict implementation of the plan. Overwork here is considered a sign of loss of both time and resources.
- Implementation of the general concept of activity: "To think broadly, make mistakes quickly, work hard, learn quickly."
XP
A very interesting example is the methodology of the so-called extreme programming. What is hiding here? This is a lead in software development in the face of ever-changing product requirements. The direction of the methodology has the following distinctive features:
- "The game of planning." At the beginning of the work, only a rough plan is presented. With each round of development, its clarity increases.
- High frequency of releases. This means that the new version will have only slight differences from the previous one, but the least time is spent on its release.
- Contact with the customer. - .
- Refactoring .
- . , .
- . , . .
FDD
. . , . :
- - .
- .
- .
- Preference is for short software development cycles. This reduces the number of errors, while increasing functionality.
The value of the methodology lies in the fact that it clearly regulates the duration of the processes. At the same time, organizational issues in each cycle should not be spent more than 25% of the time. The remaining 75% is purely for development, assembly, and functional testing.
This concludes our acquaintance with the main software developments. As you have seen, the features of each of them allow you to choose the appropriate methodology for the successful implementation of the most diverse projects.