Lecture 1 - Introduction to architecture by Michel Chaudron - Part 1

Boban Vesin
26 Aug 201620:00

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

00:00

đŸ—ïž 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.

05:00

📈 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.

10:00

🌐 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.

15:02

🔍 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

Software architecture refers to the structure of a computing system, which includes the software components, their externally visible properties, and the relationships among them. It is the primary carrier of system qualities such as performance, modifiability, and security. In the video, it is emphasized that architecture is crucial for early analysis to ensure that the design approach will yield an acceptable system, and it is the foundation for making informed design decisions that affect the system's evolution and quality.

💡Design Decisions

Design decisions in the context of software architecture are the choices made that determine the quality properties of a system. These decisions are not just about the components and their relationships but also the rationale behind them. The script mentions that architecture consists of a set of design decisions, highlighting the importance of these decisions in shaping the system's functionality and evolution.

💡Requirements and Constraints

Requirements and constraints are essential considerations in software architecture. They define what the system must do and the limitations it must operate within. The script discusses how these factors intersect with user needs, business objectives, and technological capabilities, shaping the overall design and functionality of the software.

💡Components, Interfaces, and Connectors

Components, interfaces, and connectors are key concepts in software architecture. Components are the building blocks of the system, interfaces define how components interact, and connectors facilitate communication between them. The script uses these terms to illustrate how the architecture of a system is composed and how its parts interact, which is crucial for understanding the system's behavior and managing its complexity.

💡Evolution

Evolution in software architecture refers to the process of changing and improving the system over time. The script mentions that software starts simple but becomes more complex, necessitating a plan for evolution to keep the system manageable. This concept is critical in architecture design as it ensures that the system can adapt to new requirements and technologies.

💡Stakeholders

Stakeholders in the context of software architecture are individuals or groups who have an interest in the system. The script discusses how architecture allows stakeholders to see what the system will be like and how it will meet their expectations. Engaging stakeholders is crucial for gathering feedback and aligning the design with their needs and expectations.

💡Quality Properties

Quality properties in software architecture are attributes such as performance, security, and maintainability that the system must exhibit. The script highlights that an architecture should define common solutions to be used across the system, linking to the concept of conceptual integrity, and be the basis for analyzing various quality properties, ensuring that the system meets its intended goals.

💡Product Families

Product families are sets of systems that share many commonalities, such as mobile telephones or software in cars. The script discusses the challenges in designing architecture for product families, which arise from the need to support and maintain a large number of variants. The goal is to exploit commonalities while managing variability, which is crucial for efficient development and maintenance.

💡Backlog

In the context of software architecture, a backlog is a list of issues to be tackled, such as open problems or ideas that still need to be investigated. The script uses the term, borrowed from Agile development methods like Scrum, to describe how the architecting process is driven by a backlog, which contains items that are refined and evaluated iteratively.

💡Conceptual Integrity

Conceptual integrity in software architecture is the idea that a system should be designed as a coherent whole, with a consistent set of design principles. The script mentions that defining common solutions across the system is linked to this concept, emphasizing the importance of a unified vision in architecture design to ensure that the system's parts work together harmoniously.

💡Risk Analysis

Risk analysis in software architecture involves identifying and assessing potential problems that may arise during the development or operation of the system. The script discusses how an architecture can be used to show whether the implementation of a new feature will be simple or complicated, aiding in feasibility and risk analysis. This is crucial for making informed decisions and mitigating potential issues early in the development process.

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

play00:01

welcome to the advanced software

play00:03

architecture

play00:05

course my name is Michelle shodon and

play00:08

this is the lecture introduction to

play00:14

architecture this lecture contains a

play00:17

series of topics that will help you

play00:19

understand the fundamentals of

play00:21

architecture and

play00:23

design it starts by describing what

play00:25

software architecture is and why it is

play00:28

important it discusses the general

play00:31

issues you must consider such as

play00:34

requirements and constraints and the

play00:37

intersection between the user the

play00:39

business and the

play00:42

technology this is followed by a

play00:44

description of the most important

play00:45

concepts of the field of software

play00:52

