Skip to Main Content
In software engineering, a piece of software is assembled from components or modules and these components in turn can be recursively made up from smaller subcomponents. The management of a software project involves tracking the development and maintenance of the individual components. Though tools exist to track component dependencies and historical changes, the key software management hurdle is the manual evaluation of the trade-offs. With the growing trend in software engineering to build and distribute software as well-defined components like Web services or EJBs, there is a real need of automated solutions to guide the developer in building and maintaining complex applications. We introduce an automated decision-support framework for software development and maintenance called PlanSP that can analyze different component assembly choices and assist the user in making cost-effective decisions. Our approach is to build a formal model of the software and use automated planning/reasoning techniques to produce alternative choices ("plans") to develop or maintain the software under consideration while respecting the user's effort and performance objectives. We have built a proof-of-concept prototype to demonstrate that the PlanSP framework is both useful and practical for project management of component-based software.