The feasibility study is used to determine if the project should get the go-ahead. If the project is to proceed, the feasibility study will produce a project plan and budget estimates for the future stages of development.
In this phase, the development team visits the customer and studies their system. They investigate the need for possible software automation in the given system. By the end of the this phase, the team furnishes a document that holds the different specific recommendations for the candidate system. It also includes the personnel assignments, costs, project schedule, target dates etc. The requirement gathering process is intensified and focussed specially on software. To understand the nature of the program(s) to be built, the system engineer or "Analyst" must understand the information domain for the software, as well as required function, behavior, performance and interfacing. The essential purpose of this phase is to find the need and to define the problem that needs to be solved. When this is documented we sit down with clients and agree the prioritisation of the requirements according to MOSCOW (Musts, Shoulds, Coulds and Woulds) principles and attempt to assign deliverables in a timebox approach to ensure that clients get early visibility of the deliverables during the project.
In this phase, the software development process, the software's overall structure and its nuances are defined. In terms of the client/server technology, the number of tiers needed for the package architecture, the database design, the data structure design etc. are defined in this phase. A software development model is thus created. Analysis and Design are very crucial in the whole development cycle. Any glitch in the design phase could be very expensive to solve in the later stage of the software development. Much care is taken during this phase. The logical system of the product is developed in this phase. The output from this phase is the technical and functional specification and the quality assurance strategy document. These documents are signed off by clients and they form the contract between SidLink and the client in relation to what is delivered.
The design must be translated into a machine-readable form. The code generation step performs this task. If the design is performed in a detailed manner, code generation can be accomplished without much complication. Programming tools like compilers, interpreters, debuggers etc are used to generate the code. Different high level programming languages like C#, C++, VB.net, Java are used for coding. With respect to the type of application, the right programming language is chosen.
Once the code is generated, the software program testing begins. Different testing methodologies are available to unravel the bugs that were committed during the previous phases. The quality assurance strategy document is reviewed and implemented. Different testing tools and methodologies are used in this phase. Testing is evidenced and signed off prior to delivery into the customer environment for final user testing. The purpose of this testing is to ensure that the developed solution will satisfy the needs of the clients in their operating environment.
When user testing is completed and signed off the solution is implemented into the live environment. The software will definitely undergo change once it is delivered to the customer. There can be many reasons for this change to occur. Change could happen because of some unexpected input values into the system. In addition, the changes in the system could directly affect the software operations. The software should be developed to accommodate changes that could happen during the post implementation period.