TOPCIT Software | 06. Software Architecture

TOPCIT사업단
24 Aug 201727:56

Summary

TLDRThis script delves into the core components of software architecture, including meta-architecture, guidelines, and policies. It explains the significance of defining views, the role of software architecture in development, and the impact on project organization and system quality. The video also explores various architectural styles, such as dataflow, call-return, data-centered, and event system groups, emphasizing the importance of high-level design for creating modular, scalable, and maintainable software systems.

Takeaways

  • 📚 The script discusses the components of software architecture, focusing on meta architecture, software architecture, and guidelines and policies.
  • 🔍 Meta architecture provides general guidelines and design patterns for software architecture, including templates for architectural documents.
  • 🌐 Software architecture is described through four views: module, component and connector, allocation, and code view, which aid in deriving context diagrams and specifications.
  • 👥 Defining views should consider selection criteria and notes, as different people may have varying methods for description, such as diagrams, shapes, boxes, and lines.
  • 🛠 The number of views chosen depends on factors like developer competence, domain understanding, previous project experience, and major issues to be addressed.
  • 🔑 Architectural design impacts the overall system structure, project organization, and quality attributes such as functionality, availability, changeability, security, and performance.
  • 📈 UML 2.0 has adopted architecture definitions from Carnegie Mellon University to simplify the representation of architectural views.
  • 🛑 Guidelines and policies are crucial for determining software architecture and conducting projects based on the defined architecture, covering aspects from design to system operation.
  • 🔄 The role of software architecture in development includes communication between stakeholders, early decision-making, overall system structure determination, and development project organization.
  • 🔍 Types of software architecture are categorized into dataflow, call return, data centered, and event system groups, each with its own advantages and disadvantages.
  • 🏗️ High-level design aims to develop a modular software architecture, involving decomposing the system into clear modules and describing their integration and interaction.
  • 🔧 Object-oriented methodology involves refining object and behavior analysis models into a design model, considering logical software architecture and client-server architecture.

Q & A

  • What are the three main components of a software architecture in high-level design?

    -The three main components are meta architecture, software architecture, and guidelines and policies.

  • What is the role of meta architecture in software design?

    -Meta architecture serves as a general guideline for designing and architecture, providing a set of general decision trees and design patterns for defining the architecture of the software.

  • What are the four views that constitute the software architecture?

    -The four views are the module view, component and connector view, allocation view, and code view.

  • Why is it important to derive context diagrams, components specification, and interface specification from architectural design?

    -These derivations are important as they provide a clear understanding of the system's structure and behavior, which is essential for effective communication and further development.

  • How many views are typically defined in a software architecture, and what factors determine the appropriate number?

    -Typically, three views are defined: module view, component and connector view, and allocation view, with the code view sometimes added. The appropriate number of views depends on factors such as the competence of developers, understanding of the domain, experience from previous projects, and the major issues to be addressed.

  • What are the roles of software architecture in system development?

    -The roles include facilitating communication between stakeholders, aiding in early decision-making, determining the overall system structure, influencing the organization of the development project, and predicting the system's quality attributes.

  • How does the software architecture impact the development process?

    -The software architecture impacts the development process by guiding the design using patterns and guidelines, providing coding standards, and offering deployment guidelines, which contribute to building a structured and stable software architecture.

  • What are the types of software architecture grouped into, and what are some examples of each?

    -The types are grouped into dataflow, call return, data centered, and event system groups. Examples include batch sequential processing and filter types for dataflow, layers, main programs and subroutines, and object-oriented types for call return, centralized data repository and data-consuming client for data centered, and implicit call and explicit call types for event systems.

  • What is the purpose of structured high-level design in software development?

    -The purpose of structured high-level design is to develop a modular software architecture based on specifications, which involves decomposing the system into clear modules and describing how these modules integrate and interact.

  • How does the task structure design phase contribute to the development of a software system?

    -The task structure design phase contributes by identifying tasks that can be performed simultaneously, describing the dynamic aspects of the system, and integrating tasks within time constraints, which helps in organizing the system's processes effectively.

  • What are the key activities involved in determining the logical software architecture?

    -Key activities include vertical layering, horizontal decomposition, subsystem decomposition, technology environment definition, and subsystem interface design.

Outlines

00:00

🛠️ Software Architecture Components

