📜 ⬆️ ⬇️

Project management software development. Problems and solutions

Methodology Funnel In 2001, when there was still no Habr and a significant share of his modern readers, when the waterfall was omnipotent, and Edgeel was just beginning to speak, I did a little research on the subject of development methodologies and their differences from each other. The result was an article that was published on friendly websites. Some respected educational institutions even referred to the article when preparing courses on the basics of software project management. Since the friendly websites were not about IT, then the article eventually disappeared from them. In order to prevent its complete disappearance from the Runet, I will allow myself to publish it on Habré and invite everyone to take a short excursion into the past. Yes, many things now seem naive, but a number of conclusions are still more than relevant.


Attention, article from 2001 !


The article attempts to classify software development projects, reviewed and briefly analyzed the main methodologies for software production, made a brief analysis of the applicability of the main methodologies to the types of software development projects.


Introduction


Today, there is a fairly large number of standard processes and methodologies, applying which the firm receives one or another software production model. The most famous of these are the CMM (Capability Maturity Model) and the ISO 9000 series of standards. As a rule, organizations implement these processes exclusively in order to receive a certificate of conformity of their process to one of the above standards. However, paradoxically, it sounds, often attempts to introduce one of the above processes adversely affect the stability of the company.


In the past 3 years, the terms “lightweight process”, “adaptive process”, “unified rational process” and “extreme programming” have become fashionable in the west. What it is? And why does the effect of introducing ISO9000 sometimes turn out to be negative? What process to choose and what criteria to follow when choosing a process? The rest of the article is an attempt to find answers to these and other questions.


Project classification


The model and parameters of the software production process largely depend on the type of project. Each team has its customers with whom these or other relationships have developed.


Own customer


The situation in which the development team for a long time serves a single customer. As a rule, this option is characterized by excellent relations between the customer and the developers. Often these teams are located on the customer’s premises. The main characteristics of this type of project:



Product on order


The situation in which the development team finds a third-party customer and agrees with him about the development of a software product designed to solve certain customer problems. The main characteristics of this type of project:



Replicable product


A situation in which the development team either has no specific customers at all (a “boxed product”), or a rather significant number of customers for the same product. The main characteristics of this type of project:



Outsourcing


The most young model of software production. Appeared on the basis of high qualification and low cost of labor of Russian programmers compared with their Western counterparts. The essence of this model is that a subcontract agreement is concluded between a western software company and a Russian company. The main characteristics of this type of project:



Problems


Organization of the process


The most typical model of software production in Russia can be described as follows: “Each developer chooses one or another method or technique to create programs in accordance with their own habits and preferences. The almost complete lack of clear responsibility for the performance of certain functions. The quality of software is a random variable and directly depends on the abilities of individual employees of the company. Practically everything depends on the initiative and business qualities of several individuals. ” This formulation is almost completely consistent with level 1 CMM called "initial". According to some sources, 2 years ago, the share of software manufacturers using this model was over 70%.


Here are the conclusions of Martin Fowler [4], comparing the process of software production with classical types of construction and production:



Requirements and iteration


The classic software production process, which was used throughout the world until the mid-nineties, and which is practically a symbol of the structured programming era, consists of the following steps: survey, problem statement, design, programming, testing, and implementation. This process is called "Waterfall". It implies that the requirements for the software product, collected during the survey and formalized during the formulation of the problem, are fixed and do not change during the entire production cycle. However, modern business is very dynamic and changing requirements in it is a common thing.


Fowler writes: “In the process of producing software, everything depends on the requirements. If you cannot achieve sustainability requirements, you cannot create a predictable plan. ” How to be? On the one hand, the requirements must be sustainable, and on the other they will inevitably change during the course of the project.


The key to everything is an iterative production process.


Solutions


All ways to solve the above problems are reduced to changing the software production process so that the process is predictable, stable and in time ensures the fulfillment of the main goal - ready-made software.


Linear and iterative software development life cycles


The linear life cycle of software development (also known as “Waterfall”) involves the sequential completion of 6 stages: survey, problem statement, design, programming, testing and implementation. Such a life cycle implies the immutability of the requirements for software, from the moment the task is set to the moment of signing the act of introducing the developed product, no matter how long the software development stage is.


This approach is applicable to classical disciplines, such as building houses or machine tools. This approach is applicable even in the software industry, if the product requirements do not actually change during the entire development cycle. Another condition is the well-established software development technology, without the use of any completely unexplored technological innovations. An example of projects of this kind is the writing of a program, the control rocket flying to the moon (it is unlikely that humanity learned something radically new about the moon) or a calculator, the requirements for which have long been known and have not changed for a long time. But what about if you want to create, for example, an electronic store for a customer selling computers and components?


