Enterprise soa service-oriented architecture best practices pdf

Thursday, May 16, 2019 admin Comments(0)

Book Description. This book spells out guidelines and strategies for successfully using ServiceOriented Architecture (SOA) in large-scale projects. Download Citation on ResearchGate | On Jan 1, , D Krafzig and others published Enterprise SOA - Service-Oriented Architecture Best Practices. Best practices ROI from faster time-to-market – a more responsive enterprise Source: InfoWorld Research Report: Service Oriented Architecture (SOA).

Language: English, Spanish, Indonesian
Country: Bhutan
Genre: Fiction & Literature
Pages: 410
Published (Last): 19.11.2015
ISBN: 251-4-50399-212-5
ePub File Size: 28.66 MB
PDF File Size: 16.88 MB
Distribution: Free* [*Regsitration Required]
Downloads: 23431
Uploaded by: INGRID

ABC Amber CHM Converter Trial version, html. Enterprise SOA: Service-Oriented Architecture Best Practices By Dirk Krafzig. Enterprise SOA: Service-Oriented Architecture Best Practices Strategic Enterprise Architecture Management: Challenges, Best Practices, and Future. Enterprise SOA; Service-Oriented Architecture Best - Ebook download as PDF File .pdf), Text File .txt) or read book online.

From my point of view. The receiver typically has to determine the function name and the dispatch message to the associated business function. Further, the use of techniques and tools discussed in the [9] Gregor Hohpe, Developing Software in a paper would reduce the time to arrive at the Service-Oriented World, White Paper from architecture and design of the SOA based solution. The history of computing was always closely related to solving business problems, starting as early as with computers being used as large-scale calculators and as a replacement for large filing cabinets. In Chapter 8. In the early days of functional programming. In this paper, large-scale business specific needs of different units within the applications built on distributed systems are referred enterprise.

It presents the SOA methodology recommended to customers. The solutions discussed in the paper are reusable across domains and the implementing organizations would benefit in terms of considerable time and cost savings.

Each of the applications caters to the based solutions. In this paper, large-scale business specific needs of different units within the applications built on distributed systems are referred enterprise. It discusses a collaborate to provide a uniform view of the Strawman Architecture that serves as a starting enterprise and also leverage on the investments point for developing Service Oriented Architecture made in legacy applications, through reuse of for Enterprise Applications.

The paper also business functionality provided by them. NET applications, using Design Patterns. The solutions and reference A central aspect of Service Oriented architectures discussed in the paper are reusable Architectures is the loose coupling between across domains and the implementing organizations applications services that is achieved when would benefit in terms of considerable time and cost services publish their functional and non-functional savings.

Section 2 discusses the concept of Service Oriented 2. Section 3 discusses the Strawman necessary for enterprises to protect the investments Architecture that serves as a starting point for the already made in existing solutions despite the need development of Service Oriented Architecture for for new applications that incorporate changing large Enterprises. Section 4 describes the Reference technologies and business requirements.

NET platforms, using Design Patterns. Also, several customers require an approach to plan an enterprise wide strategy that 2 Service Oriented Architecture leads to a scenario of well integrated IT systems within their organization. SOA, when approach in which an application exposes services properly implemented, addresses the business and that are consumed by clients.

SOA differs from the technical integration considerations elegantly. The higher level of abstraction provides Architecture SOA , it becomes imperative to a strategic advantage of facilitating more focus on consider SOA for Enterprise Applications to benefit the business requirement [12].

A business service can be mapped to one or more technology services for implementation.

From a 3 Strawman Architecture for technology perspective, a service is a defined Enterprise-Wide SOA interface with input and output parameters. Typically, an Enterprise is a large organization having forward and backward linkages with other Services can be implemented in various ways. Net agencies. The Enterprise would, in all likelihood, be platform can provide services. The problem with involved in B2B and B2C transactions.

This section these technologies is that they are platform specific presents Strawman Architecture for developing and are not interoperable.

Strawman Architecture is the technologies like Web Services, which can be used initial architecture that serves as a starting point for across platforms and networks. Web Services work developing the target architecture. They are platform-independent, vendor of the target architecture.