This paragraph introduces the core components of software architecture, emphasizing the importance of meta-architecture, which provides general guidelines and patterns for designing software. It discusses the role of the architect and the necessity of templates for architectural documentation. The paragraph also delves into the four views of software architecture: module view, component and connector view, allocation view, and code view. It highlights the need for deriving context diagrams, component specifications, and interface specifications from architectural design. The discussion points out the variability in defining views and the importance of considering factors such as developer competence, domain understanding, and project experience when determining the number of views. The paragraph concludes by discussing the significance of quality attributes like system functionality, availability, changeability, security, and performance in the architectural design process.

05:03

🔄 Evolution of UML and Software Architecture Guidelines

The second paragraph addresses the evolution of UML from version 1.x to 2.0, noting the shift towards a less technology-dependent design, influenced by Carnegie Mellon University's SEI. It discusses how guidelines and policies are crucial for defining software architecture and conducting projects based on that architecture. The paragraph outlines the architect's role in describing development policies, including design, coding, deployment, integration, testing, maintenance, and system operation. It also explains the impact of software architecture on project organization, schedules, and configuration management. The utility programs, prototypes, and frameworks that influence software architecture design are also mentioned. The paragraph concludes by detailing the various roles of software architecture in system development, including communication, decision-making, overall structure determination, development project organization, and quality factor prediction.

10:05

🌐 Types of Software Architecture

This paragraph categorizes software architecture into four groups: dataflow, call return, data centered, and event system. It describes the characteristics and examples of each group, such as batch sequential processing and filter types for dataflow, and layers, main programs, and object-oriented types for call return. The paragraph discusses the pros and cons of pipe and filter types, layer types, main program and subroutine, and object-oriented types. It also touches on data centered groups, which handle centralized data repositories and data-consuming clients, and event system groups, which focus on changeability by reducing process dependencies. The paragraph provides a comprehensive overview of the different types of software architecture and their applications in achieving reuse, changeability, scalability, and concurrency.

15:07

🔩 Task Structure Design in Software Architecture

The fourth paragraph focuses on the task structure design within the software architecture, particularly in the context of an automobile cruise control system. It outlines the process of task identification, which includes identifying task candidates, allocating remaining processes, and integrating tasks. The paragraph explains the steps involved in each of these procedures, such as identifying asynchronous, periodic, and control patterns as task candidates. It also discusses the allocation of processes to task candidates based on criteria like sequential and control cohesion. The integration of tasks is also covered, with examples of how tasks are selected for integration based on functional cohesion. The paragraph concludes with a description of how the completed task structure is represented, including the flow of information between tasks and the composition of processes within each task.

20:09

🏗️ Logical Software Architecture and Client-Server Design

This paragraph delves into the logical software architecture determination activities, emphasizing the importance of minimizing change scope at the logical architecture level for better scalability and maintenance. It discusses vertical layering and horizontal decomposition as methods to reduce inter-layer coupling and increase functional cohesion. The paragraph also covers subsystem decomposition, explaining how client and server architectures can be realized on the same or different hardware platforms. It touches on technology environment definition, highlighting the need for developers to choose the most appropriate implementation technologies. The discussion includes the design of subsystem interfaces, especially in the context of a client-server architecture, and the importance of user interface design in system development. The paragraph concludes with a summary of eight ways to design a great user interface, emphasizing the need for a user-centric design perspective.

25:22

🎨 User Interface Design Principles

The final paragraph emphasizes the critical role of user interface (UI) design in system development. It points out that a significant portion of maintenance costs is related to the UI and highlights the potential losses due to poor usability, as estimated by various research studies. The paragraph outlines eight strategies for designing an effective user interface, advocating for a user-centric approach from the outset of system development. It underscores the importance of usability in generating business profits and improving user satisfaction, suggesting that a well-designed UI can significantly impact the success of a system.

Mindmap

Keywords

💡Software Architecture

Software Architecture refers to the high-level design of a software system, outlining the structural elements, their relationships, constraints, and interactions with a surrounding environment. It is a set of general guidelines and patterns that define how a software system is structured and behaves. In the video, it is central to the discussion, with various components and views being explored to understand the overall design and organization of software systems.

💡Meta Architecture

Meta Architecture is a set of general decision trees and design patterns that provide a framework for designing and creating the architecture of a software system. It includes templates for architecture documents and defines the role of the architect. The script mentions Meta Architecture as a foundational guideline that helps in setting the style and approach to software architecture design.

