• No results found

3- Software Design

N/A
N/A
Protected

Academic year: 2020

Share "3- Software Design"

Copied!
33
0
0

Loading.... (view fulltext now)

Full text

(1)

Advance Software Engineering

(2)

What is Design?

Design allows you to

model

the system or

product that is to be

built

.

Design helps to understand

Technical details

better.

Design is a

Process

of Converting:

What to do??

=======

How to do?

(3)

What is Design?

Design is what almost every engineer wants to

do, core of engineering process

It is the place where creativity rules—where

stakeholder

requirements,

business

needs,

and

technical

considerations all come

(4)

What is Design?

The design model provides detail about

software

architecture

,

data structures

,

interfaces

, and

components

that are

(5)

System

A system is a collection of components

organized to accomplish a specific function or

set of functions

(6)

Software Architecture

The software architecture of a program or

computing system is the

structure or

structures

of the system, which comprise

software elements, and the

relationships

(7)

Software Architecture

(8)

Why is it important?

You wouldn’t attempt to build a house

without a

map

, would you?

You’d need to look at the big picture—the house

itself—before you worry about details.

That’s what architectural design does—it

provides you with the

big picture

and

ensures

(9)

Why is it important?

Representations of software architecture are an

enabler for

communication

between all parties

(stakeholders)

The architecture highlights

early design

(10)

Software Architecture

Software architecture is:

An overall view of the

solution

to a problem

The high-level design of

modular

components and

how they

interact

A

foundation

that one can build on to solve a

(11)

The Repository pattern

Name Repository

Description All data in a system is managed in a central repository that is accessible to all system components. Components do not interact directly, only through the repository.

Example Figure 6.9 is an example of an IDE where the components use a repository of system design information. Each software tool generates information which is then available for use by other tools.

When used You should use this pattern when you have a system in which large volumes of information are generated that has to be stored for a long time. You may also use it in data-driven systems where the inclusion of data in the repository triggers an action.

Advantages Components can be independent—they do not need to know of the existence of other components. Changes made by one component can be propagated to all components. All data can be managed consistently (e.g., backups done at the same time) as it is all in one place.

(12)

A Brief Taxonomy of Architectural

Styles

(13)

The pipe and filter pattern

Name Pipe and filter

Description The processing of the data in a system is organized so that each processing component (filter) is discrete and carries out one type of data transformation. The data flows (as in a pipe) from one component to another for processing.

Example Figure 6.13 is an example of a pipe and filter system used for processing invoices.

When used Commonly used in data processing applications (both batch- and transaction-based) where inputs are processed in separate stages to generate related outputs.

Advantages Easy to understand and supports transformation reuse. Workflow style matches the structure of many business processes. Evolution by adding transformations is straightforward. Can be implemented as either a sequential or concurrent system.

(14)

A Brief Taxonomy of Architectural

Styles

(15)
(16)

The Layered architecture pattern

Name Layered architecture

Description Organizes the system into layers with related functionality associated with each layer. A layer provides services to the layer above it so the lowest-level layers represent core services that are likely to be used throughout the system. See Figure 6.6.

Example A layered model of a system for sharing copyright documents held in different libraries, as shown in Figure 6.7.

When used Used when building new facilities on top of existing systems; when the development is spread across several teams with each team responsibility for a layer of functionality; when there is a requirement for multi-level security.

Advantages Allows replacement of entire layers so long as the interface is maintained. Redundant facilities (e.g., authentication) can be provided in each layer to increase the dependability of the system.

(17)

A Brief Taxonomy of Architectural

Styles

(18)
(19)

A Brief Taxonomy of Architectural Styles

(20)

Software Architecture: Example

Security

Check

Student’s

Records

Student’s

Account

Student’s

Academic

Teacher’s

Record

Teacher’s

Account

(21)

Software Architecture: Example

Student Main

Page

Add new

Student

Record

Add Student

Personal

Information

Add Student

Academic

Information

Add Student

Accounts

