Discuss the three (3) major software development strategies. What factors do companies consider when choosing which software development strategy to utilize?
Different company chooses different software development strategies to get around any project. The post discusses three such software development strategies that are widely adopted throughout the industry:
Agile Methodology of software development provides flexibility in the software development stage. Unlike in other software development methodology, changes are welcomed and adopted in this process. It also involves direct involvement of the client or his/her representative as in the daily stand-up meeting. This is a way of briefing what has been done, what will be done that day and to discuss any major incidents in the process. That often happens at the start of the day. This thus adds that element of transparency and the collaborative feel. This method also helps enhance the relationship with the client as they will be aware of what activities the team is carrying forward and with they being involved throughout the process, the chances of project going out of track is almost negligible (Maruping, Venkatesh & Agarwal, 2009). This, however, might increase the overall development cost for the client and as it demands client involved, may be an issue if they are unwilling to do so.
Waterfall model follows a step-by-step procedure. This means that only once a phase is completed, it’ll move to the next and so on. The phases of steps of the model include planning, analysis, design, development, testing, implementation, and maintenance. To comply with the process, one can’t skip through a process or return back to the previous one. If any major changes need to be made, the process starts from the very first again (Baseer, Reddy A & Bindu C, 2015). So, this type of software development process is best for only those projects where the requirements are fixed and won’t change during the duration of the project.
Iterative strategy is another method popular when it comes to software development. It focuses on the time available for the development of a software. Works are divided into several iterations and looked into which features can be delivered within the available time frame. Unlike waterfall, this doesn’t follow that one phase should be completed before another to start but slightly similar to Agile, different phases overlap during the development process. Once all the different iteration is completed, the overall project goal can be fulfilled. Through the use of this companies can first complete the core requirements and then move to other lesser important requirements down the line.
For any company to make a selection of the software development strategy, they must first know the strength of the team within and then choose the system which will give the best result for the money and time spent. Another factor to consider would be the size of the project. Choosing Waterfall approach for a large project with changing requirement won’t do well to the company as that will further complicate the project as that will mean more time for testing. With no communication with the client in this method until close to completion of the project, chances of going off track exist as well. Agile or iterative method works better in that case. Also, analyzing how much changes might occur for the project along with a cost of delay should be considered. In today’s world with startup on a rise, most of them have an inclination towards agile method as it provides more flexibility to them. However, in the world of software development, there’s no right or wrong method but only which would be the best suitable as per the scenario and companies often look at all those criteria as mentioned here to select a process to go ahead with.
Baseer, A., Reddy A, R., & Bindu C, S. (2015). A Systematic Survey on Waterfall Vs. Agile Vs. Lean Process Paradigms. I-Manager’s Journal On Software Engineering , 9 (3), 34-45.
Maruping, L., Venkatesh, V., & Agarwal, R. (2009). A Control Theory Perspective on Agile Methodology Use and Changing User Requirements. Information Systems Research , 20 (3), 377-389.
The main software development lifecycle are waterfall model, Iterative model, Spiral Model, RAD Model and Prototyping model. But these are popular and old traditional software development Lifecycle. Nowadays Agile is popular in worldwide the Scrum life cycle is most commonly used lifecycle model.
Waterfall is fist developed software life cycle model. It is also called as liner - sequential life cycle model. The water fall model is very simple and easy for use. In case of this model each phase must complete before the next phase can begin. There is no pipeline operation and in waterfall model we can’t overlap the different phases. This means we can’t do two operation at a time. We can’t design and test the software at a time. It is big disadvantage of waterfall model. So that it takes a long time for developing the software system. It is appropriate for short and small software development. In waterfall approach the whole process of software is divided into specialized phase these are requirement analysis, system design, implementing, testing, and deployment. Following situation the waterfall model is most appropriate are:
Project requirement are clear, fixed and well documented.
Technology is clearly understood and it remain same for at least certain years.
The product definition and stable
The project is short
The main disadvantage of waterfall model is it execute each phase one by one so for overcoming this the iterative model is introduced. In iterative model it develops a system through repeated cycle iteratively and in smaller portion at a same time. In here two phase are overlapping at a time. In Iterative approach the whole process of software is divided into specialized phase these are requirement analysis, system design and development, implementing, testing. In here two phase are overlapping at a time. The design and development operation is doing at a same time. In iterative model we can perform similar operation in many phase like phase1, phase2, and phase 3 at a time. Following situation the iterative model is most appropriate are (Maier & Amier, 2014):
The basic requirement of system is clearly documented and understood. The major requirement also clearly defined.
In this model is used in big project which takes long time for development. Because we can use this model in a new technology.
There are some high risk features and goals which may change in future.
The RAD model is similar to iterative model but in iterative model is continuously process until the project completion. But RAD model is little bit different, In Rad model first we develop a prototype and then we successfully testing the prototype. And testing of this prototype model then we only developed our main projects. In RAD model the whole process of software is divided into specialized phase these are Business Modelling, Data Modelling, Process modelling, Application generation, testing and turnover and prototyping. Finally, this model is based on prototyping and iterative development with no specific planning involved. This model has one disadvantage after prototyping it never takes feedback and maintain the system so the modification of RAD model is also called as Prototyping Model. In this model first analysis the project requirement then design a system and make a prototype and give this prototype to our customer and they test and check as per their requirement. After that they give some specific feedback and we update and review our system than finally develop the project. So this is one of the best SDLC model it enable to required customer requirements as an earlier stage of development then as per requirement they develop the prototyping. And it helps get valuable feedback from the customer and helps software designer and developers understand about what exactly is expected from product under development (Digru, 2005).
Digru, A. (2005). Modern Engineering Software concept. International Journals of Computer and Information Science .
Maier, E., & Amier, M. (2014). ANSI/IEEE ans System Engineering . IEEE .
The three main software development strategies are as follows.
This strategy has 7 steps which are planning, analysis, design, development, testing, implementation and maintenance. Each step has been chronologically places and every step needs to be fulfilled completely before moving on to the next step. Different teams may work on various steps which they then hand over to the next team. But one major shortcoming of this strategy is that circumstance change and so does the design. For this the waterfall has to be revisited to the planning stage and reworked which is inefficient, time consuming and even frustrating. This strategy has been used a lot but its success rate is discouraging.
This method uses 6 steps which are all the steps used in waterfall except maintenance. This method is time bound and does the best from the resources available at hand. One major advantage of this over waterfall is that it deals with fast changing environment and makes changes accordingly. Various steps are conducted at the same time unlike waterfall. Another aspect that this method holds is that it is customer driven. It means that they take feedback loop from their prototype and make appropriate changes from the suggestions received before the final launch.
This method as its name suggests is very flexible in nature. Various groups and steps are mixed and are developed cohesively. This gives more priority to team work. It even involved the customers or business users in the development process and so is very constructive and innovative in nature. This method is very quick and usually takes 2-6 weeks to get it done. This method exceeds the other two in terms of innovation fostered by mutual team work resulting in fostering of trust between the team members and even the end users. "Agile development methodology has had a higher success rate than any other software methodology. Despite agile methodology’s success, agile projects face challenges. (Litchmore, 2016)”
Factors necessary for choosing a software development strategy
No method of software development is perfect in itself. All have their advantages and disadvantages. While choosing a software a company should understand the goal of the software and how it impact the overall organization in the long run. It is therefore important to draw up an enterprise architecture first based on which the application and use of software can be pointed out. The later implications of poorly planned software development will be too costly and the damage will already have be done. (Wallace, 2015) The company should understand the cost of development and maintenance cost in future, the flexibility for changes in the software if the need arises and its practical implication to meet the enterprise goal. Return on investment should be higher than the cost related to its development
Litchmore, K. A. (2016). A comparative study of agile methods, people factors, and process factors in relation to project success. Ann Arbor: ProQuest Dissertations Publishing.
Wallace, P. (2015). Information System in Action. In P. Wallace, Introduction to Information System (pp. 4-9). New Jersey: Pearson Education, Inc.
System Development Life Cycle (SDLC) is the process that incorporates planning, analysis, design, development, testing, implementation and maintenance of system/software. The software development strategies are classified depending on how they execute different stages of SDLC in developing a software (Wallace, 2015). The major software development strategies are:
The Waterfall model was proposed by Winston W. Royce in 1970. It is a linear and sequential approach for developing software where every preceding steps need to be completed before moving to the next stage. It is recursive in nature as each step can be endlessly repeated until it is perfected (Bassil, 2012). The output of one phase supports as the input for next phase in this model. Once a stage is completed, going back is complex, time consuming and not allowed in most cases. It is difficult to incorporate the changes that may occur after the process is started since the requirements and the procedures are predetermined and cannot be changed or modified once the process is started. Though this method is in use since decades, the success rate is very low, especially in the long-term projects.
Iteration model, also known as incremental model focuses on compressing the time of software development to reduce the impact of changing business needs. Certain time frame is available for the completion of software development and then the requirements that can be delivered within the stipulated time is determined. Unlike in waterfall, the phases of SDLC can overlap in this model. The whole project is divided into small parts (iterations) and each iteration performs like mini waterfall model to complete the tasks assigned to particular group (Nugroho, Waluyo, & Hakim, 2017). The work of each iteration will lead to incremental achievement of the overall project goals.
Agile strategy is an adaptive model that requires active participation of the stakeholders. The involvement of end users make this strategy unstructured or less structured. In addition, activities are not sequenced as per SDLC and the phases of SDLC occur simultaneously (Wallace, 2015). It focuses on collaboration with the cohesive teams in software development process as they are the one who will be using the software. It also provides spaces for the accommodation and implementation of significant business changes that may occur during the development of software.
All software development strategies have their own significance and limitations and there is not any right or wrong method of software development. The choice of the strategy depends upon the nature of the project, organizational requirements and time and budget available for the purpose. The waterfall strategy is suitable when a clear picture of final product is available and the interest is on the final product rather than the time and money being the concern. When the requirements are well defined and are not subject to expected to change sooner, waterfall method is preferred. The developers opt for agile model when the requirements are not well defined and expected to change during the development phase and when the developers and stakeholders require freedom of time and options (Kannan, Jhajharia, & Verma, 2014). Similarly, iterative model is used when the project too large and some of the details are expected to evolve over time though the major requirements are clearly defined in the beginning.
Bassil, Y. (2012). A Simulation Model for the Waterfall Software Development Life Cycle. International Journal of Engineering & Technology (iJET), 2 (5). Retrieved from https://arxiv.org/ftp/arxiv/papers/1205/1205.6904.pdf
Kannan, V., Jhajharia, S., & Verma, S. (2014, October). Agile vs waterfall: A Comparative Analysis. International Journal of Science, Engineering and Technology Research (IJSETR), 3 (10), 2680-2687. Retrieved from http://ijsetr.org/wp-content/uploads/2014/10/IJSETR-VOL-3-ISSUE-10-2680-2686.pdf
Nugroho, S., Waluyo, S. H., & Hakim, L. (2017, July). Comparative Analysis of Software Development Methods between Parallel, V-Shaped and Iterative. International Journal of Computer Applications, 169 (11), 7-12. Retrieved from https://arxiv.org/ftp/arxiv/papers/1710/1710.07014.pdf
Royce, W. W. (1970). Managing the Decelopment for Large Software Systems. Proceedings of IEEE WESCON, 26 , 1-9.
Try QA. (n.d.). What is Iterative Model- Advantages, Disadvantages and When to Use it? Retrieved from http://tryqa.com/what-is-iterative-model-advantages-disadvantages-and-when-to-use-it/
Wallace, P. (2015). Introduction to Information Systems (2nd ed.). New Jersey: Pearson Education, Inc.
O’Brien & Marakas (2006), in their book Introduction to information systems, Software development projects is a step by step approach using alternative development method focus on designing, creating, and maintaining large-scale enterprise application software. The three (3) major software development strategies are explained below:
Waterfall Method : In the waterfall method, the Software Development Life Cycle (SDLC) tasks occur sequentially. This method is also called as sequential development model. Here, the activity starts and after completion only next activity begins. At the time of development the progression continues forward from one completion to another. The method has been used for decades. The method is linear which is easy to implement. The cost are minimal for its implementation (Balaji & Murugaiyan, 2012). But, the success rate for waterfall are disappointing for large projects. This might take a long time to complete a fully develop software. The fully developed software are difficult to change according to the preference of client in need.
Iterative methods : It compress the time horizon for software development where it has continuous feedback between each stage and the prior one. This is the most realistic of the traditional software development models that focus on the time available until the next release, or iteration, and the development team determines. Here, it depends on the spectrum of the coefficient matrix. This method is in determining the three-dimensional structure of objects from electron micro graphs (Gilbert, 1972).
Agile software development methods : Generally, agile refers for moving quickly. This means the software help on customer satisfaction by rapid delivery. It uses an unstructured approach. Here, the software has its ability to respond to the changing requirements of the project. There is face to face communication and continuous inputs from the client on development of software. This method is profitable only if the projects are small, in large project it is difficult to judge efforts and time required (Balaji & Murugaiyan, 2012).
Factors that companies consider when choosing which software development strategy to utilize
The selection of the project heavily depend upon the type of projects. If the project can be launched in discrete phases then we can go for iterative approach. When the requirements are clear and stable then we can have waterfall method. And lastly, if the projects are changing in nature or else of unclear to end users then can have agile approach. This would finally help on cost and time saving for the project. The size and culture of the organization also matters to choose the method. If a cultural shift from the "me” to the "we” mentality then we can have agile method rather going or waterfall and iterative approach.
Balaji, S., & Murugaiyan, M. S. (2012). Waterfall vs. V-Model vs. Agile: A comparative study on SDLC. International Journal of Information Technology and Business Management, 2 (1), 26-30.
Gilbert, P. (1972). Iterative methods for the three-dimensional reconstruction of an object from projections. Journal of theoretical biology, 36 (1), 105-117.
O’Brien, J. A., & Marakas, G. M. (2006). Management information systems (Vol. 6). McGraw-Hill Irwin.