|
||||||||||||||||||||||
|
|
Research
Requirements Traceability The ability to manage change during software development is critical in order to satisfy the functional and non-functional requirements of a software system. We are investigating methods to characterize the potential consequences of changing requirements. We are defining a formal model which classifies requirements changes based on predicted impact on system work products. The model attributes include complexity, effort, development phase, and degrees of influence among work products. Model-Driven Software Development We are developing methods to develop software through the use of model transformations. We are working to develop a behavior-preserving methodology for pattern-based model transformation that can enhance the potential of applying design patterns into existing software design models. In this context, a transformation specifies how to restructure a source model into a target model. We are studying the potential of applying existing refactoring techniques to the pattern-based model transformation problem. Our goal is to increase efficiency in the software development process by applying patterns expressed as model. Reverse Engineering We are investigating methods that facilitate the extraction of designs from legacy systems with the goal of migrating legacy systems to new environments. The migration of such systems requires scalable methods to find meaningful relationships among system components. We have developed a design recovery approach, known as Identification of Subsystems (ISA) that decomposes a software system into a hierarchy of subsystems. We extract an architectural description of a subject system. We use graph-based representation techniques and data mining methods. ISA is a multi-phase approach that produces a data-driven decomposition of the subject legacy system. We focus on migration of the system to an object-based distributed system. We wrap and define interfaces of the subsystems to define system components. Middleware technologies are used to implement the communication between components. Software Reusability Software reusability is an important concept for improving quality and efficiency of software development. We advocate the use of formal methods to enhance the benefits of reusability at the specification and design levels. In our requirement reusability model (RRM), reusability analysis is performed on formal specifications expressed in Z in order to identify common functionality among the schemas. A repository of frameworks is introduced by RRM for reuse. The research focuses on the use of clustering to define similar groupings from which the reusable frameworks are then built. Our goal is to enhance the effectiveness of software reusability by incorporating formal methods as an integral part of the software development process.
|
|
|
||||||||||||||||||