Information

Search

Student

Record

Grant All

Available

Information

Admin

Department

Examination

Accounts

Students

(22)

Software Architecture

Defining architecture is part of the software

development process

Its primary goal is to define the

non-functional

/

functional

requirements of a system.

Architecture is also important because it:

Controls complexity

Gives Consistency and Uniformity

Reduces risk

(23)

Architecture and non functional requirements

Performance

If performance is a critical requirement, the architecture

should be designed to localize critical operations within a

small number of components

These components all deployed on the same computer rather

than distributed across the network.

This may mean using a few relatively large components rather

than small, fine-grain components, which reduces the number

of component communications.

You may also consider run-time system organizations that

(24)

Architecture and non functional requirements

Security

If security is a critical requirement, a layered structure for the

architecture should be used, with the most critical assets

protected in the innermost layers, with a high level of security

validation applied to these layers.

Safety

the architecture should be designed so that safety-related

operations are all located in either a single component or in a

small number of components.

This reduces the costs and problems of safety validation and

(25)

Architecture and non functional requirements

Availability

If availability is a critical requirement, the architecture

should be designed to include redundant components

so that it is possible to replace and update components

without stopping the system.

Maintainability

If maintainability is a critical requirement, the system

(26)

Software Architecture

Architecture focuses on how the

major

elements and

components

within an

(27)

Why is Architecture Important?

Systems should be designed with consideration

for the user, the system, and the business goal

Business

(28)

Why is Architecture Important?

Consider the following high level concerns when thinking

about software architecture:

How will the users be using the application?

What are the quality attribute requirements for the

application, such as security, performance, and configuration?

How can the application be designed to be flexible and

(29)

The Goals of Architecture

Application architecture seeks to build a

bridge between

business requirements

and

technical requirements

The goal of architecture is to identify the

requirements that

affec

t the structure of the

application

A good design is sufficiently flexible to be able

to handle the

natural change

that will occur

over time in hardware and software

(30)

The Goals of Architecture

Keep in mind that the architecture should:

Expose the structure of the system but

hide

the implementation

details

Realize all of the use cases and scenarios

Try to address the requirements of various

stakeholders

Handle both functional and quality

(31)

The Principles of Architecture Design

Current thinking on architecture assumes that

your design will

evolve over time

and that you

cannot know everything you need to know up

front in order to fully architect your system

Your design will generally need to evolve during

the implementation stages of the application

Create your architecture with this

evolution

in

mind so that it will be able to adapt to

(32)

The Principles of Architecture Design

Consider the following questions as you create an

architectural design:

What are the

foundational parts

of the architecture

that represent the

greatest risk

?

What are the parts of the architecture that are most

likely to

change

?

What are your key assumptions, and how will you

test

them?

What conditions may require you to

re-factor

the

(33)

The Principles of Architecture Design

Key Architecture Principles:

Build to change

Reduce risk

Use models and visualizations as a

communication

and collaboration tool

References

Related documents

In a recent study about graduates recruitment and selection (Branine, 2008), found surveyed recruiters majority hoped that graduates had already purchased high-quality

In this study, Ni and Zn have been identified as a major metals contamination in Langat River Estuary which mainly comes from anthropogenic activity in Port Klang and Langat

Gail Boling, The 1948 Palestinian Refugees and the Individual Right of Return: An International Law Analysis (Bethlehem, Palestine: Badil, 2001), 18–21; Victor Kattan,

Further, the figure-2 shown that, the mean score of post-summary was more than the pre-summary scores, it indicates that teachers with included experience

The aim of this study was to investigate predictors for achieving protein and energy requirements on the fourth day of admission in undernourished hospitalized patients.. Methods:

One possible approach, found in the Obama campaign plan, would be to establish a purchasing exchange at the federal level. Ensuring that health insurance is uniformly available

Under the Finnish Consumer Protection Act, consumers who are entitled to a refund or to some other payment from the seller can also turn to the credit-granting party that financed