"This book is very well written. I have never seen a book on the market that discusses these concepts as well as this book. Anyone involved with Information Technology should be familiar with this material. If not, they need to get this book ASAP and read it cover to cover."
William H. Murray, author of many best-selling programming titles
The strategic guide to enterprise-class component and Web development
In this definitive book, the R&D leader at one of the world's top software companies presents a complete conceptual framework for Internet-centered, component-based development.
Alan W. Brown introduces "best practices" enterprise development techniques that deliver reduced cycle times, improved quality, and greater reuse. He offers holistic insights into leveraging technologies such as Enterprise JavaBeans, COM+, and CORBA/IIOP to enable distributed access at lower cost, with greater flexibility, responsiveness, and user-friendliness than ever before. Coverage includes:
Large-Scale, Component-Based Development offers a start-to-finish blueprint for managing the Web and component technologies that enable e-business. For every decision-maker involved with Internet-focused, multi-tiered enterprise systems, this is an invaluable resource.
Click here for a sample chapter for this book: 013088720X.pdf
I. E-BUSINESS AND THE CHANGING ROLE OF APPLICATION DEVELOPMENT.
1. Introduction.Motivation. Software Development Challenges. The Key to the Future: Managing Complexity and Rapidly Adapting to Change. Managing Complexity. Adapting to Change. Business Drivers and IT Strategy. Summary.
2. The Evolution of Application Development.Introduction. Evolution of Application Development Support. Past—Client/Server Applications. Present—N-Tier Distributed Systems. Future—Nomadic, Service-Oriented Solutions. Key Issues for Future Application Development. Representing Large-Scale Distributed Software Architectures. Modeling Reusable Pieces of a System. Improved Method Support for New Kinds of Applications. Pragmatic Concerns for Established Application Development Tool Vendors. Summary.
3. Enterprise-Scale Solutions in the Internet Age.Introduction. The e-Business Revolution. Today's Critical IT Issues. The Importance of the Middle Tiers. From Client-Server to N-Tier Architectures. The Role of the Middle Tiers in Web-Based Systems. The Application Server. Enterprise Application Integration. Application Integration … the New View of Development. EAI Through Connectors. A Broader View of EAI. Components and Component Models. Designing with Components. Implementing for Components. Summary.
II. COMPONENTS AND COMPONENT-BASED APPROACHES.
4. Component-Based Development Fundamentals.Introduction. The Goals of Component Approaches. Why Component-Based Development? What Is a Component? Components and Objects. Components and Distributed Systems. Elements of a Component. How are Applications Assembled Using CBD? Sources of Components. Interface-Focused Design. Applications and Component Architecture. What Is the Current Practice in CBD? Special Interest Groups. Vendor-Led User Groups. Specialist Component Service Providers. Experience Reports and Advice. Summary.
5. Component-Based Development Insights.Introduction. Provision of Reusable Services. Independent Delivery of Services. A Deeper Understanding of Components. Packaging Perspective. Service Perspective. Integrity Perspective. An Illustrative Example: Microsoft Excel. The Importance of Component Specification. The Role of Interfaces. The Importance of Models. Collaborations and Roles. The Elements of a Component-Based Approach. Application Assembly from Components. Provision of Independent Services. A Common Component Infrastructure. Use of Common Services. Summary.
III. APPLYING COMPONENT TECHNIQUES.
6. CBD Technology and Standards.Introduction. The Unified Modeling Language (UML). What Is the UML? Background to the UML. What Is Defined by UML? Supporting Component Modeling with UML. Advanced UML Concepts. The Microsoft Repository. Background. The Conceptual Design of the Repository. Information Models for CBD. Component Infrastructure Technology. Component Infrastructure Services. Component Infrastructure Implementations. Summary.
7. Approaches to Component-Oriented Modeling.Introduction. The CBD Life Cycle. The Rational Unified Process. Sterling Software's Enterprise-CBD Approach. Interface-Focused Design Approaches. A UML-Inspired Component Modeling Approach. A Catalysis-Inspired Component Modeling Approach. Summary.
8. An Illustration of a Component-Based Method.Introduction. Understand the Context. Requirements Definition. Use Case Modeling. Business Type Modeling. Define the Architecture. Component Architecture Modeling. Context Modeling. Interface Modeling. Interface Definition. Provision the Solution. Component Implementation. Component Wrapping. Component Assembly. System Deployment. Summary.
IV. A LOOK TO THE FUTURE.
9. The Business Imperative: Moving Quickly into the Digital Age.Introduction. e-Anything and e-Everything. The End of Software Development? Summary.
10. The Technology Response: Flexible Services and Solutions.Introduction. Infrastructure and Platform Technologies. Standards Activities. XML. EJB and the CORBA Component Model. Tool Directions. Enhanced Product Integration in Support of CBD. A New Generation of Component Design and Implementation Tools. Research Directions. Use of Patterns and Frameworks. More Rigorous Approaches to Component Specification. Enhanced Modeling for Software Architectures. Summary.
Appendix A: Useful Resources on Enterprise-Scale Application Development.e-Business and e-Business Strategy. Components and Component-Based Approaches. Enterprise Application Integration. Distributed Systems Architectures. Technologies for Enterprise-Scale Solutions. Industry and Product Directions.
Appendix B: A Detailed CBD Modeling Example.Introduction. Enterprise Component Architecture Design. Application Development. Requirements. Project Architecture. Specification. Implementation. Component Provisioning. Requirements. Project Architecture. Specification. Implementation.
Appendix C: References.Software engineering is entering a new era. The Internet and its associated technologies are changing the way customers, suppliers, and companies interact to conduct business, communicate, and collaborate. The result is the creation of huge opportunities to expand existing businesses, the delivery of greater variety and depth of information in a timely manner to those who need it wherever they need it, and the rise of completely new forms of commerce unthinkable without the business and technology advances fostered by the onset of the Internet age. As succinctly stated by the U.S. Commerce Secretary William Daley:
"Technology is reshaping this economy and transforming businesses and consumers. This is more than e-commerce, or e-mail, or e-trades, or e-files. It's about the 'e' in economic opportunity."
This impact has been confirmed in a recent study conducted by the Economist Intelligence Unit (EIU) of Booz-Allen & Hamilton. They surveyed the opinions of more than 500 senior executives with respect to how the Internet is changing their corporate strategy. The results showed that more than 90 percent believed that the Internet will transform or have a major impact on their corporate strategy within the next three years. Furthermore, many of these executives recognized the need to restructure their businesses to take advantage of fundamental changes in their business environment.
However, with these changes come a number of threats. Many organizations are intimidated by the new technologies, unsure of how to take advantage of them, and wondering how these technologies will align with existing investments in skills and infrastructures. What they require is a conceptual framework for understanding software solutions in the Internet age, coupled with a realistic view of the technologies that will drive this revolution.
Components and Component-Based Development (CBD) are the approaches that satisfy these needs. More and more we see organizations turning to components as a way to encapsulate existing functionality, acquire third-party solutions, and build new services to support emerging business processes. The latest technologies for distributed systems support and encourage a component view of application integration and deployment. Furthermore, component-based development provides a design paradigm well suited to today's eclectic Internet-centric software solutions. This book examines components and component-based development, and their role in provisioning enterprise-scale solutions for the Internet age.
At its root, component-based development (CBD) is application development primarily carried out by composing previously developed software. Many people in the software industry are beginning to see CBD as an exciting new approach to application development which offers the promise of reducing cycle time for software development, and improving the quality of delivered applications.
Interest in reuse of previously developed components is nothing new. Ever since software was developed there have been efforts to reduce the amount of work involved in creating new software, ranging from small-scale efforts such as macro languages to large-scale efforts such as process asset libraries. While each of these efforts has had some impact on the reuse of software, none of them has had the overall impact expected or required.
Recently, however, a number of important advances in computer-based technologies have taken place. These have made the software industry rethink how software is developed, and offer new opportunities with respect to computer-based support for reuse of software artifacts. The impact of these advances is directly affecting everyone in the software industry. Three of these advances are of particular note.
First, the rapid evolution of hardware technologies has continued for more than a decade. The result has been a continuing improvement in the price/performance ratio of computer technologies. Organizations have much more computing power today than only a few years ago, embodied in a large number of desktop computers distributed throughout all levels of the organization.
Second, distributed access to remote information is now less expensive to develop, less cumbersome to maintain, and more user-friendly and responsive. This is a consequence of a number of advances in distributed infrastructure technologies supporting client/server architectures, high throughput networks, and distributed data management. Many distributed infrastructure technologies are now commonplace, supporting a collection of underlying protocols and standards that includes transmission control protocol/Internet protocol (TCP/IP), remote procedure call (RPC), hypertext transmission protocol (HTTP), the Common Object Request Broker Architecture (CORBA), and the Internet inter-ORB protocol (IIOP).
Third, unbounded excitement in the World Wide Web, Internet, and intranet technologies has changed the way people think about information access and availability. This has led to many new tools, processes, techniques, and technologies to support this new way of thinking and working. What an end user expects from an application is quite different now than it was only a few years ago.
Building on these advances, a new approach to solution provisioning, called component-based development (CBD), is being promoted. In its purest form, CBD takes advantage of these advances to provide an infrastructure for future applications that increases the ease with which separately developed software artifacts can be connected. As a result, it provides greater opportunity for integrating available software artifacts within your own organization or anywhere in the world, and uses available computing power to implement intelligent assistance to reduce the burden of evaluating, converting, and integrating software artifacts acquired from many sources.
All aspects of software design, implementation, deployment, and evolution are affected when a CBD approach is followed. As a result, a software project can be transformed from a development-intensive grind of code writing and bug fixing, to a more controlled assembly process in which new code development is minimized and system upgrade becomes the task of replacement of well-bounded functional units of the system. This is the goal of a variety of approaches and technologies gaining a great deal of attention in the software industry, which is now being referred to collectively under the banner of Enterprise Application Integration (EAI).
The needs and the rewards of taking a component-based approach are compelling. However, as with any new software approach, there is currently a significant gap between the aspirations of CBD visionaries, and the tools, processes, and techniques that support their vision. CBD has many hurdles to overcome to be considered a well-tried, repeatable process for developing large-scale, robust solutions for every application domain.
The most pressing needs facing software practitioners at present is to understand the business drivers encouraging the move toward CBD, to obtain a grounding in the underlying technologies from which it is built, and to gain the insight needed to understand how and when to apply CBD technologies within their particular context. These are the needs addressed by this book.
This book provides the context necessary to understand CBD and to apply it successfully to enterprise-scale solutions. CBD is a new approach to software development that will significantly affect software development practices over the coming years. As a result, the goals of this book are threefold:
Having read this book, readers will understand the key technology advances in software engineering as they affect CBD, and therefore be in a better position to take advantage of them in their organization.
The primary audience for this book is Information Technology (IT) managers, practicing software engineers, and software project managers interested in improving software engineering practices within their organization. Additionally, students in advanced software engineering courses will gain a valuable perspective on modern software engineering practices and techniques. The book provides such readers with the background information necessary to understand the convergence of a wide range of technologies. Armed with this information, the reader will be better able to conduct detailed studies in individual technologies of relevance and interest.
The descriptive text is aimed at informing managers, analysts, and programmers alike. The book does not attempt to justify CBD using detailed business cases, nor does it produce coded examples to type in at your workstation. The book's approach is essentially discursive, providing ample material of interest to all classes of readers, and providing references to other documents that contain detailed material in each of these areas.
The book is organized into four parts. Each part has been designed so that it can be read independently by different audiences depending on their background and interests. The four parts are as follows:
