13
INFOSYS280 Business Systems Construction Software Architecture

Business Systems Construction Software Architecture fileanalysis, design, planning, and ... IBM Systems Journal of an article titled "A Framework for Information ... //msdn.microsoft.com/enus

  • Upload
    ngodiep

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

INFOSYS280

Business Systems Construction

Software Architecture

Enterprise Architecture

● architecture (ANSI/IEEE Std 1471­2000) – "the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution." 

● Enterprise Architecture – "a well­defined practice for conducting enterprise analysis, design, planning, and implementation, using a holistic approach at all times, for the successful development and execution of strategy. Enterprise architecture applies architecture principles and practices to guide organizations through the business, information, process, and technology changes necessary to execute their strategies. These practices utilize the various aspects of an enterprise to identify, motivate, and achieve these changes. (Architecture and Governance Magazine, Issue 9­4, November 2013 (2013). Retrieved on November 19, 2013.)

● Objectives– System complexity

– Poor business alignment

● Zachman Framework (1987) – Self­described as a framework, more accurately defined as a taxonomy

– Others (3 major) focus on process, proscriptive methodology for creating an enterprise architecture, and a practice

● Benefits

– Organizational design, processes, standards

– Project management

– System development

– IT value, complexity, openness, risk management

● Criticisms

– Most EA initiatives failed, never really resulted in anything useful ( EA Failed Big Way! by Ivar Jacobson. on http://blog.ivarjacobson.com/ October 18, 2007)

● Government Enterprise Architecture for NZ (GEA­NZ) (https://www.ict.govt.nz/guidance­and­resources/architecture/enterprise­architecture/)

– Goals

● One of the primary goals of Enterprise Architecture is to ensure that investments in technology, information and process development are cost­effective, sustainable and aligned with the organisation’s strategic goals

– Primary Outcomes (Objectives)

● Consistent and accurate information across agencies

● Functional Integration

● Authoritative Reference

● Resource Optimisation

– https://msdn.microsoft.com/en­us/library/bb466232.aspxIBM Systems Journal of an article titled "A Framework for Information Systems Architecture," by J.A. Zachman

Enterprise Architecture

IBM Systems Journal of an article titled "A Framework for Information Systems Architecture," by J.A. Zachman

Software Architecture

●  Definition– Software application architecture is the process of defining a structured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability. It involves a series of decisions based on a wide range of factors, and each of these decisions can have considerable impact on the quality, performance, maintainability, and overall success of the application.

● What it means for you– Identify appropriate strategies and design patterns to help design your solutions layers, components and services

– Identify and address key engineering decision points for your solution

– Identify and address key quality attributes

– Create a candidate baseline architecture for your solution

– Choose right technologies for your solution

– Identify patterns and practices solution assets and further guidance

● Key Architecture Principles– Build to change instead of building to last

– Model to analyse and reduce risk

– Use models and visualizations as a communication and collaboration tool

– Identify key engineering decisions

Microsoft Application Architecture Guide, 2nd Editionhttps://msdn.microsoft.com/en­us/library/ff650706.aspx

Software Architecture

Microsoft Application Architecture Guide, 2nd Editionhttps://msdn.microsoft.com/en­us/library/ff650706.aspx

Client/Server

The client/server architectural style describes distributed systems that involve a separate client and server system, and a connecting network. The simplest form of client/server system involves a server application that is accessed directly by multiple clients, referred to as a 2-Tier architectural style.

● Benefits

– Higher security

– Centralized data access

– Ease of maintenance

Microsoft Application Architecture Guide, 2nd Editionhttps://msdn.microsoft.com/en­us/library/ff650706.aspx

Component­Based

Component-based architecture describes a software engineering approach to system design and development. It focuses on the decomposition of the design into individual functional or logical components that expose well-defined communication interfaces containing methods, events, and properties. This provides a higher level of abstraction than object-oriented design principles, and does not focus on issues such as communication protocols and shared state. .

● Benefits

– Ease of deployment

– Reduced cost

– Ease of development

– Reusable

– Mitigation of technical complexity

Microsoft Application Architecture Guide, 2nd Editionhttps://msdn.microsoft.com/en­us/library/ff650706.aspx

Domain Driven Design (DDD)

Domain Driven Design (DDD) is an object-oriented approach to designing software based on the business domain, its elements and behaviours, and the relationships between them. It aims to enable software systems that are a realization of the underlying business domain by defining a domain model expressed in the language of business domain experts. The domain model can be viewed as a framework from which solutions can then be rationalized.

● Benefits

– Communication

– Extensible

– Testable

Microsoft Application Architecture Guide, 2nd Editionhttps://msdn.microsoft.com/en­us/library/ff650706.aspx

Layered Architectural

Layered architecture focuses on the grouping of related functionality within an application into distinct layers that are stacked vertically on top of each other. Functionality within each layer is related by a common role or responsibility. Communication between layers is explicit and loosely coupled. Layering your application appropriately helps to support a strong separation of concerns that, in turn, supports flexibility and maintainability.

● Benefits

– Abstraction

– Isolation

– Manageability

– Performance

– Re usability

– Testability

Microsoft Application Architecture Guide, 2nd Editionhttps://msdn.microsoft.com/en­us/library/ff650706.aspx

Message Bus

Message bus architecture describes the principle of using a software system that can receive and send messages using one or more communication channels, so that applications can interact without needing to know specific details about each other. It is a style for designing applications where interaction between applications is accomplished by passing messages (usually asynchronously) over a common bus.

● Benefits

– Extensibility

– Low complexity

– Flexibility

– Loose coupling

– Scalability

– Application simplicity

Microsoft Application Architecture Guide, 2nd Editionhttps://msdn.microsoft.com/en­us/library/ff650706.aspx

N­Tier / 3­Tier

N-tier and 3-tier are architectural deployment styles that describe the separation of functionality into segments in much the same way as the layered style, but with each segment being a tier that can be located on a physically separate computer. They evolved through the component-oriented approach, generally using platform specific methods for communication instead of a message-based approach

● Benefits

– Maintainability

– Scalability

– Flexibility

– Availability

Microsoft Application Architecture Guide, 2nd Editionhttps://msdn.microsoft.com/en­us/library/ff650706.aspx

Object­Oriented

Object-oriented architecture is a design paradigm based on the division of responsibilities for an application or system into individual reusable and self-sufficient objects, each containing the data and the behaviour relevant to the object. An object-oriented design views a system as a series of cooperating objects, instead of a set of routines or procedural instructions. Objects are discrete, independent, and loosely coupled; they communicate through interfaces, by calling methods or accessing properties in other objects, and by sending and receiving messages

● Benefits

– Understandable

– Reusable

– Testable

– Extensible

– Highly Cohesive

Microsoft Application Architecture Guide, 2nd Editionhttps://msdn.microsoft.com/en­us/library/ff650706.aspx

Service­Oriented

Service-oriented architecture (SOA) enables application functionality to be provided as a set of services, and the creation of applications that make use of software services. Services are loosely coupled because they use standards-based interfaces that can be invoked, published, and discovered. Services in SOA are focused on providing a schema and message-based interaction with an application through interfaces that are application scoped, and not component or object-based.

● Benefits

– Domain alignment

– Abstraction

– Discover ability

– Interoperability

– Rationalisation

Microsoft Application Architecture Guide, 2nd Editionhttps://msdn.microsoft.com/en­us/library/ff650706.aspx