We propose a software project assessment method as shown in Figure 16.1, which is based on our project assessment experience over the past many years . We will discuss each phase with some details, but first there are several characteristics of this method that may be different from other assessment approaches:
Figure 16.1. A Proposed Software Project Assessment Method
16.4.1 Preparation Phase
The preparation phase includes all planning and preparation. For an assessment team external to the organization whose project is to be assessed, a good understanding of the business context and justification, objectives, and commitment is important. Since most of the project assessments are done by personnel within the organization, or from a separate division of a company, this is normally not needed. In this phase, a request for basic project data should be made. General information on the type of software, size , functions, field performance, skills and experience of the development team, organizational structure, development process, and language used is important for the assessment team to start formulating some frames of reference for the assessment. This data doesn't have to be specific and precise and should be readily available from the project team. If there is no questionnaire from a previous similar project, the assessment team should start developing a battery of questions based on the basic project data. These questions can be revised and finalized when the facts gathering phase I is completed.
For overall planning, we recommend the assessment be run as a project with all applicable project management practices. It is important to put in place a project plan that covers all key phases and activities of the assessment. For internal assessments, a very important practice at the preparation phase is to obtain a project charter from the sponsor and commitment from the management team of the project being assessed. The project charter establishes the scope of the assessment and the authority of the assessment team. It should be one page or shorter and probably is best drafted by the assessment leader and signed and communicated by the sponsor executive.
Another easily neglected activity in the preparation phase is a project closeout plan. Good project management calls for planning for the closeout on day 1 of the project. A closeout plan in this case may include the kind of reports or presentations that will be delivered by the assessment team, the audience, and the format.
16.4.2 Facts Gathering Phase 1
The first phase of facts gathering involves detailed review of all aspects of the project from the project team's perspective. The format of this phase may be a series of project team's descriptions or presentations. In the assessment team's request for information, at least the following areas should be covered:
The assessment team's role in this phase is to gather as much information as possible and gain a good understanding of the project. Therefore, the members should be in a listening mode and should not ask questions that may mislead the project team. Establishing the whats and hows of the project are the top priority, and sometimes it is necessary to get into the whys via probing techniques. For example, the project may have implemented a joint test phase between the development group and the independent test team to improve the test effectiveness of the project, and to make sure that the project meets the entry criteria of the system verification test (SVT) phase. This is a "what" of the actual project practices. The joint test phase was implemented at the end of the functional verification test (FVT) and before SVT start during the SVT acceptance test activities. Independent test team members and developers were paired for major component areas. The possible gaps between the FVT and the SVT plans were being tested . The testing environment was a network of test-ing systems maintained by the independent group for SVT test. To increase the chances for latent defects to surface, the test systems were stressed by running a set of performance workloads in the background. This test phase was implemented because meeting SVT entrance criteria on time had been a problem in the past, and due to the formal hand-off between FVT and SVT, it was felt that there was room for improvement with regard to the communication between developers and independent testers. The project team thinks that this joint test practice contributed significantly to the success of the project because a number of additional defects were found before SVT (as supported by metrics), SVT entrance criteria were met on time, the testers and developers learned from each other and improved their communications as a result, and the test added only minimum time to the testing schedule so it didn't negatively affect the project completion date. These are the "hows" and "whys" of the actual implementation. During the project review, the project team may describe this practice briefly . It is up to the assessment team to ask the right questions to get the details with regard to hows and whys.
At the end of a project review, critical success factors or major reasons for failure should be discussed. These factors may also include sociological factors of software development, which are important (Curtis et al., 2001; DeMarco and Lister, 1999; Jones, 1994, 2000). For the entire review process, the assessment team's detailed note-taking is important. If the assessment team consists of more than one person and the project review lasts more than one day, discussions and exchange of thoughts among the assessment team members is always a good practice.
16.4.3 Questionnaire Customization and Finalization
Now that the assessment team has gained a good understanding of the project, the next step is to customize and finalize the questionnaire for formal data collection. The assumption here is that a questionnaire is in place. It may be from a previous assessment project, developed over time from the assessment team's experience, from a repository of questions maintained by the software engineering process group (SEPG) of the organization, or from a prior customization of a standard questionnaire of a software process assessment method. If this is not the case, then initial questionnaire construction should be a major activity in the preparation phase, as previously mentioned.
Note that in peer reviews (versus an assessment that is chartered by an executive sponsor), a formal questionnaire is not always used.
There are several important considerations in the construction of and finalization of a questionnaire. First, if the questionnaire is a customized version of a standard questionnaire from one of the formal process assessment methods (e.g., CMM, SPR, and ISO software process assessment guidelines), it must be able to elicit more specific information. The standard questionnaires related to process maturity assessment usually are at a higher level than is desirable at the project level. For example, the following are the first three questions of the Peer Reviews key process activity (KPA) in the CMM maturity questionnaire (Zubrow et al., 1994).
The following two questions related to peer design reviews were used in some project assessments we conducted :
All Design Work Done Rigorously |
All Major Pieces of Design Items |
Selected Items Based on Criteria (e.g., Error Recovery) |
Design Reviews Were Occasionally Done |
Not Done |
|
---|---|---|---|---|---|
Original design |
|||||
Design changes/rework |
The differences between the two set of questions are obvious: One focuses on process maturity and organizational policy and the other focuses on specific project practices and degree of execution.
Second, a major objective of a project assessment is to identify the gaps and therefore opportunities for improvement. To elicit input from the project team, the vignette-question approach in questionnaire design can be used with regard to importance of activities in the development process. Specifically, the vignette questions include a question on the state of practice for the specific activity by the project and another question on the project team's assessment of the importance of that activity. The three following questions provide an example of this approach:
If yes, (a) please provide a brief description.
(b) how is the criteria used and enforced?
Third, it is wise to ask for the team's direct input on strengths and weaknesses of the project's practices in each major area of the development process (e.g., design, code, test, and project management). The following are the two common questions we used in every questionnaire at the end of each section of questions. Caution: These questions should not be asked before a description of the overall project practices are completed (by the project team) and understood (by the assessment team), otherwise the project team will be led prematurely to a self-evaluative mode. In this assessment method, there are two phases of facts gathering and asking these questions at the second phase is part of the design of the method.
The Appendix in this book shows a questionnaire that we have used as a base for customization for many software project assessments.
16.4.4 Facts Gathering Phase 2
In this phase, the questionnaire is administered to the project team including development managers, the project manager, and technical leads. The respondents complete the questionnaire separately. All sections of the questionnaire may not apply to all respondents. The responses are then analyzed by the assessment team and validated via a session with the project team. Conflicts of responses among the respondents and between information from the project review and the questionnaire responses should be discussed and resolved. The assessment team can also take up any topic for further probing. At the second half of the session, a brainstorming session on strengths and weaknesses, what's done right, what's done wrong, and what would the project team have done differently is highly recommended.
16.4.5 Possible Improvement Opportunities and Recommendations
As Figure 16.1 depicts, this phase runs parallel with other phases, starting from the preparation phase and ending with the final assessment report phase. Assessing the project's strengths and weakness and providing recommendations for improvement constitute the purpose of a project assessment. Because the quality of the observations and recommendations is critical, this activity should not be done mechanically. To accomplish this important task, the assessment team can draw on three sources of information:
Successful projects
- Effective project planning
- Effective project cost estimating
- Effective project measurements
- Effective project milestone tracking
- Effective project quality control
- Effective project change management
- Effective development processes
- Effective communications
- Capable project managers
- Capable technical personnel
- Significant use of specialists
- Substantial volume of reusable materials
Failing projects
- Inadequate project planning
- Inadequate cost estimating
- Inadequate measurements
- Inadequate milestone tracking
- Inadequate quality control
- Ineffective change control
- Ineffective development processes
- Ineffective communications
- Ineffective project managers
- Inexperienced technical personnel
- Generalists rather than specialists
- Little or no reuse of technical material
Jones's findings highlight the importance of good project management and project management methods such as estimating, measurements, and tracking and control. Sizing and schedule development without the support of metrics and experience from previous projects can lead to overcommitment and therefore project failure. This can happen even in well-established development organizations.
When developing improvement recommendations, feasibility of implementation in the organization's environment should be considered. In this regard, the assessment team should think like a project manager, software development managers, and team leaders . At the same time, recommendations for strategic improvements that may pose challenges to the team should not be overlooked. In this regard, the assessment team should think like the strategist of the organization. In other words, there will be two sets of recommendations and the assessment team will wear two hats when developing the recommendations. In either case, recommendations should be based on facts and analysis and should never be coverage-checklist type items.
As an example, the following segment of recommendations is extracted from a project assessment report that we were involved with. This segment addresses the intersite communication of a cross-site development project.
It was not apparent as to whether there were trust issues between the two development teams. However, given that the two teams have never worked together on the same project and the different environments at the two sites, there is bound to be at least some level of unfamiliarity if not a lack of trust. The following techniques could be employed to address these issues.
16.4.6 Team Discussions of Assessment Results and Recommendations
In this phase, the assessment team discusses its findings and draft recommendations with the project team and obtains its feedback before the final report is completed. The two teams may not be in total agreement, and it is important that the assessment team make such a declaration before the session takes place. Nonetheless, this phase is important because it serves as a validation mechanism and increases the buy-in of the project team.
16.4.7 Assessment Report
The format of the report may vary (a summary presentation, a final written report, or both) but a formal meeting to present the report is highly recommended. With regard to content, at least the following topics should be covered:
Tables 16.2 through 16.4 show report topics for three real assessed projects so you can relate the outcome to the points discussed earlier (for example, those on questionnaire construction). All three assessed projects were based on similar versions of the questionnaire in the Appendix. Project X is the software that supports the service processor of a computer system, Project Y is the microcode that supports a new hardware processor of a server, and Project Z is the software system that supports a family of disk storage subsystem products. The subsystem integrates hundreds of disk drives through a storage controller that provides redundant arrays of inexpensive disks (RAID), disk caching, devices emulation, and host attachment functions.
Table 16.2 shows the basic project data for the three projects. Table 16.3 summarizes the state of practices of key development and project management activities throughout the development cycle, and the project team's self-assessment of the importance of the specific practices. For most cells , the vignette of 'state of practice' and 'importance assessment' is shown. A gap exists where the importance assessment is Important or Very Important but the state of practice is No, Seldom, Occasionally, or Not Done.
The most gaps were identified for Project X, in the areas of requirements and reviews, specifications, design document in place to guide implementation, design reviews, effective sizing and bottom-up schedule development, major checkpoint reviews, staging and code drop plans, and in-process metrics.
For Project Y, gaps were in the areas of design document, design reviews, effective sizing and bottom-up schedule development, and in-process metrics. For Project Z , the gaps were in the project management areas such as sizing and bottom-up schedule development as they related to the planning process and project assumptions. Development/unit test was also identified as a key gap as related to the Cleanroom software process used for the project. The Cleanroom software process focuses on specifications, design and design verification, and mathematical proof of program correctness. For testing, it focuses on statistical testing as it relates to customers' operations profiles (Mills et al., 1987). However, the process does not focus on program debug and does not include a development unit test phase (i.e., from coding directly to independent test). Furthermore, questions on scalability (e.g., large and complex projects with many interdependencies) and the feasibility of implementations of customer operations profiles were raised by critics of the process. For Project Z, the use of this development process was a top-down decision, and faulty productivity and quality assumptions related to this process were used in schedule development.
Table 16.4 shows the project team's improvement plan as a result of the iterative emphasis of the assessment method. Note that the project team's own improvement ideas or plan are separate from the final recommendations by the assessment team, although the latter can include or reference the former.
Table 16.2. Basic Project Data for Projects X, Y, and Z
Project X |
Project Y |
Project Z |
|
---|---|---|---|
Size (KLOC) |
|||
|
228 |
4000 |
1625 |
|
78 |
100 |
690 |
Team size |
10.5 |
35 |
225 |
Development cycle time (mo) |
|||
|
30 |
18 |
38 |
|
23 |
17 |
29 |
Team experience |
Inexperienced 70% <2 yr |
Very experienced 70% >5 yr some >15 yr |
Very experienced 80% >5 yr |
Cross-site development |
Y |
Y |
Y |
Cross-product brand development |
Y |
N |
Y |
Development environ/library |
CMVC |
PDL, Team Connect |
AIX CMVC DEV2000 |
Project complexity (self-rated 10 pts) |
7 |
8 |
10 |
Table 16.3. State of Practice, Importance Assessment, and Gap Analysis for Projects X, Y, and Z
Project Activity |
Project X |
Project Y |
Project Z |
---|---|---|---|
Requirements reviews |
-Seldom -Very important |
-Always -Very important |
-Always -Very important |
Develop specifications |
-Seldom -Very important |
-Usually -Very important |
-Always -Very important |
Design documents in place |
-No -Very important |
-No -Very important |
-Yes -Very important |
Design reviews |
-Not done -Very important |
-Occasionally -Very important |
-Major pieces -Very important |
Coding standard/ guidelines |
-No |
-Yes |
-Yes |
Unit test |
-Yes |
- ad hoc |
-Yes -No |
Simulation test/environment |
-No -Very important |
-Yes -Very important |
-No -Important |
Process to address code integration quality and driver stability |
-Yes -Very important |
-Yes -Very important |
-Yes -Very important |
Driver build interval |
-Weekly “ >Biweekly |
-Biweekly with fix support |
-1 “ 3 days |
Entry/exit Criteria for independent test |
-Yes -Very important |
-Yes -Very important |
-Yes -Important |
Change control process for fix integration |
-Yes -Very important |
-Yes -Very important |
-Yes -Important |
Microcode project manager in place |
-Yes (midway through project) |
-No |
-No |
Role of effective project management |
-Very important |
-Important |
-Important |
Effective sizing and bottom-up schedule development |
-No -Very important |
-No -Important |
-No -Very important |
Staging and code drop plans |
-No -Very important |
-Yes -Very important |
-Yes -Important |
Major checkpoint reviews |
-No -Very important |
-No Somewhat important |
-Yes -Very important |
In-process metrics |
-No (started midway) -Very important |
-No -Very important |
-Yes -Somewhat important |
Table 16.4. Project Teams' Improvement Plans Resulting from Assessment of Projects X, Y, and Z
Project |
Improvement Plan |
---|---|
Project X |
|
Requirements and specifications: |
Freeze external requirements by a specific date. Create an overall specifications document before heading into the design phase for the components . Force requirements and specifications ownership early in the development cycle. |
Design, code, and reviews: |
Eliminate most/all shortcuts in design and code to get to and through bring-up. The code that goes into bring-up is the basis for shipping to customers and many times it is not the base that was desired to be working on. Establish project-specific development milestones and work to those instead of only the higher-level system mile-stones. |
Code integration and driver build: |
Increase focus on unit test for code integration quality, document unit test plans. |
Test: |
Establish entry/exit criteria for test and then adhere to them. |
Project management (planning, schedule, dependency management, metrics): |
Staff a project manager from the beginning. Have dependency management mapped to a specific site, and minimize cross-site dependency. |
Tools and methodologies: |
Use a more industry-standard toolset. Deploy the mobile toolset recently available on Thinkpad. Establish a skills workgroup to address the skills and education of the team. |
Project Y |
|
Requirements and specifications: |
Focus more on design flexibility and considerations that could deal with changing requirements. |
Design, code, and reviews: |
Conduct a more detailed design review for changes to the system structure. |
Test: |
Better communications between test groups, make sure enough understanding by the test groups that are in different locations. |
Project management (planning, schedule, dependency management, metrics): |
Implement microcode project manager(s) for coordination of deliverables in combination with hardware deliverables. |
Tools and methodologies: |
Force the parallel development of test enhancement for regression test whenever new functions are developed. |
Project Z |
|
Requirements and specifications: |
Link requirements and specifications with schedule and review schedule assumptions. |
Design, code, and reviews: |
Document what types of white box testing need to be done to verify design points. |
Project Management (planning, schedule, dependency management, metrics): |
Strong focus on project management, scheduling, staffing, and commitments. Periodically review schedule assumptions and assess impact as assumptions become invalid. |
16.4.8 Summary
Table 16.6 summarizes the essential points discussed under each phase of the proposed software project assessment method.
Table 16.6. Essential Activities and Considerations by Phase of a Proposed Software Project Assessment Method
Phase |
Essential Activities and Considerations |
Phase ” continued |
---|---|---|
(1) Preparation |
- As appropriate - Gain understanding of business context and justification, objectives and constraints. - Establish assessment project plan. - Establish project charter and secure commitment. - Request basic project data. - Develop an initial set of questions based on information available thus far, or use an existing. questionnaire. - Establish assessment project closeout plan. |
(3) Phase 3 - possible improvement opportunities and recommendations. - Review findings and improvement frameworks in the literature. |
(2) Facts gathering ” phase 1 |
- Build a detailed project review from the project team's perspective. - Focus on whats and hows; at times on whys via probing. |
- Formulate ideas at the end of project review. |
(4) Questionnaire customization |
- Customize to project being assessed. - Use vignette-question approach for gap analysis. - Define strengths and weaknesses. - Gather team's improvement ideas. |
- Design questionnaire to include questions on improvements from the project team. |
(5) Facts gathering ” phase 2 |
- Administer questionnaire to project personnel. - Validate responses. - Triangulate across respondents and with information gathered from Phase 1. - Brainstorm project strengths and weaknesses; ask what the project team would have done differently. |
- Formulate whole list of recommendations - actions for immediate improvements and for strategic directions. |
(6) Team discussions feedback |
- Review with project team and assessment results and draft recommendations. |
- Finalize recommendations. |
(7) Reporting and closeout |
- Complete final report including recommendations - Meet with assessment executive sponsor and management of assessed project. |
What Is Software Quality?
Software Development Process Models
Fundamentals of Measurement Theory
Software Quality Metrics Overview
Applying the Seven Basic Quality Tools in Software Development
Defect Removal Effectiveness
The Rayleigh Model
Exponential Distribution and Reliability Growth Models
Quality Management Models
In-Process Metrics for Software Testing
Complexity Metrics and Models
Metrics and Lessons Learned for Object-Oriented Projects
Availability Metrics
Measuring and Analyzing Customer Satisfaction
Conducting In-Process Quality Assessments
Conducting Software Project Assessments
Dos and Donts of Software Process Improvement
Using Function Point Metrics to Measure Software Process Improvements
Concluding Remarks
A Project Assessment Questionnaire