December 14, 2018
The field of software development is diverse. Software development isn’t all about the code. In fact, coding is a part of the overall development project lifecycle. Irrespective of what kind of software application product is being developed, outsourcing or not, there are a series of phases or processes that are carried out during the software application development. Companies, including outsourcing firms, have between four and six phases for their projects.
The typical software development phases would be as follows.
Project initiation
The initiation phase is the approval process of the project details. Generally, it is when the project manager is defined and when it commences. Later on in the next phases, the project manager’s effort along with other responsible individuals for the project will define the overall schedule and other project-related needs.
Systems engineering
In this phase, the work begins by establishing the different requirements for all necessary system elements and then allocating some to a subset of these requirements to develop the software. This system is essential when software must be compatible with other elements such as databases, hardware, and people. Systems engineering also includes the gathering of requirements at the system level with a small amount of top-level design and analysis.
Requirements analysis and definition.
This phase begins by analyzing what exactly must be done to complete the project. After project initiation, the software development starts with the identification of the requirements noted in the systems engineering phase and ends with the formal verification of the developed software in line with those requirements. The requirements gathering process is focused specifically on what type of software is being developed. To understand the nature of the programs to be built, the software engineer needs to understand the information domain for the software, as well as what are the required functions, different behavior, performance, and interfacing. It is in this phase that the requirements are formally documented so it can serve as a solid foundation for software engineering. This phase also defines the functionality and the performance of the proposed program and system.
Generally, it is the requirement analyst’s duty to take care of the requirements in any software development project. Based on the different types and levels of software requirements, the analyst prepares the document with different specifications for both onsite and offshore before and after the project transfer.
Levels and Types of Requirements
Functional:
These are the requirements that specify how the software system should perform, how the data in the program can be manipulated.
Non-Functional:
These are the requirements supporting the primary and functional requirements. Non-functional characteristics like software quality can define the product output.
User Requirements:
These are the requirements that define what the software system must-do for the users or the market to perform their different tasks and objectives. Sometimes multiple user-level requirements exist to satisfy more than one business requirement.
Interface:
These are what define data or information flow from the software to different external devices available like fax, printer, shared resources, and other software applications that are connected outside the main software product.
Performance:
They are requirements that deal with system performance such as how the system should react in different instances and how should it respond to user interactions.
Data:
These requirements deal with the manipulation of data and where it should be stored etc.
Security requirements:
These requirements are the most important when the project is being sent overseas or offshore where security risks are very high. These requirements deal with all the possible security issues in the project
Requirements validation and management come next. This is the last step in the process of requirements development wherein the identified requirements are validated to ensure that they are clear, complete, and are written correctly for customer satisfaction. This step may lead to the iteration of the other steps in the software development process if there are gaps, defects, and other issues. One of the validation mechanisms that can be conducted is peer evaluation of the document that contains requirement specifications. Peer evaluation is known to have the highest priority in the detection of possible software gaps and defects.
Requirements management is the tracking of the requirements from the start to the deployment of the project. It is composed of a different set of activities that will assist the project team to identify, track and control requirements and changes at any time throughout the software development project. This also involves an analysis of the requested changes, approving or disapproving the changes needed, and implementation of those changes. Requirements management also takes care of keeping and tracking consistent project plans and status in the ongoing software development process.
Design and Development.
The design and development phase represents the “how” phase. It is the longest phase of the project and is the most expensive when it comes to cost. This is where most of the project expenses are allocated. The product architecture is developed, and this is also when the design is broken down into detailed information until the software modules can be specified and the coding process begins. Details on computer programming languages, environments, packages, machines, distributed architecture layering, application architecture, platform, memory size, algorithms, global type definitions, data structures, interfaces, and many other engineering details are all established in this phase.
During the design phase, S/W Design Interface Analysis, S/W Design Evaluation, Software Design Traceability Analysis, and Test Plan Evaluation are also carried out. Depending on the design method being implemented, the design model comprises a data design, an architectural design, component-level design, and an interface design. Data objects are translated into data structures that reside within the software itself.
At a higher level of concept, data design may lead to the definition of a database architecture or a data warehouse. In software applications, the data architecture will have a profound influence on the software architecture that will process the data objects and structures. At the program component level, data structure design and the associated algorithms are required.
Testing and Integration
Software testing has been identified as the basic form to identify defects for the majority of software projects. In general, software testing is a one-step software process that is often viewed as destructive rather than constructive because of its nature. Software testing is also done as a defined process of software system execution to determine its compliance with the specifications noted during the first few phases.
The testing phase starts with creating different test cases to demolish the built software system. Once the coding has been done, the program testing begins. The software testing process focuses on its logical internals, assuring that all possible statements have been tested, the functional externals are uncovering errors, and ensuring that the defined data inputs will produce actual results that meet with required results. After the first phase of testing is done, the product is integrated into its operating environment. The phase typically ends when the users or clients sign off on the user acceptance or agreement results.
Any software engineering project can be tested in two different ways. The first testing is to check whether each software function is fully operational, while at the same time searching for errors in each different function. One good example of this is black-box testing. Second testing is where the internal operations of defined functions are tested. This is the most commonly known example of white box testing.
Unit testing begins at concentrating on each unit, function, or component of the software system. Then the spiral progresses outwards to integration testing where the design and software architecture are tested and investigated carefully. Moving more outwards of the software system spiral is the validation testing that concentrates on the validation of the different requirements against the software requirements that is being constructed. Finally, the system testing where the software is built is tested together with the other components like hardware peripherals and shared resources that can be connected to the software once it's ready for launch.
Deployment and Maintenance
The deployment and maintenance phase is the installation of the software product into the different production environments available. The software project is officially over at this point and the finished product enters the software maintenance period. The software will undergo different changes after it is delivered to the customer, so the software support and maintenance re-applies each time of the preceding phases of the existing program rather than a new one.
In some outsourcing environments, each phase starts with the same processes and ends with the implementation of that phase in an outsourcing environment. When the total software application is developed and tested by the offshore team, the application is then deployed into a package and is finally sent to the client’s location for final testing. Field testing is usually done by the client’s personnel and the feedback is obtained and sent back to the service provider's personnel from the client for next processing.
It is very important to choose the right software application development partner when it comes to outsourcing. Businesses must make sure that the partner they are working for offers maintenance and support services to avoid future conflicts in the product should the need arise.