Vol. 37, No. 2, 1998 - San Francisco Frameworks Preface Rapid development of business software for critical distributed applications is, and has long been, a key aspect of IBM's support for businesses and for independent software vendors (ISVs). IBM's San Francisco* project, which is the subject of most of the papers in this issue, provides that support and is an excellent example of joint IBM and ISV efforts. More than 130 ISVs have participated in the creation and development of San Francisco common and domain-specific frameworks. The frameworks allow each ISV to focus on the specific needs of its customers, resulting in products with a robust object-oriented architecture and for a networked environment. This issue contains an introductory paper on the San Francisco architecture and frameworks, four papers by ISV developers on their use of the frameworks for application development, and a Technical Note describing a supporting tool. There are also three papers on other subjects: software requirements, reverse engineering, and code restructuring. We are indebted to V. M. Johnson of the AS/400 Division in Rochester, Minnesota, for his foresight in conceiving, and his considerable efforts in developing, the San Francisco theme for this issue. Bohrer presents an overview of the San Francisco project and its results in a paper on the origins of the project, its objectives, the collaboration with numerous ISVs, the methodology used to carry out the project, and the development of the architecture and frameworks. The key objectives were ease of ISV entry into object-oriented techniques, capability for ISVs to develop significant business applications, and open frameworks allowing for ISV choices and trade-offs. The ability to expand the power of accounting systems into the more important arena of business enterprise models is the focus of a paper by Inman. The San Francisco frameworks are shown to be an effective path toward this expansion, allowing for more flexible and capable financial systems, serving management needs and supporting business analysis. The paper discusses general ledgers as an example in which San Francisco frameworks succeed. Some ISVs and some of their customers face significant challenges in moving their software skills and products to object-oriented technologies, such as those underlying the San Francisco architecture and frameworks. Henders shows how the use of such technologies was introduced into an existing software mix, how the challenges were overcome and the difficulties avoided, and how the San Francisco frameworks support an easier transition to the new object-oriented development methods and technologies. Knowledge workers, knowledge applications, and the challenge of making those applications serve broader business purposes are explored in a paper by Retallick and Sanchez. Their claim is that managing knowledge data and organizing business activities are rarely amenable to real change, but that the San Francisco frameworks offer such an opportunity for significant progress toward rapidly developed and integrated knowledge-based systems. Van der Salm discusses the issues faced by an ISV when it considers the prospect of moving from tried-and-true software methods and tools to new ones that offer the promise of faster and more effective software development and product delivery. It is particularly important for small ISVs to find a path to newer and better technologies for software development, despite the risks and costs often assumed with change in small companies. The experiences the author relates illustrate the potential of San Francisco frameworks for ISVs moving to object technologies. The last contribution on the San Francisco frameworks appears as a Technical Note. The author, Polan, describes how to combine the power of the VisualAge* for Java** integrated software development environment, with the structure and support of the San Francisco object-oriented, Java-based frameworks. This Note is intended to provide technical details for using these two systems together. The development of software requirements is a challenging and complex task, which is both essential to the value of the system that results and fundamentally human in its process and progress. Crowston and Kammerer report on a study of how requirements analysts can manage their efforts to overcome the challenges and produce better results. The authors used coordination theory to understand the management of dependencies and collective mind theory to understand how individuals affect the work of a team. Aiken builds on the general understanding of reverse engineering of programs to describe the newer area of reverse engineering of data, which combines structured data analysis and data management principles. An activity model and a data model are developed to reach the goal of integration of enterprise-wide data. The author presents four brief scenarios in which data reverse engineering was used to solve or resolve enterprise data issues, and proposes the use of these techniques for the Year 2000 transition. Dynamic profiling tools have been used to support compiler-based optimization of applications by exposing their behavior during execution and particularly their uses of execution paths and data. Schmidt et al. thought that these same techniques could be applied to code reordering of operating systems software with similar beneficial effects on execution behavior. Their results were significant and argue well for reordering operating system code using profile data. The next issue of the Journal will be a special issue on the Java language, application development in Java, and IBM's support for Java. Gene F. Hoffnagle Editor *Trademark or registered trademark of International Business Machines Corporation. **Trademark or registered trademark of Sun Microsystems, Inc.