A clearly defined process is vital for successful project execution. A good process results in improved productivity and quality which results in fully functional software, within stipulated budget and on time.
To this end, we have created an internal Software Engineering Process Group (SEPG), which defines, drives and constantly improves the internal process. We simply call the process the PIT Software Development Process (P-SDP) for your easy understanding and recall.
The various stages of P-SDP are:
In most cases, clients have only a vague idea of what they want as end result. Such confusing situation is often clearned by good software engineers who gather requirements from client in a structured way. Delivering understanding documents/scope documents or Building prototypes are the 2 most efficient ways to make sure that both parties understand what they want in the end.
Some functionalities may be out of scope from the initial scope of the project as a result of unclear requirements at the start of development. When a dispute arrives regarding changes, this scope document can be considered a legal document so that any ambiguity of what was promised to the client can be clarified.
Domain knowledge is vital for requirement gathering, whether it be an addition to an existing software, a new application, a new subsystem or a whole new system. Assuming that the software engineers are not sufficiently knowledgeable in the domain of the new software, the first task is to either find someone with "domain" knowhow or understand the domain of the software.
Specification is the task of precisely describing the behaviour of the software to be developed, possibly in a very detailed manner. Most of the successful applications are developed with a good specification as its back. If the scope of the application is bigger, then ideally it is good to have prototypes and use cases accompanying the specification document. A use case is a description of an application's behaviour as it responds to a user request that originates from outside of that system.
Architecture is concerned with making sure the software developed will meet the requirements of the product, as well as ensuring that future requirements can be addressed. The architecture step also addresses interfaces between the software system and other software products, make sure that it works under varying scenario eg. Varying load, different hardware or operating system etc. A good architecture ensures stability of the software to be developed.
Implementation is the part of the process where software engineers actually program the code for the project. Software testing is an integral and important part of the software development process. This part of the process ensures that bugs are recognized as early as possible. Testing comes under the scope of Quality Assurance which is explained under a separate section in this site.
Deployment is done after code is tested well and is approved for release. Support after deployment is important because a large percentage of software projects fail because the developers fail to realize that the project is a success only if employees in the client organization is using it for their needs. If they don’t, then the project often ends up in failed category evenif the tool is bug free. So it is very important to have training classes for new clients of your software.
Maintenance and enhancing software to deal with newly discovered bugs or new requirements can take far more time than the initial development of the software. It may be necessary to add code that does not fit the original design to correct an unforeseen problem or it may be that a customer is requesting more functionality and code can be added to accommodate their requests. Depending on the size of the projects, there is often a maintanence contract which ensures client to maintain their software well so that any issues or changes can be managed in an efficient way.
Learn about Software Development Methodology
Back to Global Delivery