2007年8月2日

What is a good software requirement.

This is a job interview question. Many interviewers have questioned me. I also have learned from the discussions. Share with you. Your comments are welcome.

A good software requirement should have the following attributes.

1. Consistence. No conflicting requirement should exist in software requirement specification. Any term used in the requirement specification must be defined first.

2. Completeness. The software requirement specification should fully describe/model the business systems.

3. Effective. Always use the minimum set of requirements to model the systems. A software requirement is a restriction to the resulting systems. While satisfying business requirements, a minimum set of requirements enables software engineers to use their expertise and creativity to model high efficiency systems.

4. Implement-able. Software requirements should be defined based on the advancement of software technologies, and enable the software engineers the freedom to improve software systems performance.

5. Testable. Software requirement specification is a contract of systems engineering, software engineering, quality control and business management. Software requirement should avoid implementation details and target to all the stakeholders.

A large system normally should be divided into subsystems, and clear boundaries should be declared. Human being uses 'divide and conquer' to reduce complexity. The subsystem connectivity/interfaces should be one of the major focuses of systems engineers. The subsystems and connectivity should be well-defined, and the terms will also used by all the stakeholders in project communications. A product architect document should be created to defined the systems connectivity.

没有评论: