Lecture 1 - Introduction to architecture by Michel Chaudron - Part 1
Summary
TLDRThis lecture introduces software architecture, discussing its importance, fundamental concepts, and role in system design. It covers the challenges faced by software engineers, the evolution of software complexity, and the strategic planning needed for effective architecture. The lecture emphasizes the interplay between business, user requirements, and technology, highlighting architecture's role in aligning these forces and its impact on project costs and risks.
Takeaways
- 🏗️ Software architecture is the structure of a computing system that comprises software components, their externally visible properties, and the relationships among them. It is crucial for determining system qualities like performance, modifiability, and security.
- 🤔 The importance of software architecture lies in its role in reducing product costs, decreasing time to market, and managing the complexity of increasingly interconnected and globally competitive software systems.
- 📈 As software grows in size and complexity, architects must plan for evolution to keep the system manageable. This involves understanding the impact of design decisions on system components and their interactions.
- 👥 Software architecture serves multiple purposes, including answering why the system is needed, documenting important design decisions, and guiding the system's implementation.
- 🔍 Architecture documentation is essential for describing and communicating the system's important aspects to all stakeholders, facilitating feedback and steering the design in a value-adding direction.
- 🛠️ The architecture guides the implementation by providing guidelines for design and addressing common design problems, such as security, which can vary in perspective depending on the stakeholder's role.
- 🔄 An architecture should be designed to accommodate foreseeable changes and new features, aiding in reducing maintenance costs and enhancing the system's adaptability.
- 🌐 The global workflow of architecture design involves a backlog of issues to be tackled, driven by context requirements and evaluation results, emphasizing the iterative nature of the architecture development process.
- 🔍 Different perspectives on architecture exist, such as enterprise-level architecture focusing on business processes and systems coordination, and product family architecture emphasizing commonalities and variability management.
- 💡 A proper software architecture process involves negotiating and balancing functional and quality requirements with possible solutions, highlighting the intertwined nature of requirements engineering and software architecture.
Q & A
What is the primary focus of the advanced software architecture course?
-The primary focus of the advanced software architecture course is to help learners understand the fundamentals of architecture and design, starting by describing what software architecture is, why it is important, and discussing the general issues that must be considered such as requirements, constraints, and the intersection between the user, business, and technology.
Why is software architecture important in the context of increasing software complexity and global competition?
-Software architecture is important because it helps manage the complexity of software, which is rapidly increasing and becoming more interconnected. It also plays a crucial role in reducing the cost of products, decreasing time to market, and ensuring that software can evolve and adapt to changing requirements and technologies in a competitive global market.
What are the three main purposes of software architecture?
-The three main purposes of software architecture are: 1) to answer questions related to why the system is needed, 2) to document the important design decisions, and 3) to guide how the system shall be built, providing guidelines for design and implementation.
How does software architecture support business objectives?
-Software architecture supports business objectives by allowing stakeholders to see what the system will be like and how it will meet their expectations, showing which modules and technologies need to be implemented and integrated for a working system, and helping in achieving targeted quality of the system by defining common solutions to be used across the system.
What is the role of architecture in managing the complexity of a system?
-Architecture helps in managing the complexity of a system by providing a common definition of the system to be built, guiding the implementation, and maintaining an overview of complex systems. It also aids in systematic analysis of 'what if' questions and identifying the consequences of changes or alternative design decisions.
What is the relationship between software architecture and the development of a product family?
-In the context of product families, software architecture is crucial for exploiting commonalities between different products while managing variability. It helps in designing an architecture that supports the evolution and extension of different features across various product variants within the family.
How does the architecture process involve negotiation and balancing of requirements and solutions?
-The architecture process involves an iterative cycle where initial functional and quality requirements lead to the development of an initial architecture. This architecture is then discussed with stakeholders, leading to further refinement of requirements and architecture until an agreement is reached, ensuring that the final design meets both functional and quality needs.
What are the different perspectives on what constitutes software architecture?
-Different perspectives on software architecture include viewing it as the structure of a system comprising software components and their relationships, as the fundamental concepts and properties embodied in its elements and design principles, and as the set of design decisions that determine the quality properties of a system.
How does the architecture process handle the evolution of software over time?
-The architecture process acknowledges that software is always changing and incorporates principles for evolving the architecture. It is not just a static picture but also defines how the architecture can evolve over time, ensuring that the system remains manageable and adaptable.
What is the significance of architecture in the early stages of a project's lifecycle?
-Architecture is significant in the early stages of a project's lifecycle because the decisions made in these initial stages determine 90% of the cost and risk of the entire project. A solid architecture can reduce development costs in the long run and ensure that the system is robust and adaptable to future requirements.
Outlines
🏗️ Introduction to Software Architecture
This paragraph introduces the concept of software architecture, emphasizing its importance and fundamental role in the design process. Michelle Shodon, the lecturer, outlines the lecture's topics, which include understanding software architecture's definition, its purposes, and objectives. The paragraph also discusses the challenges faced by software engineers, such as reducing product costs and decreasing time to market. The complexity of software is highlighted, with an example of how video game software has evolved over time. The architecture serves multiple purposes: it answers why the system is needed, documents important design decisions, and guides the system's implementation. The importance of aligning the implementation with the architecture is also stressed.
📈 Business Objectives and Architecture
In this paragraph, the focus shifts to how software architecture supports various business objectives. The architecture serves as a tool for stakeholder discussions, allowing them to visualize and provide feedback on the system's design. It also aids in identifying necessary modules and technologies for system development, facilitating discussions on development schedules and potential reuse of components. The architecture is crucial for achieving targeted system quality by defining common solutions and enabling early analysis of various quality properties like performance, security, and maintainability. The paragraph also touches on the iterative process of architecture design, involving requirements engineering and constant negotiation and balancing of functional and quality requirements.
🌐 Software Architecture Definition and Perspectives
This paragraph delves into the definition of software architecture, describing it as the structure of a computing system that includes software components, their externally visible properties, and their relationships. The architecture is crucial for carrying system qualities like performance and security. Different perspectives on architecture are discussed, highlighting its role in focusing on important decisions and managing the complexity of systems. The paragraph also explores the concept of architecture in the context of enterprise-level coordination and communication, distinguishing between business processes, functional layers, application layers, and technical layers. Additionally, the distinction between designing architecture for a single product and a product family is discussed, emphasizing the need to manage variability while exploiting commonalities.
🔍 Importance of Architecture and Alignment
The final paragraph concludes the lecture by emphasizing the importance of architecture in the early stages of a project's lifecycle. It notes that architecture decisions made in the first 10% of the project determine 90% of the project's cost and risk, underscoring the need for a solid architecture. The paragraph also discusses the role of architecture in aligning business, user requirements, and the technological landscape, highlighting its ability to enable analysis and planning of how changes in one domain affect others. The lecture concludes by reiterating the value of architecture in reducing development costs and ensuring the system's robustness as new requirements are added.
Mindmap
Keywords
💡Software Architecture
💡Design Decisions
💡Requirements and Constraints
💡Components, Interfaces, and Connectors
💡Evolution
💡Stakeholders
💡Quality Properties
💡Product Families
💡Backlog
💡Conceptual Integrity
💡Risk Analysis
Highlights
Software architecture is crucial for understanding the fundamentals of design.
Architecture involves considering requirements, constraints, and the intersection of user, business, and technology needs.
Software architecture defines the role, purposes, and objectives, emphasizing components, interfaces, and connectors.
The size and complexity of software are rapidly increasing, posing challenges for software engineers.
Software architecture helps in reducing product costs and decreasing time to market for new products or features.
An empirical law in software engineering states that software complexity increases over time, necessitating a plan for evolution.
Software architecture serves as a common definition of the system to be built, aiding in communication among stakeholders.
Architecture documentation is essential for guiding the implementation of the system by providing design and implementation guidelines.
Monitoring the correspondence between implementation and architecture is key to successful architecture implementation.
Software architecture supports business objectives by facilitating stakeholder discussions, planning development schedules, and enhancing common understanding.
Architecture impacts the targeted quality of the system by defining common solutions and enabling early analysis of various quality properties.
Architecture design should be adaptable to integrate foreseeable changes and new features, reducing maintenance costs.
Software architecture helps in managing the complexity of systems, allowing for systematic analysis of potential changes.
The software architecture process involves negotiating and balancing functional and quality requirements with possible solutions.
Requirements engineering and software architecture are intertwined, not strictly separated phases.
A proper software architecture can reduce development costs in the long run and ensure the system's robustness.
Architecture is about thinking in advance and planning for the lifecycle of the project to develop the right architecture.
The importance of architecture is emphasized as decisions made in the initial 10% of a project's lifecycle determine 90% of the cost and risk.
Transcripts
welcome to the advanced software
architecture
course my name is Michelle shodon and
this is the lecture introduction to
architecture this lecture contains a
series of topics that will help you
understand the fundamentals of
architecture and
design it starts by describing what
software architecture is and why it is
important it discusses the general
issues you must consider such as
requirements and constraints and the
intersection between the user the
business and the
technology this is followed by a
description of the most important
concepts of the field of software
architecture firstly we define the role
of software architecture and present its
purposes and objectives
at the end the key concepts are
presented such as components interfaces
and
connectors the size and complexity of
software increases
rapidly moreover software is
increasingly connected to other pieces
of
software and all of this is in a global
competition where software being
produced in one country can be sold
easily in another
country all of these together lead to a
collection of challenges that software
Engineers are facing
today to start the cost of products must
be
reduced also the time to market for
delivering a new product or feature must
be decreased significantly
significantly single products are
becoming part of product
families and software is upgraded after
after
deployment there is an empirical law in
software engineering which states that
the complexity of software increases
over
time
always this is
inevitable software starts simple and
feasible but a plan is needed for
evolution to keep the system
manageable to illustrate the growth of
software over the years the following
example presents grow graphs of video
game
software each node in a graph represents
a module which represents a major piece
of
functionality and the arcs represent
couplings between these
modules two nodes with an arc between
them need to communicate
intensively so design decisions made in
one note will propagate an impact its
neighbors by looking at figures 1
through before you should get a general
idea of how the situation has changed
over time both size and complexity have
increased a
lot creating software is a collective
effort of many designers and Engineers
together the first thing an architect
needs to do is to analyze and understand
the purpose of the software being
designed architecting involves
considering many aspects that are
crucial to get working
products a second important purpose of
an architecture is that of being a
common definition of the system to be
built in this sense the architecture
documentation is a way of describing and
communicating the important aspects of
the system to all
stakeholders thirdly the architecture is
the main guide for the implementation of
the system the implementation work is
done by the designers and
developers guiding the implementation is
done by providing guidelines for the
design and
implementation for instance by stating
which mechanisms should be used for
addressing commonly occurring design
problems for example
security and these guidelines could
cover different view
points so the three main purposes of an
architecture are
to answer questions related to why the
system is
needed to document what are the
important design
decisions and how the system shall be
built and once the architecture is done
it is important to to constantly monitor
the correspondence of the implementation
to the
architecture this is a key to the
successful implement impementation of
the
architecture there are several business
objectives that can be supported through
a software
architecture firstly an architecture can
be discussed with
stakeholders the architecture allows
stakeholders to see what the system is
going to be like and how it will how it
will meet their
expectations stakeholders then have a
chance to give feedback and steer the
design of the system into the direction
that yields most value to
them secondly an architecture shows
which modules and Technologies need to
be Implement implemented and integrated
in order to get a working
system this enables the discussion on
the development schedule as well as
offering options for
reuse an explicit representation of the
architecture also triggers discussion
and enhances common understanding
amongst the developers of the system
thirdly creating an architecture has a
positive impact on achieving the
targeted quality of the
system to start an architecture should
Define the common solutions to be used
across the
system this links to the concept of
conceptual Integrity which we will
discuss later in the
course moreover an architecture can be
the basis for analyzing various qual
properties of the
system for example based on a software
architecture Architects can discuss what
will be its performance or performance
bottlenecks other quality properties
that can be analyzed based on an
architecture include amongst many others
security and
maintainability at an early stage of
development it is still easy and not yet
costly to improve an architectural
design
and thereby the systems quality based on
the insights of such architectural
analyses finally the architecture should
be designed such that foreseeable
changes and new features can be
integrated easily into the
system in this way the architecture AIDS
in reducing the maintenance costs of a
system systems are becoming very
complex often they are so complex that
no single person can oversee all the
relevant aspects of a
system an architecture can help in
maintaining an overview of complex
systems also when an architecture
diagram looks complicated it probably is
complicated and it needs to be
simplified as such an architecture helps
in managing the complexity of a
system in a similar ve
having an architecture representation
allows for systematic analysis of what
if
questions the explicit representation
helps in identifying all the
consequences that a change or an
alternative design decision may
have an architecture can be used to show
whether the implementation of a new
feature will be simple or
complicated as such the architecture
AIDS in a ing
feasibility and in discovering risks or
more generally in doing risk
analysis a proper software architecture
process involves negotiating and
balancing of functional and quality
requirements on one hand and possible
solutions on the other
hand this means requirements engineering
and software architecture are not
subsequent phases that are strictly
separated but instead they are heavily
intertwined an initial set of functional
and quality requirements is the starting
point for developing an initial
architecture this initial architecture
results in a number of issues that
require further discussion with
stakeholders for instance a solution may
be too costly integration with already
existing systems may be
complex maintenance may be an issue
because of a lack of Staff with certain
expertise or performance requirements
cannot be
met these insights leads to further
discussion with
stakeholders a revised set of
requirements and ultimately to a revised
architecture this iterative process
continues until an agreement is
reached only then will a detailed design
and implementation
proceed this slide shows the global
workflow that is common to architecture
design
Methods at the center a backlog is
depicted the backlog contains a list of
issues to be tackled these are open
problems or ideas that still have to be
investigated the name backlog deres from
scrum and Agile development
method there the backlog drives the
project in architecture design the
notion of backlog is usually not used
explicitly yet it is always there
if only in the head of the
architect there are three inputs to the
backlog
context requirements and evaluation
results the context refers to such
things as upfront ideas the architect
may have available assets that can be
used constraint sets and the
like obviously the requirements
constitute another important input
in each step of the architecting process
one or a few items from the backlog are
taken and used to refine the
architecture developed so
far the result of this refinement is
evaluated usually rather
informally and this evaluation May in
turn change the contents of the backlog
new items may be added for instance new
problems that were discovered items may
disappear or become Obsolete and the
priorities of backlog items may
change what is software
architecture a common definition of
software architecture is the
following the software architecture of a
Computing system is the structure of the
system which comprises software
components the externally visible
properties of those components and the
relationships among
them the architecture is the primary
carrier of system qualities such as
performance modifiability and
security none of these can be achieved
without a unifying architectural
Vision architecture is an artifact that
allows early analysis to make sure that
the design approach will yield an
acceptable
system by building effective
architecture you can identify design
risks and mitigate them early in the
development
process there are more than one
definition about software architecture
and they provide complimentary
views here are two other
views software software architecture is
about the fundamental concepts and
properties of a system in its
environment embodied in its elements
relationship and the principles of its
design and evolution so this definition
emphasizes the relation between
architecture and its
environments moreover as we said before
software is always
changing therefore the way that an
architecture can evolve is an important
part of the architectural design so it
is not only AES static picture but uh
architecture defines the principles
about evolving an
architecture a complimentary view on
architecture is that architecture
consists of the set of design decisions
that determine the quality properties of
a system
this definition emphasizes that
architecture is not only the outcome in
terms of components and
relations but also the reasoning or
rationale that underlies this
outcome the reasoning connects the
architecture design to its
contexts this insight has led to
substantial Research into software
architecture Knowledge
Management overall it's good to realize
that architecture design choices May
address different levels of abstraction
in the system
system here are a few additional angles
from software
architecture architecture should focus
on the important stuff whatever that is
this refers to the fact that software
Architects should concern themselves
with those decisions that have high
impact on the system and its
stakeholders also architecture should
focus on things that are hard to change
since designing the architecture takes
place at the beginning of A System's
life cycle the architect should focus on
decisions that have to be right in the
early stages of a
project in it practice different people
use the term architecture in different
ways this is because they have different
perspectives on
architecture often depending on the role
that a person plays in an
organization the next set of slides
explains some of these different
perspectives when you talk with someone
about architecture it's good to ask
which perspective they have so as to
avoid
misunderstandings the Enterprise level
of Architecture is focused upon
coordination and communication of
business processes and it systems across
an entire
organization generally an Enterprise
architecture distinguishes four
layers the first layer is that of
business
processes that means the operational
steps of a workflow in some business
unit or possibly across different
division
boundaries the second layer is the
functional layer this layer defines what
type of functions should be available in
the
system nowadays this layer Maps closely
on
Services the previous two layers are
abstract in the sense that they are
intangible
the next layer is the application
layer this layer describes the software
applications that Implement certain
functionality these applications are
supposed to supply the functions that
are described in the functional
layer this layer is not abstract in the
sense that applications exist in the
real
world and finally there is the technical
layer this layer contains
infrastructural elements of the it
landscape such as the actual computers
on which the applications run as well as
Hardware operating systems network
software and
middleware types of
architecture rather than producing
individual Unique Systems some
Industries produce sets of systems that
have many
commonalities for example mobile
telephones or software and
cars such sets of systems that share
many commonalities are called Product
families a topic that software
Architects must consider is the
difference between the design of
architecture for a single product and
the design of an architecture for
product
family the challenge in product families
arise from the large number of variant
that must be supported and
maintained often the different features
have their own needs for evolution and
extension each individual product within
the product family is called a product
variant
while possessing specific features to
meet particular set of customer
requirements all product variants are
similar in the sense that they share
some common customer perceived value
they have common structures and or
common product technologies that form
the platform of the
family a product family targets a
certain Market segment segment whereas a
product variant is developed to address
a specific set of customer needs of a
market segment
in summary the aim of having a product
family architecture is to exploit the
commonalities between different products
and yet make the variability
manageable one reason why architecture
is important is because it is an enabler
for alignment between three
independently evolving forces that shape
a system the business user requirements
and the technological landscape an
architecture should make it possible to
analyze and plan how changes in one of
these domains affect the other
domains we're approaching the end of
this lecture and now we want to
emphasize the importance of
architecture the architecting is
typically done in the first 10% of the
life cycle of a
project and the decisions made in these
initial 10% determine 90% of the cost
and risk of the entire
project so make making a proper
architecture is very
important a solid architecture can
reduce the cost of development in the
long run ensuring that the system won't
crack at the seams when you add the next
portion of
requirements so in short architecture is
about thinking thinking in advance
thinking ahead and yes the development
of good architecture takes a bit of time
it can cost a bit but it pays off in the
long
run as long as you anticipate and map
out the life cycle of your project it is
possible to develop the right
architecture without costing much time
or impacting your
schedule at the end of this lecture you
should now know and be able to
explain first what is a software
architecture secondly why is software
architecture
important the lecture introduction to
architecture is now finished thanks for
watching
Посмотреть больше похожих видео
SARCH20 V2C 2021 04 15 Module 1 deel 1 van 3
An introduction to the concepts of Enterprise Architecture
TOPCIT Software | 06. Software Architecture
Software Engineering | Data Flow Diagrams | AKTU Digital Education
Project Based Internship Klinikgo Health System Analyst - Company Coaching Video 1
1 - Pengenalan Analisis dan Spesifikasi Rekayasa kebutuhan
5.0 / 5 (0 votes)