Transforming software requirements into a software design involves the iterative partition of a solution into software components. The partition process starts with the identification of basic high-level design components and concludes with the definition of low-level design elements such as modules, packages, and library specifications. The process is human-intensive and does not guarantee that design objectives such as reusability, evolvability, and adaptable performance are satisfied. This paper overviews our analytical approach for partitioning basic elements of a software solution into reusable and evolvable software components. We discuss the process of generating basic components for an embedded control application using a representative object-oriented design technique. Then we outline our analytical approach and demonstrate its application to a class of search techniques which can be embedded into applications requiring polynomial-time search of a solution-space. Lastly, we discuss future research directions.
展开▼