💡Views

In the context of software architecture, 'views' represent different perspectives or aspects of the system design. The script discusses four main views: module view, component and connector view, allocation view, and code view. These views are essential for understanding and communicating the different facets of the software's design and functionality.

💡Component

A 'component' in software architecture is a modular part of the system that encapsulates specific functionality and can be independently developed, tested, and maintained. The script refers to components in the context of the component and connector view, where they are connected by various means to form a cohesive system.

💡Connector

A 'connector' in software architecture is a mechanism that allows components to interact with each other. It defines the communication pathways and data exchange methods between components. The script mentions connectors in the context of the component and connector view, emphasizing their role in the system's architecture.

💡Guidelines and Policies

Guidelines and policies in software architecture are a set of rules and standards that guide the development process. They determine the architecture and influence project execution, including design, coding, testing, and maintenance. The script discusses the importance of guidelines and policies in shaping the development process and ensuring consistency and quality in software systems.

💡Development Process

The 'development process' encompasses the series of stages and activities involved in creating a software product, from initial design to final deployment. The script explains how software architecture plays a role in this process, influencing communication between stakeholders, decision-making, and the overall structure and organization of the project.

💡Dataflow

Dataflow architecture is a type of software architecture where the flow of data determines the process flow within the system. The script discusses dataflow as part of the types of software architecture, highlighting its ability to achieve reuse and changeability, particularly in batch sequential processing and filter types.

💡Call Return

Call return architecture is another type of software architecture that involves components calling and returning from functions or procedures. The script mentions this type as capable of achieving changeability and scalability, with examples including layered architectures, main programs and subroutines, and object-oriented types.

💡Event System

An 'event system' architecture is designed to handle events, where components or processes react to changes or signals within the system. The script describes this group as aiming to achieve changeability by eliminating dependencies between system parts, including implicit call and explicit call types.

💡High-Level Design

High-Level Design is the phase in software development where the overall structure and design of the system are determined at a high abstraction level before moving into detailed design and implementation. The script discusses the purpose and actions involved in high-level design, such as decomposing the system into modules and describing their integration and interaction.

Highlights

The importance of meta architecture in providing general guidelines and decision trees for software design.

The role of the architect in utilizing templates for architectural documents within meta architecture.

Four key views in software architecture: module view, component and connector view, allocation view, and code view.

The necessity to derive context diagrams, component specifications, and interface specifications from architectural design.

Guidelines for selecting and defining views in software architecture based on various criteria and notes.

The impact of developers' competence, domain understanding, and previous project experience on the selection of architectural views.

The significance of quality attributes such as system functionality, availability, changeability, security, and performance in architecture design.

The challenges of representing views in UML 1.x due to technology-dependent design patterns.

UML 2.0's adoption of architecture definitions from Carnegie Mellon University to ease the description of software architecture.

The role of guidelines and policies in determining software architecture and conducting projects.

The multifaceted roles of software architecture in system development, including communication, decision-making, and system structure determination.

The influence of software architecture on the organization of development projects and quality factor determination.

How software architecture informs the curriculum and training content for system developers.

The process of managing changes to software through architectural descriptions and workflows.

Classification of software architecture types into dataflow, call return, data centered, and event system groups.

Advantages and disadvantages of pipe and filter types in dataflow architecture for system design.

Characteristics and benefits of layer types, main program and subroutine, and object-oriented types in call return group architectures.

The functionality of data centered group types like repository and blackboard in managing centralized data interactions.

The purpose of event system group types in achieving changeability by decoupling process dependencies.

The structured approach to high-level design involving modular software architecture development based on structural analysis and software architecture.

The two main actions in high-level design: decomposing the system into clear functionality modules and describing their integration and interaction.

The development of module interfaces in high-level design to define externally usable components for embedded systems.

The methodology of task structure design, including task identification, remaining process allocation, and task integration.

The importance of subsystem interface design in client-server architectures for effective communication between subsystems.

The significance of user interface design in system development, emphasizing the need for usability and user-centered design.

Eight ways to design a great user interface, highlighting the importance of a user perspective in interface design.

Transcripts

play00:02

[Music]

play00:18

[Music]

play00:26

[Music]

play00:42

[Music]

play00:57

[Music]

play01:07

[Music]

play01:23

[Music]

play01:35

[Music]

play01:59

[Music]

play02:07

[Music]

play02:17

[Music]

play02:40

[Music]

play02:48

the components of a software

play02:51

architecture that is at the heart of the

play02:53

software high-level design are meta

play02:57

architecture software architecture

play02:59

guidelines and policies let's take a

play03:02

closer look at these three components

play03:05

first meta architecture is a general

play03:08

guideline for designing and architecture

play03:10

it is a set of general decision trees

play03:13

and design patterns for defining the

play03:15

architecture of the software the style

play03:17

the role of the architect and consisting

play03:20

of templates for the architecture

play03:22

documents next the software architecture

play03:26

consists of four views module view

play03:29

component and connector view allocation

play03:32

view and code view also as a result of

play03:36

the architectural design the context

play03:38

diagram components specification and

play03:40

interface specification must be derived

play03:46

let's take a look at what you should

play03:48

know when defining views there are many

play03:52

different ways to define views for each

play03:54

person description method diagram shape

play03:57

box line etc are all different therefore

play04:01

we only need to consider the selection

play04:03

criteria and notes when describing the

play04:06

view also there are usually three views

play04:09

such as module view component and

play04:12

connect review or allocation view

play04:14

in addition code view can also be added

play04:18

here when you define each of you you

play04:22

must describe at least of you and how

play04:24

many views are appropriate depends on

play04:26

factors such as the competence of the

play04:28

developers the understanding of the

play04:30

domain the experience of the previous

play04:32

project and the major issues it should

play04:36

be the basis for judging quality

play04:37

attributes such as systems big function

play04:40

availability change ability security and

play04:43

performance and the functionality of the

play04:45

key module should be described how they

play04:47

are related to the inside-outside also

play04:50

you need to be able to figure out the

play04:52

size and scope of your system finally

play04:55

you should be able to describe the

play04:56

rationale for building the architecture

play04:58

description in previous versions of UML

play05:03

1 dot X these views were difficult to

play05:06

represent this is due to the design of

play05:08

excessively technology dependent

play05:11

patterns or components mainly created at

play05:13

the deployment level when building UML

play05:18

2.0 oMG has much adopted the

play05:21

architecture definition from the

play05:23

Carnegie Mellon University sei so as to

play05:26

make it easier to describe these areas

play05:30

next guidelines and policies are that

play05:33

they are for determining the software

play05:34

architecture and then conduct the

play05:36

project based on the defined

play05:38

architecture architect should describe

play05:40

and make a decision on a comprehensive

play05:42

set of development policies with

play05:44

guidelines and policies for design

play05:46

coding deployment integration testing

play05:50

tools maintenance system expansion and

play05:53

system operation these software

play05:56

architectures relate to the various

play05:58

components of system development project

play06:01

organization project schedules and

play06:03

configuration management plans are based

play06:06

on software architecture the utility

play06:09

programs prototypes and frameworks

play06:11

affect software architecture design now

play06:17

I will explain the role the software

play06:20

architecture and its relationship to the

play06:21

development process the software

play06:24

architecture has the following roles and

play06:26

system development first it becomes a

play06:31

means of communication between relevant

play06:33

stakeholders second it is a tool to make

play06:36

decisions early in the development

play06:37

project in particular as it determines

play06:41

the quality factor it has an overall

play06:43

impact on the project organization third

play06:46

it determines the overall structure of

play06:48

the system fourth it affects to

play06:51

determine the organization of the

play06:53

development project fifth it determines

play06:56

the quality factor that the system

play06:57

should have this allows the architecture

play07:00

to predict what quality the system will

play07:02

need and what quality will have through

play07:04

the architecture sixth you can decide

play07:07

what curriculum and training content

play07:09

delivered to system developers through

play07:11

the architecture finally it informs the

play07:13

process or workflow how to manage

play07:15

changes to the software let me explain

play07:19

how software a architect plays a role in

play07:21

the overall development process

play07:24

functional and non-functional

play07:26

requirements act as inputs to design the

play07:29

software architecture once the software

play07:31

architecture is determined you can

play07:33

design your software using design

play07:35

patterns and design guidelines once the

play07:38

software architecture is determined

play07:39

coding standards and guidelines can be

play07:42

provided when writing

play07:43

and the software architecture provides

play07:46

guidelines for deploying software on the

play07:48

system with such repetition this allows