architecture firstly we define the role

play00:54

of software architecture and present its

play00:57

purposes and objectives

play01:02

at the end the key concepts are

play01:04

presented such as components interfaces

play01:08

and

play01:11

connectors the size and complexity of

play01:13

software increases

play01:15

rapidly moreover software is

play01:19

increasingly connected to other pieces

play01:21

of

play01:22

software and all of this is in a global

play01:25

competition where software being

play01:27

produced in one country can be sold

play01:29

easily in another

play01:31

country all of these together lead to a

play01:34

collection of challenges that software

play01:36

Engineers are facing

play01:39

today to start the cost of products must

play01:42

be

play01:44

reduced also the time to market for

play01:47

delivering a new product or feature must

play01:49

be decreased significantly

play01:52

significantly single products are

play01:54

becoming part of product

play01:56

families and software is upgraded after

play01:59

after

play02:02

deployment there is an empirical law in

play02:05

software engineering which states that

play02:07

the complexity of software increases

play02:09

over

play02:10

time

play02:12

always this is

play02:14

inevitable software starts simple and

play02:17

feasible but a plan is needed for

play02:20

evolution to keep the system

play02:23

manageable to illustrate the growth of

play02:26

software over the years the following

play02:28

example presents grow graphs of video

play02:30

game

play02:32

software each node in a graph represents

play02:35

a module which represents a major piece

play02:37

of

play02:38

functionality and the arcs represent

play02:40

couplings between these

play02:43

modules two nodes with an arc between

play02:46

them need to communicate

play02:49

intensively so design decisions made in

play02:51

one note will propagate an impact its

play02:56

neighbors by looking at figures 1

play02:59

through before you should get a general

play03:02

idea of how the situation has changed

play03:04

over time both size and complexity have

play03:08

increased a

play03:12

lot creating software is a collective

play03:15

effort of many designers and Engineers

play03:19

together the first thing an architect

play03:21

needs to do is to analyze and understand

play03:24

the purpose of the software being

play03:27

designed architecting involves

play03:29

considering many aspects that are

play03:31

crucial to get working

play03:35

products a second important purpose of

play03:38

an architecture is that of being a

play03:40

common definition of the system to be

play03:43

built in this sense the architecture

play03:47

documentation is a way of describing and

play03:50

communicating the important aspects of

play03:52

the system to all

play03:56

stakeholders thirdly the architecture is

play03:59

the main guide for the implementation of

play04:01

the system the implementation work is

play04:04

done by the designers and

play04:06

developers guiding the implementation is

play04:08

done by providing guidelines for the

play04:10

design and

play04:11

implementation for instance by stating

play04:14

which mechanisms should be used for

play04:16

addressing commonly occurring design

play04:18

problems for example

play04:20

security and these guidelines could

play04:22

cover different view

play04:25

points so the three main purposes of an

play04:28

architecture are

play04:31

to answer questions related to why the

play04:34

system is

play04:36

needed to document what are the

play04:39

important design

play04:42

decisions and how the system shall be

play04:47

built and once the architecture is done

play04:50

it is important to to constantly monitor

play04:53

the correspondence of the implementation

play04:55

to the

play04:56

architecture this is a key to the

play04:58

successful implement impementation of

play05:00

the

play05:04

architecture there are several business

play05:06

objectives that can be supported through

play05:08

a software

play05:10

architecture firstly an architecture can

play05:13

be discussed with

play05:15

stakeholders the architecture allows

play05:17

stakeholders to see what the system is

play05:19

going to be like and how it will how it

play05:22

will meet their

play05:24

expectations stakeholders then have a

play05:26

chance to give feedback and steer the

play05:27

design of the system into the direction

play05:29

that yields most value to

play05:32

them secondly an architecture shows

play05:36

which modules and Technologies need to

play05:37

be Implement implemented and integrated

play05:41

in order to get a working

play05:43

system this enables the discussion on

play05:45

the development schedule as well as

play05:47

offering options for

play05:50

reuse an explicit representation of the

play05:52

architecture also triggers discussion

play05:55

and enhances common understanding

play05:57

