1 SYSTEM ARCHITECTURE AND DESIGN CONCEPTS 2 System Architecture -- Definition A system architecture defines the capabilities required to produce IT products and services that meet clients’ business needs, describes how these products and services are to be organized and provided, specifies what IT resources they require, and identifies what common product and service components can be leveraged across the needs of multiple clients. Defines capabilities required to produce products & services Describes how products & services are organized The architecture is driven by client business needs The I/S Product Catalog helps map those needs to capabilities Specifies what resources these require Infrastructure Application Systems People Identifies common components that can be leveraged 3 Potential Advantages of a System Architecture • To consistently meet the challenge of efficiently and effectively managing its resources, it is essential for an IT organization to identify and develop a well-designed and well-understood system architecture • A well-designed, well-understood, and well-managed system architecture: • Provides an active approach to developing and maintaining the strategic agility needed to address effectively the IT organization’s various clients’ needs and business opportunities • Helps organizations to avoid the undesirable outcome of the haphazard evolution of disconnected and inflexible systems • Provides knowledge about, and access to, reusable components that can be leveraged to reduce the amount of actual work needed to build the product 4 Advantages of a Good System Architecture (cont’d) • A well-designed, well-understood, and well-managed system architecture: • Makes complex systems more understandable and intellectually manageable by: • Providing abstractions that hide unnecessary detail • Employing unifying and simplifying concepts • Imposing a logical decomposition of the system • Ensuring the intellectual coherence of the various components of the system • Ensuring only the required minimum of logical coupling between different components • Reduce managerial complexity and makes the development of the system easier by: • Providing a natural (relative to the architecture) scheme for decomposing and assigning the work needed • Giving the various work components more coherence • Providing a clearer understanding of the various work product interfaces which reduces the work communication needs 5 Importance of Architects • Organizations can build competitive strength by identifying and developing individuals who have demonstrated through their experience and talents a particular prowess for system-level thinking about design • These individuals are typically known as architects • Their responsibility is to: • Make architectural decisions (from the big picture view) that protect the conceptual integrity of the architecture as it is developed • Guide the development of the system in ways that contribute to: • Increased efficiencies • More flexibility • Maintain and increase the ability to leverage for competitive advantages • In a nutshell, they make certain that all new projects fit within the existing architecture – this is a necessary constraint for success! 6 Architecture – Simplicity “There are two ways of constructing a software design: One is to make it so simple that there are obviously no deficiencies, and the other is to make it so complex that there are no obvious deficiencies. The first method is far more difficult.” -- C. A. R. Hoare 7 The Six Major Design Concepts • Modularity • Loose Coupling • Reuse • Flexibility • Encapsulation/Data Hiding 8 Modularity • Systematically decompose a problem into smaller subproblems • Solutions developed in this way are implemented using structured programming • The typical structured program is subdivided into modules wherein a main module invokes the other modules as needed 9 Loose Coupling • Coupling is a measure of the strength of the relationship between • • • • • modules Loose coupling indicates a high degree of module independence Loose coupling allows programming objects to come from completely different development processes and operate on completely different platforms, yet still function together Cohesion is a measure of the functional coherence and focus of a module Coupling and Cohesion are related: A first-order principle of software design is to increase cohesion and reduce coupling – which go hand-in-hand Example of Loose Coupling: I/O Separation 10 Reuse • Build it once, leverage it many times • Loose coupling and tight cohesion increase the opportunities for reuse 11 Flexibility • Enables the support of a multitude of customers and platforms with a single version of code • Accomplished using variable data (parameters) or rules instead of “hard-coding” • Rules are ideally stored in relational databases such as DB2. 12 Encapsulation • Also referred to as data-hiding • Provides a form of logical data independence • Example 1: With encapsulation, the implementation of a type can be changed without the need to change any of the programs that use that type • Example 2: DB commands provide a degree of encapsulation in that a VSAM record, a DB2 row, or an IMS segment can all be accessed using the DB-OBTAIN verb System Oriented Architecture (SOA) SOA (rhymes with boa) Service-oriented architecture (SOA) - perspective that focuses on the development, use, and reuse of small selfcontained blocks of code (called services) to meet all application software needs • Software code is not developed solely for a single application • Rather services are built that can be used and reused across all applications 7-14 SOA (continued) • Can extend SOA to the entire organization • An SOA organization would be… • Lean and agile using resources in the best way • Proactive in addressing changes in the market • Quick to respond and adapt to advances in technology • Transformational in its processes, structure and HR initiatives to match a changing, dynamic workforce 7-15 SOA Terminology • Service - chunks of code • A business task that can be reused • Search employee, check customer account, authorize credit • Multiple services make up a business process • Service provider • Whoever allows the service to be shared • Service consumer • Similar to a use case actor • Is who uses the service • Service registry • A catalog that displays and describes each service • Service contract or agreement • Registry also lists terms and conditions on how a service may be used 7-16 SOA (continued) • SOA focused specifically on IT • Customers • End users • Software development • Information needs • Hardware requirements 7-17 SOA (continued) Customers should be able to “plug and play” into your organization and have the same experience regardless of the channel End users should have access to whatever information and software they need regardless of where they (the end users) are 7-18 SOA (continued) Software development should focus on reusable components (services) to accelerate systems development. This means using component-based development methodologies. Information would be treated appropriately as a valuable organizational resource – protected, managed, organized, and made available to everyone who needs it. 7-19 SOA (continued) Hardware is both integrated and transparent SOA is programming language and platform independent: plug and play. 7-20