play07:51

you to build a structured stable

play07:53

software architecture now let's look at

play07:58

the types of software architecture we

play08:01

will group each type into dataflow group

play08:03

call return group data centered group an

play08:06

event system group first is the data

play08:10

flow group types included in this group

play08:13

are types that can achieve reuse and

play08:15

change ability this includes the batch

play08:17

sequential processing type and filter

play08:20

types for the batch sequential

play08:22

processing types the components are

play08:25

independent programs each step must end

play08:27

before starting the next step and data

play08:30

in each batch step has the entirely

play08:32

moving characteristic between steps

play08:34

let's look at the pros and cons of pipe

play08:37

and filter types first the pros are easy

play08:40

to understand the data flow control

play08:42

process having specialized analysis

play08:45

functions enable filter reuse achieve

play08:48

concurrency and easy to maintain and

play08:50

expand in contrast there are cons and

play08:53

that it is not suitable for highly

play08:55

interactive systems difficult to

play08:57

maintain consistency between many

play08:59

relevant data increases complexity and

play09:02

can cause the performance issues next is

play09:06

the call return group types included in

play09:09

this group can achieve change ability

play09:10

and scalability this includes layers

play09:13

main programs and subroutines and

play09:16

object-oriented types first the pros and

play09:19

cons of layer types pros include

play09:22

providing a design based on abstraction

play09:24

levels improving scalability providing

play09:26

high reusability and portability the

play09:29

cons are that it is difficult to apply

play09:31

to all systems and in some cases it can

play09:34

be very difficult to find the right

play09:35

level of abstraction

play09:38

the following are the main program and

play09:40

subroutine it has excellent reusability

play09:42

and ease of system evolution however

play09:45

components have the cons that they have

play09:47

to give up control over the calculations

play09:50

that the system processes and require

play09:52

careful handling of the data

play09:55

next is the pros and cons of

play09:57

object-oriented types implementation is

play10:00

easy to change and there is an pros that

play10:03

design of problem area analysis is

play10:05

intuitive but you have to know the

play10:07

identifier zuv other objects and you

play10:09

have to modify other objects when you

play10:11

change the object identifier next is

play10:15

data centered group the types contained

play10:18

in this group are used when data is

play10:19

concentrated in the system and multiple

play10:22

clients interact with the system to

play10:24

obtain the data the components are

play10:26

centralized data repository and data

play10:29

consuming client here are the storage

play10:31

types and blackboard types the

play10:33

repository is a passive data center a

play10:36

type that check to see if a client needs

play10:38

to fetch data a blackboard is an active

play10:41

data center a type that notified changes

play10:44

to relevant clients when data changes

play10:47

next is the event system group the types

play10:50

contained in this group are aimed at

play10:52

achieving change ability by eliminating

play10:54

the dependencies of various parts of the

play10:56

process through independent processes or

play10:59

objects this includes implicit call

play11:01

types and explicit call types for the

play11:04

implicit call type a component is a

play11:06

module with an interface that provides a

play11:08

collection of procedures and a set of

play11:10

events also it connects to event

play11:13

registration and procedure call as a

play11:16

constraint the event provider does not

play11:18

know which components are affected by

play11:20

the event in case of the explicit call

play11:23

type every time a system function is

play11:26

changed the other module that imports

play11:28

the module must also be changed in

play11:31

addition reflection provides a mechanism

play11:33

to change the system configuration or

play11:36

behavior at any time of execution MVC

play11:39

and PA see which allows the system to

play11:42

respond flexibly to changes by sharing

play11:44

responsibilities brokers provides

play11:47

distributed transparency in a

play11:49

distributed environment microkernel

play11:51

types

play11:52

divide the system into core parts and

play11:53

change parts to accommodate frequently

play11:56

changing requirements the purpose of

play12:10

structured high-level design is to

play12:12

develop a modular software architecture

play12:14

based on specifications developed

play12:16

through structural analysis and software

play12:19

architecture two big actions must be

play12:22

described first decompose the system

play12:25

into modules that provide clear

play12:26

functionality second describe how the

play12:29

decomposed modules integrate and inter

play12:31

work together in particular various

play12:34

items must be organized to describe how

play12:36

to integrate and inter work first it

play12:40

develops a module interface that defines

play12:42

the modules components that can be used

play12:44

externally for a typical embedded system

play12:47

