ABSTRACT

This chapter discusses some advanced concepts in software engineering that are of particular value in solution and architectural modeling spaces. It includes reusability, understanding "with" and "for" reuse, granularity in object-oriented designs, and applying design patterns. Relevant aspects of a development process that support quality design are also mentioned. Understanding the various levels of reuse within software development provides a good starting point to appreciate reusability. The code-level reuse depends on the programmer's knowledge of the development environment and the availability of existing classes. Reuse strategies provide greater value in software projects than code-level reuse. These reuse strategies need to be carefully thought out, agreed upon by all stakeholders, and incorporated into the software development processes. The "for" and "with" reuse considerations impact requirements of future or concurrent projects explicitly as development proceeds to satisfy the current project's requirements.