amongst the developers of the system

play06:02

thirdly creating an architecture has a

play06:04

positive impact on achieving the

play06:06

targeted quality of the

play06:09

system to start an architecture should

play06:12

Define the common solutions to be used

play06:14

across the

play06:16

system this links to the concept of

play06:19

conceptual Integrity which we will

play06:21

discuss later in the

play06:24

course moreover an architecture can be

play06:27

the basis for analyzing various qual

play06:29

properties of the

play06:31

system for example based on a software

play06:34

architecture Architects can discuss what

play06:37

will be its performance or performance

play06:40

bottlenecks other quality properties

play06:42

that can be analyzed based on an

play06:44

architecture include amongst many others

play06:47

security and

play06:50

maintainability at an early stage of

play06:52

development it is still easy and not yet

play06:55

costly to improve an architectural

play06:58

design

play06:59

and thereby the systems quality based on

play07:02

the insights of such architectural

play07:06

analyses finally the architecture should

play07:10

be designed such that foreseeable

play07:12

changes and new features can be

play07:14

integrated easily into the

play07:17

system in this way the architecture AIDS

play07:20

in reducing the maintenance costs of a

play07:24

system systems are becoming very

play07:27

complex often they are so complex that

play07:30

no single person can oversee all the

play07:33

relevant aspects of a

play07:35

system an architecture can help in

play07:38

maintaining an overview of complex

play07:41

systems also when an architecture

play07:44

diagram looks complicated it probably is

play07:47

complicated and it needs to be

play07:51

simplified as such an architecture helps

play07:54

in managing the complexity of a

play07:57

system in a similar ve

play08:00

having an architecture representation

play08:02

allows for systematic analysis of what

play08:04

if

play08:06

questions the explicit representation

play08:09

helps in identifying all the

play08:11

consequences that a change or an

play08:13

alternative design decision may

play08:17

have an architecture can be used to show

play08:21

whether the implementation of a new

play08:22

feature will be simple or

play08:25

complicated as such the architecture

play08:28

AIDS in a ing

play08:30

feasibility and in discovering risks or

play08:33

more generally in doing risk

play08:37

analysis a proper software architecture

play08:40

process involves negotiating and

play08:43

balancing of functional and quality

play08:44

requirements on one hand and possible

play08:47

solutions on the other

play08:49

hand this means requirements engineering

play08:52

and software architecture are not

play08:53

subsequent phases that are strictly

play08:57

separated but instead they are heavily

play09:01

intertwined an initial set of functional

play09:04

and quality requirements is the starting

play09:06

point for developing an initial

play09:09

architecture this initial architecture

play09:11

results in a number of issues that

play09:13

require further discussion with

play09:15

stakeholders for instance a solution may

play09:19

be too costly integration with already

play09:22

existing systems may be

play09:24

complex maintenance may be an issue

play09:27

because of a lack of Staff with certain

play09:30

expertise or performance requirements

play09:32

cannot be

play09:33

met these insights leads to further

play09:36

discussion with

play09:37

stakeholders a revised set of

play09:39

requirements and ultimately to a revised

play09:43

architecture this iterative process

play09:46

continues until an agreement is

play09:48

reached only then will a detailed design

play09:51

and implementation

play09:55

proceed this slide shows the global

play09:57

workflow that is common to architecture

play10:00

design

play10:01

Methods at the center a backlog is

play10:04

depicted the backlog contains a list of

play10:07

issues to be tackled these are open

play10:10

problems or ideas that still have to be

play10:13

investigated the name backlog deres from

play10:15

scrum and Agile development

play10:18

method there the backlog drives the

play10:21

project in architecture design the

play10:23

notion of backlog is usually not used

play10:27

explicitly yet it is always there

play10:30

if only in the head of the

play10:32

architect there are three inputs to the

play10:35

backlog

play10:37

context requirements and evaluation

play10:41

results the context refers to such

play10:45

things as upfront ideas the architect

play10:47

may have available assets that can be

play10:49

used constraint sets and the

play10:53

like obviously the requirements

play10:56

constitute another important input

play10:59