using the C language functions that can

play12:49

be called from other modules global

play12:51

variables that can be assessed data

play12:54

structures and macros make up the

play12:55

modules interface it also determines the

play12:59

usage criteria for various resources

play13:01

such as error handling criteria threads

play13:04

timers interrupts and alarms shared

play13:07

within the overall modular structure and

play13:09

technology standards such as the data

play13:12

types that are shared on the development

play13:14

platform are determined although various

play13:17

techniques can be used to describe such

play13:19

a module structure the structural

play13:21

high-level design methodology is divided

play13:24

into a task structure design which shows

play13:27

dynamic aspects and a module structure

play13:29

design which describes static aspects

play13:31

task structure design step identify the

play13:35

tasks that can be performed

play13:36

simultaneously on the system based on

play13:38

the output of analysis and describe the

play13:41

dynamic aspects of the system module

play13:44

structure design phase identifies

play13:46

modules that are development units based

play13:48

on output of analysis and task structure

play13:51

and specify technical standards and

play13:53

module interfaces

play13:58

we will continue to explain the process

play14:00

of high-level design based on the

play14:02

structural analysis results of the

play14:04

automobile cruise control system

play14:06

presented on the screen

play14:08

the task structure design shows all the

play14:11

processes identified in automobile

play14:13

cruise control as you can see in the

play14:15

figure the figure is an example for

play14:18

describing the task identification

play14:20

process not the regular output created

play14:22

in the development methodology process

play14:25

this figure shows all the processes

play14:27

identified so far showing that the

play14:29

patterns are asynchronous periodic and

play14:32

control let's look at the procedures for

play14:38

a task structure design in a structural

play14:42

design methodology the task structure is

play14:44

designed according to the three steps

play14:46

task identification procedure proposed

play14:49

by Hassan Gama the task identification

play14:54

procedure consists of three steps task

play14:58

candidate identification is the

play15:01

identification of processes that require

play15:03

their own execution remaining process

play15:07

allocation refers to allocating

play15:08

processes that have not been assigned

play15:10

their own tasks to task candidates and

play15:14

tasks integration means integrating

play15:16

tasks candidates within a time

play15:18

constraint let's take a closer look at

play15:20

each of these three steps of task

play15:22

identification procedures first let's

play15:26

look at identifying candidate tasks

play15:28

according to the technique described

play15:30

processes according to the asynchronous

play15:33

periodic and control patterns become

play15:35

task candidates the table lists the

play15:38

identified task candidates on the left

play15:41

are tasks candidates processes in the

play15:43

middle and criteria for selecting them

play15:46

on the right next is the allocation of

play15:49

the remaining process the figure shows

play15:51

that the process identified as remaining

play15:53

processes in the automobile cruise

play15:55

control example are distributed the

play15:58

figure shows have the four tasks that

play16:00

were not identified in the previous step

play16:02

are assigned to some task candidates the

play16:06

table lists the processes that have been

play16:08

allocated and their criteria

play16:10

tasks candidates include task 3 and task

play16:13

4 and the processes allocated to them

play16:15

have processes determine the speed and

play16:18

there are processes related to the

play16:20

preemption of the expected speed in

play16:22

addition each process is mapped to task

play16:25

candidate according to the degree of

play16:28

sequential cohesion and control cohesion

play16:34

next is the merging tasks automobile

play16:38

cruise control example shows the cases

play16:40

where task integration is possible as

play16:42

per the table the table shows which

play16:45

tasks have been integrated how they were

play16:47

selected and the criteria definition for

play16:50

example you can see that task 1 and task

play16:52

to integrate due to functional cohesion

play16:55

that is mutually exclusive execution

play16:58

characteristics we will complete the

play17:01

task structure of the automobile cruise

play17:03

control system through task candidate

play17:06

identification remaining process

play17:08

allocation and task integration the

play17:13

completed task structure is the same as

play17:15

the screen in figure the diamond

play17:18

indicates the identified task and the

play17:21

line between the tasks indicates the

play17:23

flow of information required between the

play17:25

tasks each of these tasks consists of

play17:28

processes presented in the screen in the

play17:31

table you can see how each task is

play17:34

mapped to each process and how they are

play17:36

composed or connected each other now

play17:42

let's look at high-level design method

play17:44

by object oriented methodology in

play17:47

general the object oriented development

play17:49

methodology does not have a clear

