subject: Practices Followed By Successful Software Development Projects [print this page] Today most of the software development services are failing due to over budget, missing function or poor execution. This tutorial deals with the practices for software development projects. Software development best practices are practices that have proven to reduce development times, lower costs, and improve quality.
Practices Followed
Development process
Appropriate development lifecycle process must be selected because all other activities are derived from the process.
Modern software development services use spiral-based methodology over waterfall process.
Rational Unified Process (RUP), IBM Global Services Method, and extreme Programming (XP) are also used.
The execution of the process is more important than the selection of the process.
Plugins can also be added to the RUP.
Requirements
For a project to be successful, the requirements must be gathered and agreed upon by the development team. Requirements are of two types:
Functional requirement- documented by using Use Cases.
Non-functional requirement-describes the performance and system characteristics of the application. They have a major impact on the application architecture, design, and performance.
Architecture
It is the key factor of software development in India. Well known industry architecture must be applied to bring the projects on the right track. .
Tried and true practices are called patterns. They may be:
Classic Gang of Four patterns
Java patterns
EJB design patterns
The Core J2EE Patterns catalog is Sun's equivalent. The study of failure of many projects has given rise to the concept of antipatterns. They are valuable because they provide useful knowledge of what does not work, and why.
Design
Along with a good architecture a proper design is also necessary for the development projects. The basic principles to be followed while designing are that it must be:
Simple
Information hiding.
Object-Oriented Analysis and Design should be performed for many projects using UML. One of the promises of OO is reuse, but this requires more efforts for creating reusable assets. Code reuse is but one form of reuse and there are other kinds of reuse that can provide better productivity gains.
WebSphere application design
Extensive knowledge of the best practices and design patterns for the WebSphere product family can be found in IBM. Consulting for a short time saves the cost later in the project and thus brings tremendous return on investment (ROI).
Construction of the code
It is the most visible portion of total project effort. The projects with no development process carry out these tasks under the guise of programming. The daily build and smoke test is the best practice for constructing code. Martin Fowler suggests continuous integration that also integrates the concept of unit tests and self-testing code.
Peer reviews
Reviewing others works are found to be more effective than testing. The plans, requirements, architecture, design, code, and test cases of the development process are usually reviewed. Karl Wiegers paper on the Seven Deadly Sins of Software Reviews explains the correct ways to perform peer reviews. Peer reviews bring software quality at top speed.
Testing
Its an integral part of software development services and needs to be planned. The test cases are planned before coding starts, and test cases are developed while the application is being designed and coded.
Performance testing
Testing is the method to find application defects, but it cannot catch architecture and design defects. These defects can be detected by simulating load testing on the application before it is deployed and to deal with performance issues.
Configuration management
It involves knowing the state of all artifacts in the project, managing those artifacts, and releasing distinct versions of a system.
Management of quality and defects
Quality priorities and release criteria must be established for a project.
The defect arrival and fix rate can help measure the maturity of the code, while the project is coded and tested.
A defect tracking system linked to the source control management system is to be used.
Deployment
Final stage of releasing an application for users.
It must be planned and a deployment checklist must be used.
System operations and support
The support area responds and problems. The support problem database is hooked into the application defect tracking system, to ease the flow of problems.
Data migration
Data migration from the existing data sources is usually a major project by itself. 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.
Project management
Its key to a successful project. All the other practices described here are related to project management. One way to manage a difficult project is through time boxing.
Measuring success
The development process can be measured against an industry standard known as the Capability Maturity Model (CMM) from the Software Engineering Institute at Carnegie Mellon University.
Conclusion
This article introduced the practices that help improve the success of a software development (India) project. By following these best practices, you have a better chance of achieving a higher maturity level and a successful project.