With the advent of web services, SOA enabled enterprise applications have become vendor independent, to a great extent. A generic view of a service is as a major technology and have products that considered. These services control the flow and interaction of business services. There are typically two types of Data It can be seen from the figure that the enterprise services that need to be provided in an enterprise: A key feature of the architecture is the use of data stored across the enterprise in various data Enterprise Service Bus ESB that enables a smooth sources.

ESB is Integration services that provide the ability to often described as a product, especially in the interact with structured and unstructured data marketing literature of various vendors. But, in a services like the databases and flat files. These strict sense, ESB is an architectural style. The business processes of the and encapsulate access to functionality and data in enterprise may be exposed as services that can be those applications. Amazon Related Book Categories: All Categories.

Recent Books. IT Research Library. Miscellaneous Books. Computer Languages. Computer Science. Electronic Engineering. Linux and Unix. Microsoft and. Conclusion Chapter 8. Managing Process Integrity Section 8. Data Versus Process Integrity Section 8.

Conclusion Chapter 9. Infrastructure of the Service Bus Section 9. Software Buses and the Service Bus Section 9. Logging and Auditing Section 9.

Availability and Scalability Section 9. Securing SOAs Section 9. Conclusion Chapter SOA in Action Section Building Web Applications Section Enterprise Application Integration Section Business-to-Business Section Fat Clients Section Designing for Small Devices Section Multi-Channel Applications Section Conclusion Part II. Organizational Roadmap Chapter Motivation and Benefits Section The Enterprise Perspective Section The Personal Perspective Section Stakeholders and Potential Conflicts of Interest Section Four Pillars for Success Section An Ideal World Section Established Project Management Methodologies Section Configuration Management Section Testing Section Conclusion Part III.

Real-World Experience Chapter Project Scope Section Implementation Section Technology Section Lessons Learned, Benefits, and Perspectives Chapter Winterthur Case Study Section Credit Suisse Case Study Section Halifax Bank Of Scotland: No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein.

John Wait Editor in Chief: Don O'Hagan Executive Editor: Paul Petralia Editorial Assistant: Michelle Vincenti Marketing Manager: Chris Guzikowski Cover Designer: Jerry Votta Managing Editor: Gina Kanouse Project Editor: Christy Hackerd Copy Editor: Benjamin Lawson Indexer: Lisa Stumpf Compositor: Mary Sudul Manufacturing Buyer: For more information, please contact: All rights reserved.

Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise.

For information regarding permissions, write to: Pearson Education, Inc. Today, we can look back at a process, which has created the corresponding architectural guidelines, processes, and infrastructure components.

In the meantime, we are reaping the benefits of our strategy and are transferring, step by step, our traditional application landscape into a loosely coupled SOA. This forms, as well, the basis for our next step in the direction of Business Process Management.

This book clearly describes the many concepts that we painstakingly developed at that time and answers the most important questions that are encountered on the way to an adaptable application landscape for large-scale enterprises. From my point of view, this is a book that should be read by all those who are considering remodeling their application landscape.

Covering both a business and architectural view, these strategies aim to promote the implementation of an IT infrastructure that can serve as a base for the development of truly flexible business processes.

This book covers its subject with great profoundness based on real-world evidence. It is in the interest of everybody involved with software architectureparticularly for anybody who intends to establish a Service-Oriented Architectureto read this book.

The Enterprise Services Architecture enables unprecedented flexibility in business process deployment, allowing companies to execute and innovate end-to-end processes across departments and companies, with minimum disruption to other systems and existing IT investments.

It provides easy integration of people, information, and systems in heterogeneous IT environments and provides a future proof application platform. Enterprise SOA provides readers with the architectural blueprints and SOA-driven project management strategies that are required to successfully adopt SOA on an enterprise level.

The authors also clearly describe the right strategies for using Model Driven Architecture MDA to manage SOA Service Repositories in a platform-independent way, enabling enterprises to better address the problem of heterogeneity at many levels.

The Object Management Group was created just to address this central problem of integration in the face of constantly changing heterogeneity and platform churn, so I strongly recommend this book for the bookshelf of every enterprise architect and developer.