play17:51

boundary between object and behavior

play17:53

analysis an object and behavior design

play17:57

therefore the object and behavior

play17:59

analysis models are refined to a more

play18:01

sophisticated design model that matched

play18:04

to the selected software description and

play18:06

detailed implementation description is

play18:09

established in this case the object and

play18:12

behavior analysis model evolves into a

play18:14

design model during the high-level

play18:17

design phase developers perform

play18:19

activities to describe the system in

play18:21

terms of logical software architecture

play18:23

and

play18:24

the implementation strategies to

play18:26

implement the system in terms of

play18:27

client-server architecture first let's

play18:34

look at logical software architecture

play18:36

determination activities this activity

play18:39

refers to the activities of layering and

play18:41

decomposing the system to have a low

play18:43

degree of coupling the main goal of this

play18:46

software architecture determination is

play18:48

to minimize the scope of change at the

play18:50

logical architecture level not at the

play18:53

unit class level as minimizing the scope

play18:56

of change is closely related to software

play18:58

scalability and maintenance the coupling

play19:00

issue must be solved well in terms of

play19:02

logical architecture in principle the

play19:05

lower the degree of coupling the easier

play19:07

the software is to expand and maintain

play19:10

and in a software architecture with a

play19:12

high degree of coupling a change in a

play19:14

particular part will impact changes in

play19:16

other parts that depend on it

play19:18

determining the logical software

play19:20

architecture to decompose these systems

play19:22

is executed regardless of the

play19:25

implementation strategy the following

play19:28

table summarizes the activities briefly

play19:30

for determining logical software

play19:32

architecture I will continue to explain

play19:38

vertical layering and horizontal

play19:40

decomposition vertical layering is the

play19:43

packaging of boundary classes control

play19:46

classes and object classes shown in

play19:48

class diagrams and placing them in a

play19:51

vertical hierarchy I will explain them

play19:54

through the picture the picture shows a

play19:57

layered architecture that is packaged

play19:59

vertically into three groups for the

play20:01

depositor service system boundary

play20:04

classes are packaged as GUI groups from

play20:06

class diagrams created in behavior and

play20:09

analysis activities control classes are

play20:11

also packaged into workflow groups you

play20:14

can see object classes are packaged as

play20:16

domain groups in this example the

play20:19

dependency represented by the dotted

play20:21

arrow indicates that the higher layer

play20:22

uses the lower layer service next

play20:26

horizontal decomposition can be

play20:28

performed to reduce inter layer coupling

play20:30

when certain layers are complex in

play20:32

addition the classes in the same layer

play20:35

can be performed by the developers into

play20:37

with criteria or a systematic analysis

play20:40

method

play20:41

let me explain with the example the

play20:44

figure is a architecture in which the

play20:46

domain group hierarchy previously

play20:48

discussed is decomposed horizontally

play20:51

again classes with similar

play20:54

functionalities are grouped together in

play20:56

other words horizontal decomposition was

play20:59

performed to increase the functional

play21:00

cohesion and have the grounds that

play21:02

customer management and account

play21:04

management aspects can be functionally

play21:06

separated this time I will explain

play21:12

subsystem decomposition like layering

play21:15

and decomposition client and server

play21:18

architectures are also logical concepts

play21:20

in other words from a software

play21:23

development perspective a client-server

play21:25

architecture can be realized on the same

play21:27

hardware platform or on different

play21:29

hardware platforms the example on the

play21:32

screen shows the software development

play21:34

architecture for fat clients and thin

play21:36

clients assuming the package of vertical

play21:39

layering architecture as discussed above

play21:41

are deployed on different hardware

play21:43

platforms looking at the first fat

play21:45

client each client consists of GUI group

play21:49

workflow group and domain group while

play21:52

thin clients consists of server workflow

play21:54

group domain group client and GUI group

play21:58

the figure on the screen is a subsystem

play22:01

architecture diagram decomposed into

play22:03

subsystems according to the previous

play22:05

activities the left side is the

play22:07

subsystem architecture of fat client and

play22:10

the right side is the subsystem

play22:12

architecture of thin client next the

play22:18

technology environment definition will

play22:20

determine the technology environments

play22:21

for the client and server subsystems and

play22:23

may include technology selection for any

play22:26

middleware that connects the client and

play22:28

server

play22:29

in other words when decomposing a

play22:32