in each step of the architecting process

play11:02

one or a few items from the backlog are

play11:05

taken and used to refine the

play11:07

architecture developed so

play11:09

far the result of this refinement is

play11:12

evaluated usually rather

play11:15

informally and this evaluation May in

play11:17

turn change the contents of the backlog

play11:20

new items may be added for instance new

play11:22

problems that were discovered items may

play11:25

disappear or become Obsolete and the

play11:28

priorities of backlog items may

play11:33

change what is software

play11:36

architecture a common definition of

play11:38

software architecture is the

play11:40

following the software architecture of a

play11:42

Computing system is the structure of the

play11:45

system which comprises software

play11:47

components the externally visible

play11:49

properties of those components and the

play11:52

relationships among

play11:54

them the architecture is the primary

play11:56

carrier of system qualities such as

play11:59

performance modifiability and

play12:02

security none of these can be achieved

play12:05

without a unifying architectural

play12:08

Vision architecture is an artifact that

play12:12

allows early analysis to make sure that

play12:15

the design approach will yield an

play12:16

acceptable

play12:17

system by building effective

play12:20

architecture you can identify design

play12:22

risks and mitigate them early in the

play12:24

development

play12:27

process there are more than one

play12:30

definition about software architecture

play12:32

and they provide complimentary

play12:34

views here are two other

play12:37

views software software architecture is

play12:40

about the fundamental concepts and

play12:42

properties of a system in its

play12:44

environment embodied in its elements

play12:47

relationship and the principles of its

play12:49

design and evolution so this definition

play12:52

emphasizes the relation between

play12:54

architecture and its

play12:57

environments moreover as we said before

play13:00

software is always

play13:02

changing therefore the way that an

play13:04

architecture can evolve is an important

play13:07

part of the architectural design so it

play13:10

is not only AES static picture but uh

play13:15

architecture defines the principles

play13:17

about evolving an

play13:20

architecture a complimentary view on

play13:22

architecture is that architecture

play13:23

consists of the set of design decisions

play13:26

that determine the quality properties of

play13:27

a system

play13:29

this definition emphasizes that

play13:31

architecture is not only the outcome in

play13:33

terms of components and

play13:35

relations but also the reasoning or

play13:37

rationale that underlies this

play13:40

outcome the reasoning connects the

play13:42

architecture design to its

play13:44

contexts this insight has led to

play13:47

substantial Research into software

play13:49

architecture Knowledge

play13:51

Management overall it's good to realize

play13:54

that architecture design choices May

play13:56

address different levels of abstraction

play13:58

in the system

play14:02

system here are a few additional angles

play14:04

from software

play14:06

architecture architecture should focus

play14:08

on the important stuff whatever that is

play14:12

this refers to the fact that software

play14:14

Architects should concern themselves

play14:17

with those decisions that have high

play14:19

impact on the system and its

play14:23

stakeholders also architecture should

play14:26

focus on things that are hard to change

play14:30

since designing the architecture takes

play14:32

place at the beginning of A System's

play14:34

life cycle the architect should focus on

play14:36

decisions that have to be right in the

play14:39

early stages of a

play14:42

project in it practice different people

play14:46

use the term architecture in different

play14:49

ways this is because they have different

play14:51

perspectives on

play14:52

architecture often depending on the role

play14:55

that a person plays in an

play14:57

organization the next set of slides

play14:59

explains some of these different

play15:01

perspectives when you talk with someone

play15:03

about architecture it's good to ask

play15:05

which perspective they have so as to

play15:07

avoid

play15:09

misunderstandings the Enterprise level

play15:11

of Architecture is focused upon

play15:13

coordination and communication of

play15:15

business processes and it systems across

play15:19

an entire

play15:21

organization generally an Enterprise

play15:24

architecture distinguishes four

play15:27

layers the first layer is that of

play15:30

business

play15:30

processes that means the operational

play15:33

steps of a workflow in some business

play15:35

unit or possibly across different

play15:37

division

play15:39

boundaries the second layer is the

play15:41

functional layer this layer defines what

play15:44

type of functions should be available in

play15:46

