September 27, 2008 | Author: PM Hut | Filed under: Project Management Best Practices
Best Practices for Managing a Software Development Project
By ExecutiveBrief Staff
This article discusses a set of best practices for managing a software project and delivering an end-product meeting or exceeding expectations.
Has your company developed entirely new software or added to software already in use throughout the organization and found the process cumbersome, frustrating, and sometimes not living up to expectations or meeting organizational goals? If so, the solution to a smooth and effective development program may be as easy as staffing a well-qualified project manager and adopting a proven development process.
For any software development or other project initiative your company may be considering, it is critical to have in place and practice a set of effective and proven guidelines to ensure project success and delivery of the expected results: taking into consideration the role and responsibilities of a well-qualified project manager, knowledge of important business and financial aspects, and a step-by-step process that all contribute to the solid foundation and implementation of an effective project plan.
Developing a Practical Approach: The Role of the Project Manager
When undertaking a software development project, the first element to consider is the establishment of a comprehensive yet practical approach to the initiative that ultimately will lead to a successful end result.
The in-house project manager has a key role in ensuring each phase of the project is carried out as planned. The project manager is responsible for considering the potential risks involved with the project and how to avoid and resolve them, establishing and maintaining momentum throughout the project, ensuring individual project team member tasks are assigned appropriately and carried out according to specifications, and successfully addressing and resolving any conflicts that may arise during the length of the development project.
A well-qualified project manager is able to address what may seem to be an overwhelmingly complex process by developing an organized approach where the process is broken down into manageable individual tasks and understanding how to keep those involved in the project dedicated to the ultimate goal of meeting and even exceeding the expected end result.
If the project manager dedicates the necessary time, effort, and resources to the preparation of an efficient, comprehensive, and practical approach, then the project team may progress with ease and confidence as they deliver on their individual tasks, having a solid foundation and strategic framework at the outset. Far too often, however, failures with such projects are the result of not only a poorly executed plan, but one that ultimately lacked the fundamental elements of a well-though-out approach rooted in adequate preparation and commitment from the project manager and project team.
Designing a strategic plan means taking into consideration all aspects that can contribute to success or potential failure.
Embarking on the Initiative: Key Steps to Consider
With a comprehensive approach and a competent project manager in place to guide the new software development initiative, there is another important element your organization may find helpful as you embark on the project: establishing specific steps that can be followed to project completion that are based on proven industry experience in such a project environment.
Following are a set of practical guidelines to approach a software development project, established by two university professors and business consultants with specialized expertise in the computing, engineering, and general business environments.
Dr. Gordon Scott Gehrs is an adjunct instructor at the Illinois Institute of Technology (IIT) and a business consultant for the Jules F. Knapp Entrepreneurship Center at IIT. Dr. Dorota Huizinga is associate dean of the College of Engineering and Computer Science and a professor in the Computer Science Department at California State University, Fullerton, as well as a frequent business seminar speaker, a business consultant, and co-author of Automated Defect Prevention: Best Practices in Software Management.
Read on for nine key steps to consider as you embark on a software development project.
Step #1: Conduct Feasibility Analysis
According to Dr. Gehrs, a critical first step is to interview stakeholders in order to uncover whether a specific need exists, identify this exact need, and determine whether the proposed project can feasibly deliver the expected software development. “Many times, this is the point at which an ROI study will be carried out in order to determine project costs and benefits,” says Dr. Gehrs.
Step #2: Analyze and Determine Requirements
When it comes to the next step of determining requirements, Dr. Gehrs believes a proper analysis should consist of interviews with end users and others who will be associated with the new software system. In addition, a thorough review and a keen understanding of user documents, business rules, and processes are keys to determining appropriate and necessary features and functionality. This is a valuable and significant step in the development process and the point at which such deliverables as those documents outlining the scope of the project and those detailing the software product requirement will be produced.
Dr. Huizinga notes the importance of having the minimum technology infrastructure in place before beginning a software project, which include:
- Desktops for development with an advanced integrated development environment suite.
- A server with a configuration management system for document tracking and version control.
- A staging server for integration testing and a production server for deployment of the final product.
- A requirement/task/defect tracking tool.
- An automated build system.
- A regression testing tool.
- An automated reporting system.
“Investing in the proper infrastructure is essential and will pay back quickly,” asserts Dr. Huizinga. There are three key elements the proper infrastructure provides:
- Product and project visibility
- Automation of repetitive and mundane tasks
- Facilitation of collaboration
Step #3: Consider Industry Best Practices
When defining a software development process, consider proven industry best practices. Dr. Huizinga recommends a good, customized Agile process with emphasis on pictorial documentation both for requirements and technical documentation. It is important to follow a standard template and all activities should be traceable through a requirements/task/defect tool and shared document repository.
Step #4: Design
During the design phase, the software architect, programmer, and/or developer may put together a detailed design document outlining exactly how the software will meet the specified requirements. Dr. Gehrs recommends the use of mock-ups to accompany the design document as a way of illustrating user-interface elements.
In some cases, customization is required in order to meet specific, individual project needs. For example, Dr. Huizinga notes that this might include the use of specialized COTS (commercial off-the-shelf) hardware and software components. The wide spectrum of products from databases to game engines is dictated by the market shift to customization of existing commercial applications to fit project needs rather than in-house development of such systems. According to Dr. Huizinga, COTS can offer higher quality because they are developed by vendors who specialize in systems that provide the required functionality and are well-tested by many users.
Step #5: Measuring and Tracking Progress
Without the proper technology infrastructure in place, it is difficult to collect and measure key project data. “Consequently, the software projects cannot be managed effectively,” says Dr. Huizinga. Project indicators can help to ensure the prompt identification of potential or existing problems, therefore allowing them to be recognized and remedied in a timely manner. When observed over an extended period, notes Dr. Huizinga, these indicators can be used to determine product quality and deployment readiness.
Step #6: Development
At the development phase, the design document is translated into a real piece of software. When prior careful planning has been executed, the software will match the requirements of the business driver that initiated the need for the project. Dr. Gehrs points out that development cycles may produce several versions of the software:
- Alpha: preliminary feature/functionality only
- Beta: used for internal testing or usability testing
- Release Candidates: usually a very stable build that may need minor tweaks
- Production Build or Gold Master: ready for release.
Project managers need feedback on the user’s navigational experience, task-completion times, ease of use, and other information related to the user interface and user-centric elements.
Step #7: Addressing Automation
Another key step is to ensure the automation of repetitive tasks:
- Code builds;
- Static code analysis scans;
- Regression tests;
- Collection of project- and product-related measures.
Dr. Huizinga believes that taking such measures reduces the error-prone human influence when the software is implemented. It also facilitates the use of best practices and collection of project-related data. “All repetitive and mundane tasks should be automated whenever possible in any portion of the software life cycle,” she adds.
Step #8: Testing
As the project continues on through each phase and on to testing, a general progression of action is as follows: software features are laid out in some sort of list, scripts are written for each task the user might perform, and those features are tested to ensure they function properly. Dr. Gehrs points out that testing also may vary quite widely depending on the individual testing procedures adopted by the organization. Testing can consist of several sub-stages as well, such as quality assurance and staging.
Once the software is in general use, any bugs found at this point are addressed based on a criticality scale: urgent fixes are scheduled to be carried out as soon as possible. In addition, feature enhancements/changes may be slated for future upgrade versions.
Step #9: Gradual Implementation Practices
“Incremental implementation of the above practices is critical to success. The approach of gradually introducing change group by group and practice by practice is essential to achieving the desired organizational culture change, as change is unsettling, and there will always be some degree of resistance,” points out Dr. Huizinga. Because of the complex nature of software projects and the technology involved, new software development warrants this systematic approach.
Understanding the role of the project leader and importance of having well-thought-out development processes in place may be a company’s only real competitive advantage in an increasingly competitive marketplace. It is the ultimate secret weapon to winning business and successfully delivering new easy-to-use software.
With workable and disciplined software project guidelines and well-qualified project managers, your organization can’t lose.
© ExecutiveBrief 2008. All rights reserved.
ExecutiveBrief, the technology management resource for business leaders, offering proven tips, techniques, and action plans that companies can use to better manage people, processes and tools – the keys to improving their business performance. For more information please visit: http://www.executivebrief.com.
No comments yet.