Summary
10.1 Patterns Management
- A pattern documents a recurring problem/solution pairing within a given context.
- Patterns can be used to construct architectures at various levels of scope to guarantee specific properties.
- Patterns are classified as design or implementation centric. Design-centric patterns are organized in a pattern hierarchy that includes architectural styles, architectural patterns, and design patterns. Implementation-centric pattern hierarchy includes implementation styles, implementation patterns, and idioms.
- In patterns terminology, styles are named collections of architectural decisions that are applicable in a given solution context, constrain architectural decisions that are specific to a solution within that context, and elicit beneficial qualities in each resulting system.
- An enterprise architecture (EA) is a conceptual blueprint that defines the structure and operation of organizations.
- Design modeling provides a variety of different views of the system like architecture plans for the enterprise.
- The architecture may appear in different levels of focus from a top-down standpoint (i.e., enterprise, portfolio, or project).
- A pattern catalog is a collection of patterns that are organized according to specific characteristics and the relationships between them are defined.
- Implementation patterns are typically specific to technology stacks that are selected as part of the specialization of a solution design.
- Patterns management comprises a series of patterns that create an organization chart for developing software.
10.2 Enterprise Architecture Management Frameworks
- Enterprise architecture (EA) is a comprehensive, well-defined approach of business planning to utilize information technology to meet the objectives of the business vision by aligning business and technology strategies.
- Enterprises focus on activities that allow them to meet their current and future objectives.
- The enterprise IT strategy is based on a collective set of principles that form a consistent framework for technology decision-making and reflect a level of consensus among key stakeholder technology groups.
- Business and technology executives are responsible for managing IT projects so that they achieve division-wide and company-wide objectives by engaging with the enterprise architects.
- Aligning business and technology strategies is typically difficult to do on an ongoing basis because of the lack of alignment with enterprise-driven initiatives. Enterprise architecture helps align business and technology strategies.
- There are many enterprise architecture frameworks, such as TOGAF, Gartner, C4ISR, CORBA, FEA, and Zachman.
- The Open Group Architecture Framework (TOGAF) is an EA methodology and framework used by leading organizations to improve business efficiency.
- Architecture Development Method (ADM) is a detailed step-by-step process for developing or changing an enterprise architecture as well as a content framework to help drive greater consistency in the outputs that are created when using the ADM.
- ADM defines the TOGAF approach for establishing processes linked with enterprise architecture. It provides a recursive and tested process development business architecture; every phase of the ADM is iterative in nature to develop an enterprise-wide architecture.
- ADM phases are Preliminary Phase, Architecture Vision, Business Architecture, Information System Architecture, Technology Architecture, Opportunities and Solutions, Migration Planning, Implementation Governance, and Architecture Change Management.
- EA is typically used by companies to produce a blueprint of the future state and a road map for getting there.
- A road map is used to guide an organization with planning and maintaining business goals over time through technology.
- ArchDev is an example of an Accelerated Architecture-Driven Digital Transformation process, which helps companies proactively embed stakeholder interests and sustainability into the company’s digital growth.
- Agile EA Management (AEAM) is a methodology used for software development and project management.
- An enterprise architecture blueprint is a visualization of the architecture at the conceptual, logical, and physical level of an enterprise, showing concepts, their elements, as well as the components that implement the elements and their interrelationships.
- HCC studies the design, development, and deployment of mixed-initiative human-computer systems.
- HCC/HCI is a subfield within computer science concerned with the study of the interaction between people and computers.
- Microservices is an approach to building a software solution as a set of small services that may be deployed locally or on the cloud.
10.3 Solution Architecture Management
- Solution architecture management is managing, designing, and describing the solution engineering in relation to specific business problems.
- The software process can be defined as a collection of patterns that define a set of activities, actions, and tasks required to develop computer software.
- Software engineering process patterns establish collaborative communication between customers and software engineers to guarantee a successful completion of task patterns within the project requirements and the project scope.
- Subsystems are sets of collaborating components performing a given task included in software systems and it is considered a separate entity within a software architecture.
- At a programming language level, components may be represented as modules, classes, objects, or as a set of related functions.
- The requirements model describes the problem set, establishes the context, and identifies the system of forces that hold sway.
- Design patterns are a representation of the previous test solutions in relation to specific problems, which are useful for solving future problems.
- An architectural style corresponds to a coordinated role and allows relationships among the elements within any architecture that conforms to that style.
- The framework is an implementation-specific skeletal subsystem for design work.
- A software stack is a collection of independent components or subsystems such as operating system, protocols, databases, architectural layers, and function calls that work together to support the execution of an application.
- As architectural models get transitioned into implementation architectures, it becomes necessary to specify how architectural and design patterns are realized practically within the solution.