Modern business is very dynamic, and the requirements for an electronic store will change more than a dozen times during the development process. And each time it is necessary to rewrite a significant part of the code and bring a lot of documents in accordance with the new circumstances. And this, as a rule, is an unplanned loss of time, resources and efforts, which, as a result, results in the failure to meet deadlines and the production of software that does not satisfy (or does not fully satisfy) customer requirements. Where is the way out? There is one way out, in this case, using an iterative software creation cycle. Such a cycle is a set of iterations, within each of which the project goes through all 6 of the above steps. An iterative cycle will allow to identify serious problems at the earliest stages of development, manage risks, start testing before, etc. Such a process becomes more dynamic and manageable.


Existing Methodologies


There are quite a few typical software production processes in the world. ISO9001, ISO12207, ISO15504, CMM (Capability Maturity Model), MSF (Microsoft Solution Framework), RUP (Rational Unified Process), SCRUM, XP (eXtremal Programming), Crystal Clear, ASD (Adaptive Software Development), Lean Development - all this the types of software production processes, process families and methodologies. Under the methodology refers to a set of methods, practices, metrics and rules used in the production of software. According to Alistair Coburn [1], the methodology is needed in order to:



As defined by Jim Highsmith [16] "The real purpose of the methodologies is to increase productivity, providing solutions for customers"


Methodologies can be divided into 3 categories - heavy, light and medium. Simplified, each of which is designed to work in conditions of, respectively, large, small and medium-sized projects. However, as we shall see later, this is not quite the case.


According to Alistair Coburn [1]:



All the above definitions are conceptual, since there are no quantitative metrics for these values.


The first category of methodologies was born before everyone else and is an integral part of software quality models. Difficult methodologies differ in that they cover all aspects of a company producing software, from requirements management and process planning to regulating relationships with subcontractors and describing requirements for supporting processes. All methodologies in this category are intolerant of change and treat people as a normal resource. Examples: CMM, ISO9000, SPICE.


The second category of methodologies came into being as a set of methods and practices used by small development teams in successful projects. Here, great importance is attached to the relationship between people within the team, taking into account issues of tolerance and other psychological aspects. All processes in this category provide for an iterative software development life cycle. If you try to formulate the basic meaning of light methodologies, you get the following: "Ensuring the maximum speed and quality of software development with a minimum of restrictions and conventions." In particular, in all light methodologies, only the necessary minimum of documents is provided, since Tribute is given to the principle “Documentation is not an understanding.” The essential difference of these methodologies from methodologies of the first type is related to planning. The essence of this difference is best expressed by Jim Highsmith: “In traditional planning, deviations from the plan are errors that must be eliminated. However, in the adaptive process, deviations lead us to the right decision ”[4]. Examples: SCRUM, XP (eXtremal Programming), Crystal Clear.


The so-called “universal” processes fall into the third category of methodologies. The most prominent and well-known representative of this category is RUP. The main characteristic of such processes is scalability - i.e. The process can be configured to work in a small team on a small project, or in a large team on a large and serious project.


Process Applicability Analysis


Alistair Coburn, the author of Crystal, is one of the most famous modern experts who have made their methodologies the object of their research. The result of his research in this area is the book “Agile Software Development” [1], in which the author analyzes the software production process from different points of view. Alistair Coburn is the author of the concept “Software development is a collaborative game of invention and interaction.” He highlights 2 goals for this game:



Thus, a minimax task is formulated: to produce software (often it does not require creating any documents at all) and to ensure the development of the next versions of this software (but for this it is necessary to create a number of documents that are necessary, for example, if one of the major developers will leave the team). From the point of view of this concept, the C3 project, in the course of work on which the XP methodology was created, was an unsuccessful game, since after all the main developers left the team, the software product became impossible to develop. The reason for this was that none of the remaining ones did not possess the necessary knowledge for this, and the detailed project documentation was not compiled.


At the same time, light processes are not applicable to work on large projects or on products, the degree of criticality of the correct operation of which is very high.


Figures 1-3 illustrate patterns in the use of different methodologies by development teams of various numbers.


image
Figure 1 shows the performance dynamics of a team of several people using different methodologies. The small team successfully works using lightweight methodologies. When we increase the methodology, the team has less and less time and effort to develop.

image
Figure 2 reflects the performance dynamics of a large team using different weight methodologies. Light methodology does not provide proper controllability of the process, so at the beginning of the schedule team performance is low. The team achieves the highest performance using a methodology that is sufficient to set up a controlled and dynamic process, but with further weighting of the methodology, there is a gradual decline in productivity.

image
Figure 3 reflects the ceiling of a team’s capabilities when using different weight methodologies.

Classification


image

Coburn has developed a classification [1] of project types, based on two parameters - the size of the project and its degree of criticality. The following degrees of criticality differ:



Introducing some amendments to the proposed method of classification, you can also take into account the degree of distribution of the project (especially important for outsourcing projects), the qualifications of the team and other nuances.


findings


Now back to our types of projects and see what types of methodologies are most appropriate to use in a particular case.


Own customer


