| The most commonly occurring architectural design problems can be grouped into three categories: project management, requirements, and performance. The following list describes problems affecting project management.[20] It's an excellent list that we have reordered to reflect our own experiences with software development management: The stakeholders have not been clearly identified. No project manager has been identified. No one is responsible for the overall architecture. No project plan is in place. The deployment date is unrealistic. The independent requirements team is not yet in place. Domain experts have not been committed to the design. No software architect(s) have been assigned. No overall architecture plan has been prepared. No system test plan has been developed. No measures of success have been identified. No independent performance effort is in place. No contingency plans have been written. No modification tracking system is in place. Project funding is not committed. No quality assurance team is in place. No hardware installation schedule exists. Here are the most common issues affecting the definition of requirements for a software development project (again in order of importance according to our experience): The project lacks a clear problem statement. No requirements document exists. The project lacks decision criteria for choosing the software architecture. Outputs have not been identified. The size of the user community has not been determined. Data storage requirements have not been determined. Operational administration and maintenance have not been identified. Resources to support a new requirement have not been allocated. Here are the most common performance issues affecting the architecture of a software development project (priority reordered): The end user has not established performance requirements. No performance model exists. Expected traffic rates have not been established. No means for measuring transaction time or rates exists. No performance budgets have been established. No assessment has been made to ensure that hardware will meet processing requirements. No assessment has been made to ensure that the system can handle throughput. No performance data has been gathered. In our experience, the leading critical quality issues in each category are either customer requirements issues or aspects of the project management team's commitment to the customer's requirements. This leads to our focus on QFD as a means of hearing the voice of the customer at the beginning of the software development project rather than having to listen to their complaints after the software has been delivered. |