A software project needs a lot of effort, dedication and planning to be successful. It just does not become successful on its own, but a lot of managers do not pay the attention that it requires. For many managers and more specially for the developers and testers involved in the project, it seems that terms like planning, quality processes, etc seem to be time wastages, time that would be better spent in doing actual work. But for those involved in making sure that the project is successful, time spent in detailed planning, risk management and tracking is time well spent.
Some of the things and factors that go to set software projects on the path to success are:
- Not believing that things will be right without planning: This is most critical. Unless the management of the project including the sponsors and project managers believe that a thorough planning is necessary to ensure that things are correct and proper and to ensure a smoother running of the project, it is much more likely that the project will go down in flames.
Planning software development, estimates, staged development, requirements capture, and risk and change management control procedures, business case studies, user interface prototypes and overall project control leads to a much better project execution. Proper planning ensures that the project doesn’t move away from its targeted goals while the customer gets a clear definition of the project and is in the know of the project status and has ready access to project deliverables at any point of time.
- Selecting the proper development process: It is important to choose the appropriate development lifecycle process to the project at hand because all other activities are derived from the process. For most modern software development projects, some kind of spiral-based methodology is used over a waterfall process. There are several choices, including the Rational Unified Process (RUP), and eXtreme Programming (XP). Having a process is better than not having one at all, and in many cases it is less important on what process is used than how well it is executed.
- A strong requirements process: Requirements & Analysis is one of the most important and often most neglected activities of the software development life cycle. A good requirements model fosters communication between the business and IT by enabling them to share a common vision of the system’s solution prior to implementation. This will ensure that the system meets the business needs, can be delivered on time, and have the level of quality and flexibility to easily accommodate future business needs.
- Detailed risk identification and management: Every project is associated with a fair amount of risks, and sometimes not just in terms of schedules or budget or deliverables. Projects that don’t plan for handling risks are hit by sudden surprises and are left floundering with promised schedules and deliverables and can end up losing the client. Success at risk management means creating a plan to assess the risks, the ‘which’, the ‘what’ and the ‘why’ of each risk identified and planned for.
- Clear understanding of customer needs: To provide a truly innovative solution that customers will love, you need to understand their needs and fill them rather than simply implementing the features that customers request. As a part of this step, it is essential that information is taken from users at all levels, including the people who are going to be directly using the software and are affected by the software workflows, and from middle and senior management so that their concerns are taken care of.
- Prototyping: Wherever possible, during the requirement gathering and design phases, prototyping should be used. Preparing a prototype shows the client as to how the broad set of requirements will be met, and reassures them about the accuracy of the requirements gathering phase. In addition, quick changes can be easily incorporated.
- Proper development process: There are several steps in the development process that could be optimized.
a) Construction of the code – Construction of the code is a fraction of the total project effort, but it is often the most visible. Other work equally important includes requirements, architecture, analysis, design, and test. In projects with no development process (so-called “code and fix”), these tasks are also happening, but under the guise of programming. A best practice for constructing code includes the daily build and smoke test.
b) Testing – Testing is not an afterthought or cutback when the schedule gets tight. It is an integral part of software development that needs to be planned. It is also important that testing is done proactively; meaning that test cases are planned before coding starts, and test cases are developed while the application is being designed and coded.
c) Quality and defects management – It is important to establish quality priorities and release criteria for the project so that a plan is constructed to help the team achieve quality software. As the project is coded and tested, the defect arrival and fix rate can help measure the maturity of the code. It is important that a defect tracking system is used that is linked to the source control management system.
d) Performance testing – Testing is usually the last resort to catch application defects. It is labor intensive and usually only catches coding defects. Architecture and design defects may be missed. One method to catch some architectural defects is to simulate load testing on the application before it is deployed and to deal with performance issues before they become problems.
e) Peer reviews – It is important to review other people’s work. Experience has shown that problems are eliminated earlier this way and reviews are as effective or even more effective than testing. Any artifact from the development process is reviewed, including plans, requirements, architecture, design, code, and test cases.
f) Data migration – Most applications are not brand new, but are enhancements or rewrites of existing applications. Data migration from the existing data sources is usually a major project by itself. This is a task for experienced people. It is as important as the new application. Usually the new application has better business rules and expects higher quality data. Improving the quality of data is a complex subject outside the scope of this article.
g) Project management – Project management is key to a successful project. Without effective direction and tracking, a project can quickly lose focus. A good project manager holds the project together, and makes sure that all issues and risks are handled.

Recent Comments