subsystem into a client-server

play22:34

architecture developers must choose the

play22:36

most appropriate implementation

play22:38

technologies to do this they will

play22:41

determine the technologies for object

play22:43

oriented programming language operating

play22:45

system middleware user interface

play22:47

development tools and database

play22:49

management system currently technology

play22:53

environments that support an

play22:54

object-oriented paradigm are very broad

play22:57

and constantly evolving into or friends

play23:00

of rising new technologies as

play23:02

technologies to implement

play23:04

object-oriented methodologies are too

play23:06

broad the high-level design a specific

play23:09

development language specific middleware

play23:11

specific user interface implementation

play23:14

techniques or a specific database

play23:16

management system is not willing to be

play23:18

confined with specific one just like all

play23:21

object-oriented methodologies therefore

play23:24

after selecting the technology

play23:25

environment the design phase should be

play23:28

dependent on the developers expert

play23:29

knowledge and specific technologies the

play23:33

figure on the screen is a client-server

play23:35

architecture from a software deployment

play23:37

perspective a client or server has a

play23:40

separate hardware platform and chose

play23:42

typical technologies required to

play23:44

implement software with a client-server

play23:46

architecture this picture shows a

play23:49

web-based software architecture deployed

play23:51

on three-tier hardware platforms it

play23:53

demonstrate the core skills required to

play23:56

build a web-based system a web based

play23:58

system is an extension of a

play24:00

client-server architecture with a

play24:01

website where the business logic can

play24:03

place on the server side or client side

play24:09

next let's look at subsystem interface

play24:12

design once the subsystem decomposition

play24:15

and the technical environment are

play24:17

established the interface to the derived

play24:20

subsystems starts to be design first

play24:23

this example assumes the following

play24:25

scenarios assume that you have assigned

play24:27

the workflow group package and the

play24:29

domain group package to the application

play24:31

server as shown in the thin client

play24:33

architecture and the diagram of first

play24:36

technology environment it is also

play24:38

assumed that the interface technology

play24:40

between thin client and application

play24:42

server

play24:43

is remote method invocation RMI provided

play24:46

by java then this will require a

play24:49

subsystem interface design to use remote

play24:52

method calls between classes belonging

play24:55

to GUI group and classes belonging to

play24:57

workflow group the figure on the screen

play25:00

defines the interfaces that classes

play25:02

belonging to workflow group provide to

play25:05

the classes belonging to the client

play25:06

subsystem the user interface is defined

play25:21

as the interface between the person and

play25:23

the system or the information channel

play25:25

between the user and each system

play25:27

therefore to make the system more easier

play25:30

to use user interface design means to

play25:33

identify the problem of information

play25:34

exchange between user and system then

play25:37

systematically designed to resolve

play25:39

implement and test them especially in

play25:42

modern times in an environment in which

play25:44

a computer directly or indirectly

play25:46

occupies a large part of our lives the

play25:49

interface between the computer and human

play25:51

being is becoming an important issue

play25:53

than anything else during development of

play25:56

the system there is a statistics that

play25:58

80% of the overall maintenance costs are

play26:00

related to the UI in addition jakob

play26:04

nielsen author of usability engineering

play26:06

predicts that if a better navigation

play26:09

system is not built and a rigid internal

play26:11

design standard is not enforced the cost

play26:14

of bad usability of internet usage will

play26:16

be exponentially increased in worldwide

play26:19

zona research estimates that ecommerce

play26:22

companies are losing more than 58

play26:24

million dollars a month from frustrated

play26:26

customers due to web pages

play26:28

therefore the UI process must be applied

play26:31

from the beginning of system development

play26:33

and the ideas that shortening the

play26:35

development cycle meeting the user

play26:37

requirements increasing the usability

play26:39

and helps to generate a bigger business

play26:42

profits are spreading the following is a

play26:45

summary of eight ways to design a great

play26:47

user interface it is necessary for the

play26:49

design of the user perspective so please

play26:52

refer to them

play27:16

[Music]

play27:47

[Music]

play27:53

you

play27:55

[Music]

Rate This

5.0 / 5 (0 votes)

相关标签
Software ArchitectureDesign PatternsHigh-Level DesignUML 2.0Modular DesignSystem DevelopmentTask StructureObject-OrientedClient-ServerUser InterfaceDevelopment Methodology
您是否需要英文摘要?