Richard Mark Soley, Ph. Anderson Agile Management for Software Engineering: Ambler, Michael E. Palmer, John M. It is therefore impossible to list everybody who influenced, supported, or aided us on our journey from the initial idea to the final manuscript. Nevertheless, we owe our gratitude to at least the following people: We would like to thank our publisher, Pearson Education, for the support that led to this book being completed. In particular, we would like to thank Paul Petralia, our editor, and Christy Hackerd.

The case studies in this book would not have been possible without extensive cooperation with SOA protagonists from different organizations. This book would also not have been possible without countless discussions and critical feedback of colleagues, friends, and reviewers. Sebastian-Svante Wellershoff contributed to the design of our artwork. Birgit Anders supported the author-team by proofreading, formatting, drawing figures, and many other activities that were necessary to produce a manuscript for this book.

We all appreciated the accurate and swift manner in which she worked. Mark Roantree was our proofreader for linguistic and some of the technical aspects of this book. Roland Tritsch and Joachim Quantz have both closely worked with the author team and developed many of the ideas that were presented in this book. They were like a virtual extension of the author team. Last but not least, we owe our special gratitude to our partners, families, and friends for their patience, time, support, and encouragement.

We know that we cannot make it up to you. Since then, Dirk has acquired a rich set of real world experience with this upcoming new paradigm both from the view point of a platform vendor and from the perspective of software projects in different industry verticals.

Writing this book was an issue of personal concern to him as it provided the opportunity to share his experiences and many insights into the nature of enterprise IT with his readers.

Today, Dirk is designing enterprise applications and managing projects, applying the guiding principles outlined in this book. Dirk has a Ph. After graduating as a Master of Physics, he gained his commercial experience in various consulting assignments, mostly in the financial and telecommunications sector.

He moved through stages of consultant, technical lead, software architect, and project manager using a variety of object-oriented technologies, programming languages, and distributed computing environments. Soon realizing that he was too constrained as an employee in doing what he thought necessary in software development, he co-founded the company iternum in , where he currently acts as a principal consultant and general manager.

Karl permanently lives in Mainz, Germany when not temporarily relocated by a current project. After this, Dirk set up his own company, Shinka Technologies, which successfully developed one of the first XML-based Web services middleware products, starting as early as Dirk is currently working as a solution architect for Computer Sciences Corporation in Zurich, Switzerland.

Urbanization and the mass production of goods in large factories fundamentally changed how mankind lived and worked together. One hundred years later, the industrial revolution had not slowed down: At the turn of the twentieth century, automation, specialization, and a never-ending spiral of efficiency improvement have resulted in modern economies with unheard-of industrial productivity.

After a phase of consolidation during the transition from the twentieth to the twenty-first century, globalization and virtualization have now become the key drivers of our economic lives. Without a doubt, they will yet again change how we live and work together.

If we take a closer look at the past 20 years, we can observe that established business rules have been constantly redefined. New business models emerged; small companies quickly grew into billion-dollar multinationals, aggressively attacking other established companies.

A wave of mergers, acquisitions, and buyouts changed the overall industrial landscape. IT has played a major role in all of this, be it through controlling production processes and supply chains or by creating real-time links between financial markets, thus virtually eliminating arbitrage opportunities by closing the time gaps of trading around the globe.

The Internet boom and the "virtual enterprise" are cornerstones of this ongoing development. Entirely new products and services have been created, which would have been unthinkable without the support of modern IT. Without a doubt, today's modern enterprises are completely dependent on their IT. Consequently, today's IT is driven by the same dynamics as the enterprise itself. Today, we expect an extremely high level of flexibility and agility from our enterprise IT. During the post Internet-boom years, cost efficiency quickly became another key requirement, if not the most important one.

Enterprise IT has changed as a result of the constantly increasing pressure. In the early days of enterprise computing, IT was merely responsible for providing storage and processing capacity, with more and more business logic being added throughout the decades. During the different boom phases in the s and s, a plethora of new applications emerged, often side by side with the information silos that had been developed in the previous 20 years. Today, the increasing cost pressure is forcing us to efficiently reuse existing systems while also developing new functionality and constantly adapting to changing business requirements.

