We are all familiar with the products of software design. We use them every day to do everything from killing a little bit of time to running multi-billion dollar businesses. But how do the software products you use every day go from an idea the mind of a person to the full bodied application you use. There are a lot of different methodologies for software development, but most of these methodologies share some critical steps.
- Planning: In the planning phase of software development the software team and their client get together and discuss exactly what the client needs the software to do. They discuss pain points that the client has and what features can be implemented to meet the clients needs. These discussions lead to a comprehensive document called a scope document, that online exactly what should and should not be included in the project. In addition, the hammer out a schedule for the project. The scope should serve as the blue print for completing work.
- Implementation: During this stage computer programmers actually begin to write the code that will turn into the program that the end user interacts with. For some methodology types, all of the implementation and programming work gets completed before anything is released. In agile methodologies such as the one used by Nourtek, programmers work on different components of the program simultaneously.
- Testing: Once the program is designed it is time to test. Many software companies use quality assurance professionals who are specially trained to find any bugs in the program. Also, at this stage the client can (and should) be included in testing. The best version of software can only emerge if testers “break” the software. This helps them identify where issues are and fix them before the product is launched. Often times in the testing phase, a beta version of the software is released to select end users to test as well. In certain methodologies this happens at the very end of the project, in others it happens as each feature is created and launched.
- Documentation: Technically the documentation process should be happening as the implementation and testing are underway. The documentation process is where, programmers make notes about features of the program and user manuals are created.
- Deployment: Once the product is ready for public consumption, the software team deploys it. This can happen in stages as often happens with Agile development models, or all at once. Once a program is deployed it is available for all end users to use.
- Maintenance: Many times we think of a released software product as done. However, developers and the original company continue to work on fixes for issues that come up as the software is being used and work to create new versions that integrate new technologies.
What do you mean by different methodologies?
There are many ways to go about any given task, the way that a person goes about a task set to them is their methodology. In software development, there are different ways to approach development and the approach used for each project is its methodology. Software companies choose methodologies based on the nature of the product, their work environment set up, and number of other factors that is unique to each company. Some of the main software development methodologies are:
- Agile Development: In Agile development a development team is split into sub teams and each team works on an aspect of an application. As each piece is completed and tested it comes online independently of the other pieces. This allows for more rapid development. In Agile Development, the steps listed above happen throughout the development of the project. The deployment phase happens when all portions of the program are up and integrated to form a whole application. Nourtek Solutions uses a variant of this methodology on many of its projects.
- Waterfall Model: In the waterfall model, each stage proceeds one after the other in a linear fashion. This method works well for smaller applications and applications that require highly cohesive and integrated functions.
- Spiral Model: In the spiral model the testing phase is more integrated into the implementation of software development allowing for earlier detection of errors.
- Rapid application development model: In this model, the planning phase is integrated with the implementation phase. This model allows for quicker prototypes but can run into problems with an ever expanding scope and miscommunications about requirements.
These development methodologies are not mutually exclusive of each other. Many development companies utilize different methodologies for different projects and even combine them to come up with unique methodologies that best meet their needs.