Independent of Software Process, System Architecture is an
important determinant of the system's depth of functionality,
usability, maintainability, flexibility, robustness, cost, ease of
construction, and predictability of timely delivery. Effective system
architecture requires experience, insight, analytical skills, support
of senior management and people skills.
We recommend analyzing multiple system architectures against
desired system attributes and choosing the appropriate architecture.
Requirements are a key ingredient for software design, coding, testing
and maintenance. Requirements affect all functional and non-functional
aspects of the delivered software. Many projects fail due to insufficient
or incorrect requirements. Ensuring that the requirements are complete,
precise, unambiguous and practical is essential to a software project's
We recommend a combination of use-cases and narratives for