The term "legacy system" is now often replaced with "heritage system" in order to emphasize the value that lies in the existing systems. The increases in reuse and harmonization requirements have been fueled by the urgency of integrating the historically grown IT landscapes in order to improve IT efficiency and agility. While a lot of trial-and-error projects were executed in the s, with more or less high levels of success, the development of EAI and middleware concepts has now been culminated in the principles of Service-Oriented Architecture SOA , which can be seen as an important evolutionary point in the development of integration technologies.

What is important about SOA is that it has taken away the focus from fine-grained, technology-oriented entities such as database rows or Java objects, focusing instead on business-centric services with business-level transaction granularity. Instead, it represents an architectural blueprint, which can incorporate many different technologies and does not require specific protocols or bridging technologies.

The focus is on defining cleanly cut service contracts with a clear business orientation. A summary of each chapter provides an overview of the step-by-step approach required for the successful introduction of Service-Oriented Architectures SOA. Furthermore, this book is an excellent introduction to the real world of commercial computing for students in a variety of disciplines.

If you are a software architect, this book provides you with hands-on guidelines for the design of SOAs. You will find the definition of an SOA together with its key terms as we distinguish the SOA from approaches such as component architectures and software buses. Furthermore, this book provides concrete guidance for the most important design decisions one will encounter in practice.

These guidelines comprise identifying services, assigning the appropriate service type and allocating the ownership of data to services. You will also discover how to utilize expansion stages in order to enable stepwise SOA introduction.

This book also provides valuable advice on the design of a functional infrastructure for business processes and on how to achieve process integrity, approach heterogeneity, and initiate the technical infrastructure. We discuss these guidelines with respect to different application types, including Web applications, fat clients, mobile applications, EAI, and multi-channel applications.

For the purpose of software architects, Chapters 4 to 10 are most valuable. In addition, Chapter 13, which covers SOA project management, will be helpful in ensuring an efficient collaboration within an SOA project. Do you see yourself in the role of an SOA evangelist? If you intend to implement an SOA within your own organization, you must successfully promote your ideas. Most importantly, you must be able to communicate the benefits of the SOA to all stakeholders of the application landscape within your organization.

Chapter 11 will be of special interest to you because it presents the key benefits of SOA for the organization and each individual stakeholder. In addition, Chapter 12 provides an in-depth description of the steps required to set up an SOA, with considerable practice-oriented advice as to the introduction of appropriate processes and boards. After reading this book, you should have a deeper understanding of SOAs, enabling you to effectively argue the benefits to different stakeholders and to establish the necessary processes and boards to make your SOA endeavor a success!

If you are a software designer, analyst, or developer working in an SOA project, although you are likely to work in a specific part of your application landscape, this book will help you obtain a better understanding of the entire process. Furthermore, there are key challenges such as process integrity that directly impact your work. This bookin particular Chapters 7 to 10helps to address these challenges in a coordinated manner within your SOA project.

If you work in the IT strategy department of an large organization, you should read this book in order to find out how SOAs can add to your IT strategy. Your work is likely to be driven by the demand for agility and cost effectiveness. Many enterprises have experienced projects that failed to deliver the required functionality and therefore lost business opportunities. Furthermore, many application landscapes suffer from high maintenance costs for their inherited assets and the integration of new applications.

Finally, several strategies for introducing the SOA within the organization are presented. Those success stories provide "living proof" of SOA success and offer an impression of the different ways an SOA can be established.

If you are an experienced project manager, you should read this book in order to understand the specific benefits of SOAs for project management. The SOA approach implies a major simplification of the overall software development process, and this book makes these benefits accessible.

Enterprise SOA; Service-Oriented Architecture Best Practices.pdf

However, SOAs will challenge you, and as a result, this book presents solutions to the most important problems one encounters in an SOA project, both from the technical and project management viewpoints. You will find Chapter 13, which focuses on project management, and Chapters 11 and 12, which depict the political environment, to be most beneficial. It should be noted that this book does not introduce a new software development methodology.

A successful SOA adoption accelerates an enterprise by reducing the gap between strategy and process changes on one hand and supporting IT systems on the other. The IT architecture and the business organization are mutually dependent, although they both drive each other. Finally, real-world experience, in particular previous long-term IT infrastructure initiatives both successful and unsuccessful influence and validate many of the core concepts of SOA.