the

play15:47

system nowadays this layer Maps closely

play15:51

on

play15:53

Services the previous two layers are

play15:55

abstract in the sense that they are

play15:57

intangible

play15:59

the next layer is the application

play16:01

layer this layer describes the software

play16:04

applications that Implement certain

play16:07

functionality these applications are

play16:09

supposed to supply the functions that

play16:11

are described in the functional

play16:14

layer this layer is not abstract in the

play16:17

sense that applications exist in the

play16:19

real

play16:20

world and finally there is the technical

play16:23

layer this layer contains

play16:26

infrastructural elements of the it

play16:27

landscape such as the actual computers

play16:30

on which the applications run as well as

play16:33

Hardware operating systems network

play16:35

software and

play16:38

middleware types of

play16:41

architecture rather than producing

play16:43

individual Unique Systems some

play16:45

Industries produce sets of systems that

play16:47

have many

play16:48

commonalities for example mobile

play16:51

telephones or software and

play16:53

cars such sets of systems that share

play16:56

many commonalities are called Product

play16:59

families a topic that software

play17:01

Architects must consider is the

play17:03

difference between the design of

play17:04

architecture for a single product and

play17:06

the design of an architecture for

play17:08

product

play17:09

family the challenge in product families

play17:12

arise from the large number of variant

play17:15

that must be supported and

play17:17

maintained often the different features

play17:19

have their own needs for evolution and

play17:23

extension each individual product within

play17:26

the product family is called a product

play17:27

variant

play17:30

while possessing specific features to

play17:31

meet particular set of customer

play17:33

requirements all product variants are

play17:36

similar in the sense that they share

play17:38

some common customer perceived value

play17:41

they have common structures and or

play17:43

common product technologies that form

play17:45

the platform of the

play17:46

family a product family targets a

play17:49

certain Market segment segment whereas a

play17:51

product variant is developed to address

play17:54

a specific set of customer needs of a

play17:57

market segment

play18:00

in summary the aim of having a product

play18:02

family architecture is to exploit the

play18:05

commonalities between different products

play18:07

and yet make the variability

play18:11

manageable one reason why architecture

play18:14

is important is because it is an enabler

play18:16

for alignment between three

play18:18

independently evolving forces that shape

play18:20

a system the business user requirements

play18:25

and the technological landscape an

play18:27

architecture should make it possible to

play18:29

analyze and plan how changes in one of

play18:31

these domains affect the other

play18:35

domains we're approaching the end of

play18:37

this lecture and now we want to

play18:39

emphasize the importance of

play18:41

architecture the architecting is

play18:43

typically done in the first 10% of the

play18:45

life cycle of a

play18:47

project and the decisions made in these

play18:49

initial 10% determine 90% of the cost

play18:53

and risk of the entire

play18:56

project so make making a proper

play18:59

architecture is very

play19:00

important a solid architecture can

play19:03

reduce the cost of development in the

play19:04

long run ensuring that the system won't

play19:07

crack at the seams when you add the next

play19:09

portion of

play19:11

requirements so in short architecture is

play19:14

about thinking thinking in advance

play19:16

thinking ahead and yes the development

play19:19

of good architecture takes a bit of time

play19:22

it can cost a bit but it pays off in the

play19:24

long

play19:25

run as long as you anticipate and map

play19:28

out the life cycle of your project it is

play19:31

possible to develop the right

play19:32

architecture without costing much time

play19:35

or impacting your

play19:38

schedule at the end of this lecture you

play19:41

should now know and be able to

play19:43

explain first what is a software

play19:46

architecture secondly why is software

play19:49

architecture

play19:52

important the lecture introduction to

play19:55

architecture is now finished thanks for

play19:57

watching

Rate This
★
★
★
★
★

5.0 / 5 (0 votes)

Étiquettes Connexes
Software ArchitectureMichelle ShodonDesign FundamentalsSystem QualityStakeholder FeedbackConceptual IntegrityTechnical LandscapeProduct FamilyArchitectural EvolutionRisk AnalysisDevelopment Cost
Besoin d'un résumé en anglais ?