Incremental model is a method of software development where the model is analyzed, designed, tested, and implemented incrementally. This document provides a generic overview of how it is developed a particular project with an incremental model. The project focuses on analysis, design, and implementation of incremental model. The project also outlines a short brief about maintenance phase and various reasons for maintenance. The analysis phase is all about making a research and thinking of how to solve a problem; it's very significant to study the current system before you can start working on major changes. The design usually focuses on what programs are needed and a detailed plan of software components. Then lastly the implementation is when the project is completed and the software is installed at the customer site.
The aim of every business is to make profit. The demand is due to having satisfied customers as a result profit will be made. In every software organization where they get various projects from various industries, the organization can decide on which model to use looking at how big or small the project is. The projects provide an overview of various activities of the software development life cycle. SDLC (Software Development Life Cycle) refers to the steps involved in creating software from scratch. SDLC is a systems approach to problem solving and is made up of several phases. The phases describe the activities performed at each stage of a software development project. Many models are available such as incremental, iterative and Component-Based Development model; the selected model should improve project tracking and control or minimize risk exposure and improve client relations.
In incremental model, the system is developed in various units. These units entails of requirements designing, development and test phases. New functionalities are added in each stage. This is done to allow the user to see a functional product in a short period of time hence it allows the user to impact on what changes are included in subsequent releases.
By examining a range of recently published journal articles and internet sites on the SDLC models, we discovered that the incremental model is the best model and we decided to choose it for any particular project.
Incremental model is the best model to be used for both large and small project rather than any other models. This is because incremental model composes of the Waterfall and Prototyping model. Waterfall model is mainly targeting the small project. The other weakness of the waterfall model is that it does not require the designer to step back for correcting errors. Therefore the incremental model combines of the two models hence it will tackle both small and big projects. Incremental model also handle errors pretty well as they can be easily identified due to the requirements being broken down into smaller units. This make the incremental the best commercial method to be used as for iterative and linear models only allow errors to be recognized until acceptance testing, when it is probably too late to correct the errors. Linear and iterative model each stage needs to be done carefully before moving to the next stage.
Some advantages and disadvantages of the incremental model are listed below:
- It handles large projects.
- It has the functionality of the water fall and the prototyping model.
- Easier to manage the project as it is broken down into smaller pieces.
- Changes can be done through the development stages.
- Errors are easy to be identified.
- When rectifying a problem in a functional unit, then all the functional units will have to be corrected thus taking a lot of time.
- Requires good planning designing.
Few years ago, software was mainly developed to solve problems. When looking at the reason behind developing a program, it's mainly to solve the concerns of users. It also focuses on producing a good program or a program of higher standard. Programmers need to know how to answer the problem.
Developing software does not only require a programmer to have good qualification rather the programmer needs to be able complete the program in a specific time. Developers need to be able to know the type of programming language to be used to complete the software and not forgetting their capabilities. Developers should also have the experience of developing software.
Management of the development team plays a significant rule in the completion of the program. The management set all the steps to be followed and tools to be used to develop a successful program. Management does not directly build the program; management set the stage and provides the tools on creating the programs.
Planning -.The first stage of every software development is to know the exact purpose of the software to be developed. This stage is known as the Planning stage. The need of proposed software needs to be well understood and know the market that the software focuses on. The management of both parties is involved as the will discuss the main objective of the software also considering the market.
In the analysis stage, before you can think of solving a problem it's very significant to study the current system before you can start working on major changes. When software is developed the developers needs to understand the problem for which the software is to solve. Development team should meet the client to study their system. For a program to be successful the analyst must understand the features, functions, behavior and performance of the system. The problem could be to increase the speed of the existing or to automate the system or simply to develop a new system. Large software that has many features requires the developers' good skills and experience to take proper decisions. The main task of the analysis stage is to identify the expected needs from the system.
Analysis in the incremental model focuses on find out the influences that makes the organization to develop a new system or modify the existing system. There are some questions that need to be asked during analysis. These are as follows:
Is there really a problem?
This question helps to investigate and know whether it's necessary to start a new project or modify the existing system. Imagine a scenario where a manager wants to change the organizations selling operations by spending thousands of money and many hours to implement an online shopping system. After it's launched, the manager discovered that he wasted a lot time and wasted hundreds and thousands money because no-one actually uses it because they were happy with the old system.
If there is a problem, is it worth fixing?
Let's say it is now discovered that there is a problem, so what need to be done now is to consider a "cost/benefit" analysis.
Some of the changes which can influence the organization change the current system may be of the following:
- Change in technology: changes of the running system can be done due to change in technology. A system can be changed from a manual to automatic. As technology change rapidly the need for organization to change their operation for better services. New machinery or technology may enhance efficiency in the use of labour and material. It is clearly important to know whether the improvements made may affect the organization positively.
- A company can buy a machine in order to increase its productivity. The company needs to make a research concerning the type of the machine they want to best satisfy their needs. If it happens that they don't make a good research they can spend money on buying a machine which will not meet their needs. Suppose that the machine they have bought on the 1st June cost million Pula and the following day that is on the 2nd June they fund that the type of machine they want cost P500000 which makes twice the productivity of the first machine. This shows that the company has made a loss "sunk cost".
Consider an example below:
Think of an Analysis phase like a visit to an IT (information technology) technician. You will be pretty concerned if you told the technician that your computer doesn't work and immediately jump on removing different parts before even examining it or ask you any questions. Probably such kind of behavior may raise more problems than it solves. So technicians analyze problems first - observe, question and test before beginning to remove computer parts.
So this example above is similar to the SDLC models where the problem solvers have to study the system they want to change in an organization. Before they can decide on what has to be done. They will have to study and understand the organization's operation, its context, its strengths and weakness. After all this is done, now it will be time to decide how to start improving it.
The design phase actually describes how the solution will work, once the structure of the software is confirmed by the management, the architecture of the program is now created. A work will be left for the programmers to choose the ways of developing the program. The top-down approach is used to develop and link major programs. The bottom-up approach is then used to combine small units with the main program. The steps involved in the development are drawn down and will be followed to develop the program. The programmer needs to decide the best model that is suitable for the program.
Incremental design has a new process of processing design in a structured way that will allow the user to reuse the other part of the design which is unchanged. This can save time for the designer or the processing of each iterative. Since the increment model is divided into functional unit the result that is done get from the first design of the first functional unit is used as the input of the next design of the second functional unit. Incremental Design flows for new and existing designs. Before running any Incremental Design flow, the design should meet the requirements without using Incremental Design. For Incremental Design to significantly reduce runtime and maintain performance for unchanged portions of the design,
Incremental provides few benefits to the design.
Design of the incremental model saves time as the design of the first phase can be modified or part of the design can be reused. The other thing that saves time is the use of the output of the first functional unit to the next unit. This is being done with the help of feedbacks from the customers.
Easy to test
It is easy to test since the project is divided into functions. Errors are identified and managed easily as the project is divided into smaller units.
Once testing isfinished and the software is proven good for implementation,it is released to the organisation. It's expected that developers will face serious challenges of fixing different bugs as they are discovered one by one by different users. The main difference of the implementation stage to the testing is the amount of bugs expected.
System installation is the process whereby the newly developed system is installed. Both old and new software are used together for about one or two months until it is confirmed that the newly developed system is working as required without any bugs. After it has been confirmed that it is working properly the old system is removed.
Testing is one of the important stages of the SDLC lifecycle. The main task is to detect errors in the software. A quality produced work needs to be tested regularly. Testing is an activity that needs to be done throughout the life cycle. It is also used as a major source of feedback. Testing should not be done at the end of the software as it can be dangerous. Rather it has to be done timely throughout the stage. . There are number of test that are used during testing phase.
- Unit testing
- Regression testing
- Stress testing
- Functional testing
- Integration testing
Programs in the incremental model are coded in various functional units, these subjects to separate and detailed test. After the first functional unit get completed; it taken to the customer to have a review on it. Feedback provided by the customer concerning the unit is used to improve/modified to the next unit (output of the first unit is used as the input of the next functional unit. This process is going to take place until customers are satisfied. The reasons why this system is tested is to check if the interfaces between functional units work together (this is known as integration testing), check if the system works on the specified platform and with the required volume of data (also known as volume testing), and checks if the system meet the users requirements (it is known as acceptance/ beta testing). Some of the test that can be used in the incremental model:
This is where the testing of each individual components are done to check if there are working. The programs that make up the system are tested here. It tests modules separately and this allows tester to discover errors in coding and logic inside a particular module.
It is done to test again the past tested segments of the system to make sure that they are work correctly after a change was made in another part of the system. To make sure that operational performance does not go down because of the changes and they are no new problems introduced, the system should be tested thoroughly.
This stage of SDLC is used to correct/maintain the software if gives the client some problems. Post delivery maintenance is done after the software is delivered to the user. Maintenance can be done for different purposes.
Corrective maintenance: is a type of maintenance which is done when a fault has occurred either to the coding part, design or documentation. Software problems may be due to system failure or discovery of software errors.
Perfective maintenance: as the word denotes the meaning, it is a type of maintenance that is done to change the functionality of the software. A change can be done at the coding part of the software. A change can be done to increase the performance of the software or even its functionality.
Adaptive maintenance: the word adaptive means to get used to something or the environment in which the product operate. Adaptive maintenance is done when the product is not working perfectly according to the user expectation. Software adaptive can be done when the software is not portable with the type of hardware it is installed in.
Our finding in this research concludes that the incremental model is the best model in commercial projects because it accumulates all sorts of software development whether small or large. The model satisfy the clients and benefit both parties i.e. developers and clients because the product will be developed and delivered well in time compared to a situation where a programmer will be coding to solve a problem without analyzing, designing, and testing.
- www.ffiec.gov//ffiecinfobase/booklets/d_a/07 also available from Jacob Nielsen, Originally published in IEEE computer vol.26,No.11 (November 1993), pg. 32-41
- www.startvbdotnet.com also available from System Analysis and Design. With UML 2.0 an Object-Oriented Approach, Second Edition Dennies, Wixon, and Tegarden, Wiley 2005
- Software Management Guide, Vol. I, Software Technology Support Center, October 1993, p. 23
- Boehm, B.W., "A Spiral Model of Software Development and Enhancement," Computer, 1988.
- Blake, Jeffery, "Software through Pictures vs. Paradigm Plus," Advanced Systems Magazine, June 1994, p. 84