Not surprisingly, this book is structured around these three factors. After we introduce the subject area in Chapters 1 to 3, Part I, Chapters 4 to 10, focuses on the architecture. Part II, Chapters 11 to 13, discusses the challenges of introducing an SOA at the level of the organization, depicting its benefits, processes, and project management. Chapter 2, "The Evolution of the Service Concept," describes how commercial information technology has moved toward the service concept over the last 40 years.

Today's SOA is the preliminary endpoint of many years of painful "testing. Chapter 3, "Inventory of Distributed Computing Concepts," introduces the fundamental concepts of distributed computing that are required for subsequent discussions in Part I Chapters Particular topics will be communication infrastructures, synchronous versus asynchronous communication, payload semantics, granularity, and loose versus tight coupling.

Part I: Architectural Roadmap Chapter 4, "Service-Oriented Architectures," describes the particular requirements of large organizations for building an architecture and defines the term "Service-Oriented Architecture" as it is used throughout this book. Chapter 5, "Services as Building Blocks," is a direct continuation of Chapter 4. It introduces different service typesnamely basic, intermediary, process-centric, and external servicesand gives an in-depth discussion of their key characteristics.

Chapter 6, "The Architectural Roadmap," completes the discussion started in Chapter 5. Using the concept of building blocks, the high-level structure of SOAs is depicted. Chapter 6 introduces two key concepts: SOA layers and expansion stages. SOA layers aim to organize the aforementioned services at the enterprise level. Expansion stages are well-defined levels of maturity of an SOA that enable a stepwise implementation.

In this book, three expansion stages are distinguished: This chapter draws a demarcation line between the responsibilities of a BPM infrastructure and the functional infrastructure provided by the SOA. Chapter 8, "Process Integrity," delves into the challenges of distributed architectures with respect to consistency and how SOAs approach this major issue.

This chapter provides numerous helpful, hands-on guidelines tackling real-world constraints such as heterogeneity, changing requirements, or budget. Chapter 9, "Infrastructure of a Service Bus.

Enterprise SOA: Service-Oriented Architecture Best Practices - PDF Free Download

This chapter will address the issue of the type of runtime infrastructure that is required in order to put an SOA in placean infrastructure that is commonly known as the "service bus. It is offering an IT renovation roadmap, which will leverage the concepts of Service-Oriented Architectures SOA on both the technical and organizational levels in order to create sustainable improvements in IT efficiency and agility.

The aim of this roadmap is to strike a good balance between immediate gains on one hand and long-lasting improvements to the enterprise IT landscape on the other. An SOA should increase the capability of an enterprise to address new business requirements on the short term by reusing existing business logic and data models, thus incurring only minimal cost, resource, and time overheads, while minimizing risks, especially when compared to rewriting entire application systems.

Best service-oriented enterprise soa practices pdf architecture

In addition, an SOA should provide endurable benefits in terms of agility because it provides a long-term strategy for the increase of the flexibility of an IT infrastructure. This chapter closely looks at the problems faced by enterprise software today, the resulting requirements for an enterprise IT architecture such as an SOA, and how such an architecture can be established on the organizational level.

Carr published the heatedly debated article "IT doesn't matter" in the Harvard Business Review, claiming that " Because of today's highly competitive global economy, these business processes underlie constant change: Enterprises must constantly sense changes in market conditions and swiftly adapt their strategies to reflect these changes.

Therefore, it is a key requirement for modern enterprise IT that changes in company strategy be reflected quickly and efficiently in the company's IT systems, which are the backbone for executing the strategy. This is exactly where the enterprise software dilemma starts: Today's enterprise software development almost always suffers from lack of agility and from inefficiency.

This means that enterprises are not able to match business requirements onto underlying IT infrastructure fast enough, effectively limiting the capability of the enterprise to react appropriately to market demands. In addition, the inefficiency of enterprise software development means that the development that is actually done costs too much when compared to the actual output. If we look at a typical enterprise software system, we can normally observe an initial phase of high productivity and agility, as shown in Figure During this Green field phase, the system is built with much new functionality, and initial change requests can be implemented relatively quickly and efficiently.

