Essential Software Architecture - Chapter 1 Understanding Software Architecture - Summary
This is brief summary of 'Essential Software Architecture by Ian Gorton.
Note: Only the first chapter.
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
My take on the difference between software architecture and software design. Also highlights similarities between ISO/IEC/IEEE 42010-2011 (Systems and software engineering —Architecture description) and IEEE STD 1016-2009 (Systems Design — Software Design Descriptions)
Software Architecture: views and viewpointsHenry Muccini
This is an introductory lecture to Software Architecture Views and Viewpoints, part of the Advanced Software Engineering course, at the University of L'Aquila, Italy (www.di.univaq.it/muccini/SE+/2012)
Introduction to Modern Software ArchitectureJérôme Kehrli
This talk offers an introduction to software architecture with a modern perspective. We will consider a new way to identify architectural elements and walk through some examples of modern architectures, the NoSQL world, Big Data architectures and micro-services.
Software Architecture and Design - An OverviewOliver Stadie
about “Software Architecture and Design”
what it is, what it isn’t
giving a basic idea about the terms
detailed comments and annotations for each slide can be found here: https://docs.google.com/presentation/d/1U8zNQ5YQ2562yQzotVQ5cLxsPKu44lD3_L9jdSPKk4g/edit?usp=sharing
Lecture 2: The Concept of Enterprise Architecture. The full teaching pack with 19 lectures, tests and other materials based on the book "The Practice of Enterprise Architecture: A Modern Approach to Business and IT Alignment", which can be freely used for teaching purposes, adapted or translated with references to the original, is available on request to the author (visit http://kotusev.com)
It is well known that an effective PMO is key to successful and efficient program and project execution. In other words, doing things “right”. Enterprise Architecture is the discipline that plans and monitors enterprise transformation and aligns the business strategy with information technology capabilities. In other words, doing the “right things” to support the business.
Why is it organizations despite having both of these disciplines still struggle with effective enterprise transformation? What can we done to use these disciplines more effectively to effect better business outcomes? What are the roles of each discipline and how do they work together to create business value?
In this presentation, Riaz will address these questions and will provide real life examples that can help build a strong relationship between the PMO and Enterprise Architecture.
Learning Objectives:
• How to build a strong relationship between the PMO and Enterprise Architecture (EA) to deliver positive outcomes for your organization
• Identify the different roles and functions of the PMO and EA as well as their similarities
Software architecture and software design are two aspects of the same topic. Both are about how software is structured in order to perform its tasks. The term "software architecture" typically refers to the bigger structures of a software system, whereas "software design" typically refers to the smaller structures.
My take on the difference between software architecture and software design. Also highlights similarities between ISO/IEC/IEEE 42010-2011 (Systems and software engineering —Architecture description) and IEEE STD 1016-2009 (Systems Design — Software Design Descriptions)
Software Architecture: views and viewpointsHenry Muccini
This is an introductory lecture to Software Architecture Views and Viewpoints, part of the Advanced Software Engineering course, at the University of L'Aquila, Italy (www.di.univaq.it/muccini/SE+/2012)
Introduction to Modern Software ArchitectureJérôme Kehrli
This talk offers an introduction to software architecture with a modern perspective. We will consider a new way to identify architectural elements and walk through some examples of modern architectures, the NoSQL world, Big Data architectures and micro-services.
Software Architecture and Design - An OverviewOliver Stadie
about “Software Architecture and Design”
what it is, what it isn’t
giving a basic idea about the terms
detailed comments and annotations for each slide can be found here: https://docs.google.com/presentation/d/1U8zNQ5YQ2562yQzotVQ5cLxsPKu44lD3_L9jdSPKk4g/edit?usp=sharing
Lecture 2: The Concept of Enterprise Architecture. The full teaching pack with 19 lectures, tests and other materials based on the book "The Practice of Enterprise Architecture: A Modern Approach to Business and IT Alignment", which can be freely used for teaching purposes, adapted or translated with references to the original, is available on request to the author (visit http://kotusev.com)
It is well known that an effective PMO is key to successful and efficient program and project execution. In other words, doing things “right”. Enterprise Architecture is the discipline that plans and monitors enterprise transformation and aligns the business strategy with information technology capabilities. In other words, doing the “right things” to support the business.
Why is it organizations despite having both of these disciplines still struggle with effective enterprise transformation? What can we done to use these disciplines more effectively to effect better business outcomes? What are the roles of each discipline and how do they work together to create business value?
In this presentation, Riaz will address these questions and will provide real life examples that can help build a strong relationship between the PMO and Enterprise Architecture.
Learning Objectives:
• How to build a strong relationship between the PMO and Enterprise Architecture (EA) to deliver positive outcomes for your organization
• Identify the different roles and functions of the PMO and EA as well as their similarities
Software architecture and software design are two aspects of the same topic. Both are about how software is structured in order to perform its tasks. The term "software architecture" typically refers to the bigger structures of a software system, whereas "software design" typically refers to the smaller structures.
The product that software professionals build and then support over the long term.Software Characteristics,
1.Software is developed or Engineered, it is not manufactured in the classical sense.Importance of Software Engineering
This ppt covers the following topics:
Introduction
Data design
Software architectural styles
Architectural design process
Assessing alternative architectural designs
Thus it covers Architectural Design
Abstract - Various aspects of three proposed architectures for distributed software are examined. A Crucial need to
create an ideal model for optimal architecture which meets the needs of the organization for flexibility, extensibility
and integration, to fulfill exhaustive performance for potential talents processes and opportunities in the corporations
a permanent and ongoing need. The excellence of the proposed architecture is demonstrated by presenting a rigor scenario based proof of adaptively and compatibility of the architecture in cases of merging and varying organizations, where the whole structure of hierarchies is revised.
Keywords: ERP, Data-centric architecture, architecture Component-based, Plug in architecture, distributed systems
Arquitectura empresarial para ingenieros de sistemas - ResumenJohn Ortiz
Arquitectura empresarial para Ingenieros de Sistemas - Resumen
Define lo qué es una arquitectura empresarial, artefactos de sistemas y de la empresa, implementación de programas.
Evolución de la empresa a través de la identificación de artefactos actuales, y propuestas futuras de artefactos.
Versión original: http://www.ibm.com/developerworks/ssa/rational/library/edge/09/jun09/enterprisearchitecture/
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
1. Essential Software Architecture
Chapter 1: Understanding Software Architecture
Summary
1.1 What is software Architecture
● During the last fifteen years we have seen how software architecture is topic of
relevant importance.
● IASA (International Association of Software Architects) is an association for Software
Architects.
● Architecture is an overused and least understood term in professional software
development circles.
● A term is gradually becoming vacuous when it becomes part of the vernacular of the
software industry sales force.
1.2 Definitions of Software Architecture
● Define a term like Software Architecture is always a potentially dangerous activity.
○ There really is no widely accepted definition by the industry.
● Definitions of Software Architecture:
○ IEEE: Architecture is defined by the recommended practice as 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.
■ Architecture captures system structure in terms of components and how
they interact.
■ It also define system-wide design rules and considers how a system may
change.
○ Software Architecture in Practice (2nd Edition)1:
■ The software architecture of a program or computing system is the
structure or structures of the system, which comprise software
elements, the externally visible properties of those elements, and the
1 [L.Bass, P.Clements, R.Kazman, Software Architecture in Practice (2nd edition), Addison-Wesley 2003]
2. relationships among them.
○ From Garlan and Shaw’s early influential work:
■ Software Architecture goes beyond the algorithms and data structures
of the computation; designing and specifying the overall system structure
emerges as a new kind of problem. Structural issues include gross
organization and blog control structure; protocols for communication,
synchronization, and data access; assignment of functionality to design
elements; physical distribution; composition of design elements; scaling
performance; and selection among design alternatives.
1.2.1 Architecture Defines Structure
● Much of an architect’s time is concerned with how to sensibly partition and application
into a set of interrelated components, modules, objects or whatever unit of software
partitioning works for you.
● An architecture must be designed to meet the specific requirements and constraints of
the application it is intended for.
● For example:
○ A requirement for an information management system may be that the
application is distributed across multiple sites, and a constraint is that certain
functionality and data must reside at each site.
○ An application’s functionality must be accessible from a web browser.
● All these impose some structural constraints:
○ Site-specific,
○ Web server hosted
● ...and simultaneously open up avenues for considerable design creativity in
partitioning functionality across a collection of related components.
● In partitioning an application, the architect assigns responsibilities (the tasks a
component can be relied upon to perform within the application) to each constituent
component.
● All the chunks, then, must be ensamble to provide the required functionality.
● Responsibility-driven design2 is a technique from object-orientation that can be used
effectively to help define the key components in an architecture.
○ This approach provides the tools and techniques that emphasize behavioral
modeling using objects, responsibilities and collaborations.
● A key structural issue for nearly all applications is minimizing dependencies between
components, creating a loosely coupled architecture from a set of highly cohesive
components.
● A dependency exists between components when a change in one potentially forces a
change in others. By eliminating unnecessary dependencies, changes are localized
2 http://www.wirfs-brock.com/Design.html
3. and do not propagate throughout an architecture.
● Excessive dependencies are simple a bad thing.
○ They make it difficult to make changes to systems,
○ More expensive to test changes,
○ they increase build times, and
○ They make concurrent, team-based development harder.
1.2.2 Architecture Specifies Component Communication
● When an application is divided into a set of components, it becomes necessary to think
about how these components communicate data and control information.
● Components can communicate through:
○ Straightforward method calls
○ Implicit method innvocation
○ Remote method invocation, and so on.
● They may execute in different threads or processes, and communicate through
synchronization mechanisms.
● Or multiple components may need to be simultaneously informed when an event occurs
in the application’s environment.
4. ● Architectural patterns and styles3 has catalogued a number of successfully used
structures that facilitate certain kinds of component communication.
● Patterns provides a well-known and accepted reusable architectural blueprints that
describe the structure and interaction between collections of participating components.
● Each pattern has characteristics that make it appropriate to use in satisfying particular
types of requirements. For example:
○ The client-server pattern has several useful characteristics, such as synchronous
request-reply communications from client to server, and servers supporting one
or more clients through a published interface.
○ Client-server architectures must also provide a mechanism for clients to locate
servers, handle errors, and optionally provide security on server access.
● The power of architecture pattern stems from their utility, and ability to convey design
information.
● Large systems tend to use multiple patterns, combined in ways that satisfy the
architecture requirements.
● When an architecture is based around patterns, it also becomes easy for team
members to:
○ understand a design,
○ as the patterns infers component,
○ communications, and
○ abstract mechanisms that must be provided
1.3 Architecture Addresses Nonfunctional Requirements
● Nonfunctional requirements are the ones that don’t appear in use cases.
● Rather than define what the application does, they are concerned with how the
application provides the required functionality.
● There are three distinct areas of nonfuncional requirements:
○ Technical constraints:
■ They constrain design options by specifying certain technologies that the
application must use:
● “We have only Java developers, so we must develop in Java”
● “The existing database runs on Windows XP only”
■ These are usually nonnegotiable.
○ Business constraints:
■ These too constraint design options, but for business, not technical
reasons. e.g.:
3 Patterns and styles are essentially the same thing.
5. ● “In order to widen our potential customer base, we must interface
with XYZ tools”.
● “The supplier of our middleware has raised prices prohibitively,
so we’re moving to an open source version”.
■ Most of the time, these too are nonnegotiable.
○ Quality attributes:
■ These define an application’s requirements in terms of:
● Scalability,
● Availability,
● Ease of change,
● Portability,
● Usability,
● Performance, and so on.
● An application architecture must therefore explicitly address these aspects of the design.
● Architects need to understand the functional requirements, and create a platform that
supports these and simultaneously satisfies the nonfunctional requirements.
1.3.1 Architecture Is an Abstraction
● A marketecture4 is an excellent vehicle for facilitating discussion by stakeholders during
design, build, review, and of course the sales process.
● It’s easy to understand and explain and serves as a starting point for deeper analysis.
● A thoughtfully crafted marketecture is particularly useful because it is an abstract
description of the system.
● In reality, any architectural description must employ abstraction in order to be
understandable by team members and project stakeholders.
○ This means that unnecessary details are suppressed or ignored in order to focus
attention and analysis on the salient architectural issues.
○ This is typically done by describing the components in the architecture as black
boxes, specifying only their externally visible properties.
● One of the most powerful mechanisms for describing and architecture is hierarchical
decomposition.
○ Components that appear in one level of description are decomposed in more
detail in accompanying design documentation.
● Fig. 1.2 depicts a very simple two-level hierarchy using an informal notation, with two of
the components in the top-level diagram decomposed further.
4 http://en.wikipedia.org/wiki/Marchitecture
6. ● Different levels of description in the hierarchy tend to be of interest to different
developers in a project.
● The architecture clearly partitions the responsibilities of each team, defining the
dependencies between them.
● In this hypothetical example, the architect has refined the design of two of the
components, presumably because some nonfunctional requirements dictate that
further definition is necessary.
● Perhaps an existing security service must be used, or the Broker must provide a
specific message routing function requiring a directory service that has a known level
of request throughput.
● In the above example, the Client component is not partitioned, because the internal
structure and behavior of the client is not significant in achieving the application’s overall
nonfunctional requirements.
○ The Client component could possibly be the most complex in the application.
It might have an internal architecture defined by its design team, which meets
specific goals for the Client component.
● It’s not necessary for the architect to complicate the application architecture with such
issues, as they can be safely left to the Client design team to resolve.
1.3.2 Architecture Views
● A software architecture represents a complex design artifact.
● The term “architecture views” is a way of describing and understanding an architecture
based on the following four views:
○ Logical View:
7. ■ This describes the architecturally significant elements of the architecture
and the relationship between them.
■ The logical view essentially captures the structure of the application using
class diagrams or equivalents.
○ Process view:
■ This focuses on describing the concurrency and communications
elements of an architecture.
■ In IT applications, the main concerns are describing multithreaded
or replicated components, and the synchronous or asynchronous
communication mechanisms used.
○ Physical view:
■ This depicts how the major processes and components are mapped on to
applications hardware.
■ It might show, for example, how the database and web servers for an
application are distributed across a number of server machines.
○ Development view:
■ This captures the internal organization of the software components,
typically as they are held in a development environment or configuration
management tool.
■ For example, the depiction of a nested package class hierarchy for a Java
application would represent the development view of an architecture.
● These views are tied together by the architecturally significant use cases: often called
scenarios.
● By working through the steps in a particular use case, the architecture can be “tested”,
by explaining how the design elements in the architecture respond to the behaviour
required in the use case.
● Krutche’s paper and other works, recommend capturing an architecture model using
three different views [alternative approach]:
○ Module:
■ This is a structural view of the architecture, comprising the code modules
such as classes, packages, and subsystems in the design.
■ It also captures:
● module decomposition,
● inheritance,
● associations, and
● aggregations.
○ Component and connector:
■ This view describes the behavioral aspects of the architecture.
■ Components are typically:
● Objects,
● threads or processes.
■ Connectors describe how the components interact.
8. ● Common connectors are sockets, middleware like CORBA or
shared memory.
○ Allocation:
■ This view shows how the processes in the architecture are mapped to
hardware, and how they communicate using networks and/or databases.
■ It also captures a view of the source code in the configuration
managements systems, and who in the development group has
responsibility for each modules.
● The terminology used in “Views and Beyond” is strongly influenced by the architecture
description language (ADL) research community.
1.4 What Does a Software Architect Do?
● The environment that a software architect works in tends to define their exact roles and
responsibilities.
● FOUR (4) skills for a software architect, regardless of their professional environment:
○ Liaison:
■ Architects play many liaison roles.
■ They liaise with:
● Customers
● Clients
● Technical team
● Business and requirements analysts.
■ They justify designs, decisions and cost with the management
deparment.
■ They liaise with sales, to help promote a system to potential purchasers
or investors.
■ Software architect must a simple terminology depending the stakeholder.
○ Software Engineering:
■ Deep understanding of the technology domains (relevant to context of
applications they work on).
■ Know how to exploit new technologies and features into the working
application.
■ Just as importantly, good architects know what they don’t know, and
ask other with greater expertise when they need information.
○ Risk Management:
■ Good architects tend to be cautious.
■ They are constantly enumerating and evaluating the risks associated
with the design and technology choices they make.
■ They document manage these risks in conjunction with project sponsors
and management.
9. ■ They try to make sure no unexpected disaster occur.
● Architects play a central role in software development, and must be multiskilled in
software engineering, technology, management and communication.
1.5 Architects and Technologies
● Architect must make design decisions early in a project lifecycle.
● That decisions are so difficult.
● Due to the difficulty of validating early design decisions, architects sensibly rely on
tried and tested approaches for solving certain classes of problems.
● Through architectural patterns architects can reduce risk leveraging successful designs
with known engineering attributes.
● Patterns are an abstract representation of an architecture. They can be realized in
multiple concrete forms.
● Patterns only describe solutions in abstract terms.
● Frameworks are implementation of design patterns. They come to rescue.
● As Fig. 1.3 depicts, several classes of COTS technologies are used in practice to
provide packaged implementations of architectural patterns for use in IT systems.
● Different COTS technology implementations have different sets of strengths and
weakness and costs, and consequently will be better suited to some types of
applications than others.
● The difficulty for architects is in understanding these strengths and weakness early
in the development cycle for a project.
○ ...and choosing an appropriate reification of the architectural patterns they
need.
● The history of the software industry is littered with poor choices and subsequent failes
projects.
10. ● Eoin Woods says:
○ Software architecture is the set of design decisions which, if made incorrectly,
may cause your project to be cancelled.
1.6 Architect Title Soup
● Scan job advertisements:
○ Chief Architect:
■ Typically a senior position who manages a team of architects within an
organization.
■ Operates at:
● a broad
● organizational level
● and coordinates efforts across system applications, and product
lines.
■ Very experienced.
■ Rare combination of deep technical and business knowledge.
○ Product/Technical/Solution Architect:
■ Have a deep knowledge of how some important piece of software really
works.
○ Enterprise Architect:
■ More business-focus role.
■ Use various business methods and tools to understand, document, and
plan the structure of the major systems in an enterprise.
1.8 Further Reading
1.8.1 General Architecture
11. 5
1.8.2 Architecture Requirements
I. Jacobson, M. Christerson, P. Jonsson, G. Overgaard. Object-Oriented Software Engineering:
A Use Case Driven Approach. Addison-Wesley, 1992.
R. Wirfs-Brock, A. McKean. Object Design: Roles, Responsibilities, and Collaborations.
Addison-Wesley, 2002.
1.8.3 Architecture Patterns
F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal,. Pattern-Oriented Software
Architecture, Volume 1: A System of Patterns. John Wiley & Sons,
1996.
D. Schmidt, M. Stal, H. Rohnert, F. Buschmann. Pattern-Oriented Software Architecture,
Volume 2, Patterns for Concurrent and Networked Objects. John Wiley & Sons, 2000.
5 From Essential Software Architecture by Ian Gorton
12. Two recent books that focus more on patterns for enterprise systems, especially enterprise
application integrations, are well worth a read.
M. Fowler. Patterns of Enterprise Application Architecture. Addison-Wesley, 2002.
G. Hohpe, B. Woolf. Enterprise Integration Patterns: Designing, Building, and Deploying
Messaging Solutions. Addison-Wesley, 2003.
1.8.4 Technology Comparisons
P. Tran, J. Gosper, I. Gorton. Evaluating the Sustained Performance of COTS based Messaging
Systems. in Software Testing, Verification and Reliability, vol 13, pp 229–240, Wiley and Sons,
2003.
I. Gorton, A. Liu. Performance Evaluation of Alternative Component Architectures for Enterprise
JavaBean Applications, in IEEE Internet Computing, vol.7, no. 3, pages 18–23, 2003.
A. Liu, I. Gorton. Accelerating COTS Middleware Technology Acquisition: the i-MATE Process.
in IEEE Software, pages 72–79,volume 20, no. 2, March/April 2003.