What and Why?
Software engineering is the practice of using selected process techniques to improve the quality of a software development effort. This is based on the assumption that a methodical approach to software development results in fewer defects and, therefore, ultimately provides shorter delivery times and better value. The documented collection of policies, processes, and procedures used by a development team or organization to practice software engineering is called its software development methodology (SDM) or software development life cycle (SDLC).
GSTi adopts these software development methodologies:
- Agile Methodology
- Global Delivery Model
- Scrum Methodology
- Accelerated SAP Methodology
Methodology as Risk Management
The challenge in selecting and following a methodology is to do it wisely — to provide sufficient process disciplines to deliver the quality required for business success, while avoiding steps that waste time, squander productivity, demoralize developers, and create useless administration. The best approach for applying a methodology is to consider it as a means to manage risk. You can identify risks by looking at past projects.
If your organization has been plagued by problems resulting from poor requirements management, then what you need is a robust requirements management methodology. Once this problem has been solved, through a repeatable process, the organization might then streamline its course, while ensuring that quality is maintained.
Every step along the SDLC has its own risks and a number of available techniques to improve process discipline and resulting output quality. You may come across the following during the life cycle:
- Project charter and business case
- Definition of the business process and business requirements
- User, Functional and System Requirement documentation
- Top level architecture, technical approach, and system design
- System decomposition into component and unit specifications and design
- Coding, unit test planning, and unit test
- Generation of test data for unit testing and system testing
- System integration and testing
- Implementation, delivery and cutover
- Training and user support
- System upgrades and routine software maintenance