However, after the initial system implementation has been put in place and the first couple of change requests have been executed, the ability to make more changes to the system deteriorates dramatically, and maintenance over time becomes harder and harder.

Figure Change requests reduce the agility of a system over time. This stagnation phase, which almost any enterprise software system experiences over time, cannot be explained by a single reasona number of factors contribute to this phenomenon. Some of these reasons are related to software technology, such as the difficulty of making structural changes to an existing code base.

However, most of the reasons are not of a technical nature but rather are related to reasons on the organizational level. For example, after the initial launch phase of a system, the project management and key domain experts are likely to move on to the next project, often leaving the maintenance of the system to less skilled maintenance workers, many times even without doing a proper hand-over.

In addition, after the initial phase of euphoria about the new system, it might lose its internal lobby over time and thus the necessary political support within the organization.

Tight project budgets often mean that fixes and changes cannot be done properly and are only done on an ad-hoc basis, without taking the existing order of the system into consideration. Typically, there is no time and budget for doing a proper refactoring of the system to ensure its long-term maintainability.

Finally, critical structural decisions are often made on the side, without executing proper controlfor example, an engineer might quickly write a small batch program to synchronize data between two systems, and 10 years later, a small army of developers is needed to deal with the consequences of this ad-hoc decision.

When looking at enterprise software, we are usually not looking at isolated systems, but at large numbers of systems with complex cross-dependencies that have grown over many years and with a high level of heterogeneity and redundancies.

We rarely have sufficient in-house knowledge about the different systems, and we often need to cope with very different design and programming styles. Finally, people are getting used to this situation and are starting to think in terms of workarounds, not in terms of the "right" structures.

Some organizations might have found better ways of coping with these problems than others, but it's hard to find any organization today that can claim that it has completely sorted out these issues. Enterprise Software Is a Different Animal In order to better understand the problems of enterprise software, we need to look at the specific characteristics of it, which are different from those of other types of software, such as system software, desktop applications, embedded systems, scientific software, or video games.

As the name indicates, enterprise software is tightly coupled with the internal organization, processes, and business model of the enterprise. Enterprise software underlies both cross-departmental dependencies and external business relationships. Consequently, an architecture for enterprise software must deal with large numbers of different requirements.

Many of these requirements are conflicting, while others are unclear. In almost every case, the requirements are a moving target due to the permanent change of markets, the organization of the enterprise, and its business objectives.

Enterprise SOA: Service-Oriented Architecture Best Practices

It is this involvement in all aspects of the enterprise and the business that makes enterprise software highly complex. Enterprise applications rarely contain a large amount of complicated algorithms. The code that describes a piece of business logic is usually very simple. The structure of a COBOL-based billing system is much simpler than, for example, an embedded system for a Mars robot with complex real-time and multi-threading requirements.

In enterprise applications, one usually finds very simple data structures, which again are different from other systems such as geographic information systems GIS. Let's consider an example in order to illustrate the difference between enterprise applications and other software: An enterprise application such as a Customer Relationship Management System CRM , a billing system, a shipping system, or an insurance claims processing system. The stakeholders in these systems include different business units and potentially even the CEO, as well as different IT projects, IT maintenance, and operations.

In these scenarios, we will be facing highly heterogeneous teams and often very political environments. The technology landscape will be highly heterogeneous as well, including many different application and middleware platforms. The business data and content will have a very long lifetime, especially when compared with the much shorter cycles of technology innovation. We need to deal with constantly changing functional requirements that are usually not well-defined.

Practices architecture soa best pdf service-oriented enterprise

In addition, we will be facing many cross-dependencies between functional requirements, as well as heterogeneous technology platforms. The number of end users will be potentially very large, and the applications will have to be rolled out to large numbers of PCs, often more than 10, Take, on the other hand, a desktop application, such as a word processor or spreadsheet application.

A smaller, more homogeneous technical team will develop this application. It will be used by office workers as well, but the problem space is more well-defined.