The most favorable type of project for the implementation of lightweight methodologies, since the customer is always available and there are no special requirements for the quality of the software. However, it is necessary to consider the number of developers and the degree of their distribution. There is no need for certification, as a rule, for such teams, therefore, by and large, it’s not worthwhile to pay attention to CMM and other hard techniques.


Product on order


The most vulnerable type of project. The company depends entirely on the number of contracts. Constantly looking for new customers. In such conditions, of course, the presence of an ISO or CMM certificate is very desirable, especially when it comes to Western customers. However, the implementation of ISO9001, SPICE or CMM is a fairly time-consuming process that does not always justify itself. Therefore, apparently, it is advisable to begin the introduction of RUP, with an eye to further certification.


However, as the above analysis shows, certification of small firms is often simply destructive for them. Therefore, it is worth thinking about certification only when a certain number of personnel is reached, which will be enough to implement one of the heavy or medium methodologies. Otherwise, using one of the easiest methodologies is the best solution. In particular, if the company has growth prospects, then you can try to implement Crystal Clear, with the subsequent transition to the heavier methodologies of this family.


Replicable product


The most sustainable, by definition, the type of project. The release of replicable product is always characterized by lower costs for its production, compared with the release of individual copies (similarly, the conveyor and manual labor). In these conditions, the use of light methodologies in its pure form, as a rule, is impossible, since there is no possibility to constantly work with the customer. In this case, everything depends on the method of managing the team, established traditions, its tactical and strategic goals.


Outsourcing


This type of project is characterized by a distributed structure and the initial prerequisites for the weighting process, since communication with the customer takes place in the form of documents of the established sample. If the western side gives the team its own technological process, then, of course, it has no freedom of choice. Otherwise, it is worth stopping at a certain process of moderate severity, which, on the one hand, would be enough for normal interaction with the customer, and on the other hand, it would be dynamic and stable.


Conclusion


In any case, all of the above conclusions are generalized, since the situation in each particular case is unique and there are no standard recipes for the software production process, and it is unlikely to ever be. This field of human activity is still very young and is sufficiently dependent on the human factor. However, the author of the article hopes that the above review of methodologies and a brief analysis of their applicability will help you to understand the essence of the issue and make the right decisions. It is necessary only to remember that "A relatively small increase in the weight of the methodology used leads to a relatively large increase in the cost of the project" [1].


Bibliographic list:
  1. A. Cockburn. Agile Software Development, 2001, Addison Wesley
  2. A. Cockburn. Cristal Clear, 2002, Addison Wesley (forthcoming)
  3. Mark C. Paulk. Extreme Programming from CMM, Paper for XP Universe, Raleigh, NC, 2001
  4. Martin Fowler. The New Methodology (www.martinfowler.com/articles/newMethodology.html)
  5. A Guide to the Project Management Body of Knowledge, PMI, 2000
  6. Jim Highsmith. Agile Methodologies. Problems, Principlee and Practices, Cutter consortium, 2001 (www.surgeworks.com/resources/papers/AgileMethodologiesXP2001.pdf)
  7. Angelo Corsaro, eXtreme Programming Concepts, Department of computer science, Washington university, 2001
  8. Thomas Dudziak. eXtreme Programming. An Overview. Methoden und Werkzeuge der Softwareproduktion WS 1999/2000
  9. Spice. Consolidated product. Software Process Assessment ( http://www.sqi.gu.edu.au/spice )
  10. N. Saprykina, And Abarykov, A. Grigoriev. Certification of Russian IT-companies, PCWeek, # 41 (311)
  11. John Smitm. A Comparision of RUP and XP, Rational Software White Paper, 2000
  12. Gary Pollice. Using the Rational Software for Small Projects: Expanding Upon eXtreme Programming, Rational Software White Paper, 2000
  13. McConnell. Software Project Survival Guide, Microsoft Press, 1998
  14. Philippe Kruchten. The Rational Unified Process, Addison-Wesley, Addison-Wesley, 2000
  15. Tom DeMarko, Cutter Trends Report on light methods, 2000
  16. Jim Highsmith, E-Project Management: Harnessing Innovation And Speed, Cutter Consortium, 2001, Vol 1, No. one
  17. Kent Beck, Mike Beedle etc, Manifesto for Agile Software Development ( http://agilealliance.org )
  18. Assessing the ISO / IEC15504-5: Assessing the Rational Unified Process for Sustainability Part 5: An Assessment Model and Indicator Guidance. Rational Corporation Whitepaper, 2000
  19. Reaching CMM Levels 2 and 3 with the Rational Unified Process. Rational Corporation Whitepaper, 2000
  20. http://www.objectmentor.com/resources/articles/RUPvsXP.pdf
  21. A. Cockburn. Surviving Object-Oriented Projects (The Agile Series for Software Developers), Addison Wesley 1998

')

Source: https://habr.com/ru/post/348248/


All Articles