The application logic is self-contained, with very few cross-dependencies. Finally, there is no roll-out problem because the end user is typically responsible for the installation himself. As we can see from these examples, enterprise software is unique in many respects, and therefore, it requires unique measures to ensure the efficiency of its development and maintenance.

The Importance of Enterprise Software Architectures According to the second law of thermodynamics, any closed system cannot increase its internal order by itself.

In fact, any activity that is geared toward ordering the system will increase its overall disorder called entropy. In many respects, this law is also applicable to enterprise software, which often has very similar characteristics.

Consequently, outside intervention is continually required to help create a higher order and to ensure that development efforts are not lost. In enterprise software, the architect takes on the role as an outside influencer and controller. It is his responsibility to oversee individual software projects from the strategic point of view of the overall organization, as well as from the tactical, goal-oriented viewpoint of the individual project.

He has to balance different requirements while attempting to create an enduring order within the enterprise software landscape. The enterprise software architecture is the architect's most important tool at hand. Software architects are constantly confronted with changes to and expansion of functionality that increase system complexity and reduce efficiency.

By refactoring current solutions, architects constantly strive to reduce complexity and thereby increase the agility of the system see Figure Software architects use refactoring to fight the constant increase in system complexity. They might occur in major changes to existing jurisdiction, the end-of-life of a supported product, or the introduction of large chunks of computing infrastructure, such as in the course of a merger or acquisition.

Such events require a major effort at very short notice to keep the architecture in a simple and maintainable state. Devastating consequences have been observed as a result of mergers and acquisitions: Because it is unknown a priori when such effects will occur, it is vital to keep the enterprise architecture in a maintainable and changeable state all the time.

As we will see in the remainder of this book, Service-Oriented Architectures are particular well suited to cope with the needs of such an ongoing incremental process of optimization.

The Requirements for an Enterprise Software Architecture As a result of the aforementioned tight coupling with the internal organization, processes, and business model of the enterprise, an enterprise software architecture must fulfill very different requirements than, for example, a software architecture for a system that is controlled by a small number of highly qualified domain experts, such as the Mars robot or a video game engine.

In order to improve agility and efficiency, an enterprise software architecture must provide particular characteristics: The enterprise architecture must be simple in order to allow efficient communication between key personnel. As previously discussed, many people are involved in the specification and construction of enterprise software. All these people have different roles and consequently different viewpoints with regard to the software.

It is also likely that several different skill sets exist among personnel. These might range from IT coordinators of functional departments to technical architects. Many IT coordinators will have detailed business domain knowledge but no technical expertise.

On the other hand, technical architects will probably have an excellent technical education but have little understanding of the vertical business. Nevertheless, all the people involved must be able to understand and manage the architecture at their respective levels e.

Flexibility and maintainability. Every enterprise system is subject to ongoing change. It must continuously be adapted to new requirements due to the need of evolving markets, legal changes, or business reorganizations.

Therefore, the architecture must lead to a highly flexible and maintainable system. The architecture must define distinct components that can be rearranged and reconfigured in a flexible manner.

Local changes cannot be permitted to have an impact on the global system. Providing that the external API of a component remains stable, an internal change should not affect operations outside the component. In this context, one needs to understand that external interfaces of components must be designed very carefully.

To a great extent, interfaces must be generic and not specific to a single usage scenario. However, defining generic interfaces requires excellent domain knowledge, experience, and to some extent, luck. Finally, the internal implementation of a component must allow efficient maintenance, making it is easy to add or modify functionality.

Reusability has been a major objective of software engineering for decades, with varying degrees of success. It is in the interest of an enterprise to gain as much benefit from its software assets as possible. This can be achieved by creating an inventory of useful building blocks and continually reusing them. One obvious reason for reuse is reduced development and maintenance cost, which can be accomplished by sharing common functionality in code libraries that are used across different projects.

However, perhaps a more important aspect of reusability is the ability to share data across applications in real-time, thus reducing content redundancies. Having to maintain the same dataset in multiple databases becomes a nightmare in the long term. Unfortunately, it is not easy to achieve the goals of reuse. Large organizations have learned that reuse is not always efficient because it is particularly costly to administer, find, and understand the components that should be reused, and sometimes this cost outweighs the benefits.