unit 3 Design 1

TharuniDiddekunta 2,904 views 53 slides Mar 22, 2019
Slide 1
Slide 1 of 53
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53

About This Presentation

Design process and Design quality


Slide Content

Design process and Design quality Software design is an iterative process through which requirements are translated into “Blue prints” for constructing the software The design is represented at high level of abstraction. Design can be directly traced to specific system objective and more detailed data,behavioural requirements

There are three characters which server as a guide for evaluation of good design. The design should implement all explicit and implicit requirements given by customer. The design must readable, understandable for those who generate a code, who tests the software. The should provide a complete picture of software.

Quality guidelines: in order to evaluate the quality of design,there are guidelines. A design should exhibit an architecture (is been created using recognizable architectural styles or patterns, components that exhibit good design ,can be implemented in a evolutionary fashion). A design should be modular. A design should contain distinct representation of data,architecture,interfaces,components. A design should reduce the complexity of connections between components and with external environment.

A design should be represented using a notations that effectively communicates its meaning. HP developed a set of software quality attributes that has been given the acronym FURPS Functionality is assessed by evaluating the feature set and capabilities of the program

Usability is assessed by considering human factors. Reliability is evaluated by measuring the frequency and severity of failure. Performance is measured by processing speed, response time, resource consumption, throughput and efficiency Supportability combines the ability to extend the program .(Extensibility,adaptability,serviceablity )

Design concepts A set of fundamental software design concepts has evolved over the history of software engineering. Abstraction Information hiding Functional independence Refactoring Modularity Refinement Design classes

Abstraction The term abstract defines that, which show an important information or data, going to do. At the highest level of abstraction a data is stated in board terms. At lower level of abstraction a more detailed description of data is provided. They are two types procedural abstraction and data abstraction

procedural abstraction It refers to a sequence of instructions that have a specific and limited functions. Example: word open a door.( it having long procedural steps) Data abstraction Is a collection of data that describes a data object Example: door Data abstraction for door having set of attributes that describe the door (door type, swing direction, opening mechanism etc.,)

Modularity Software is divided into separately named and addressable components. Some times called modules, that are integrated to satisfy problem requirements. They are monolithic software's means large program is composed to a single module Can not be easily grasped by a software engineers. Based on these problems to software's we are going to modularity

Information hiding The concept of modularity leads every software designer to one question ( i.e how do we decompose a software to obtain the best modules) The principle of information hiding gives a solution for above. Modules be characterized by design decision that hides from all others.

Modules should be designed and specified, so that the information contained with in a module is inaccessible to other modules . Hiding like these we achieve high modularity

Refactoring An important design activity suggested for many agile methods Refactoring is a reorganization technique that simplifies the design of a component with out changing its functions or behavior.

Functional Independence: The concept of functional independence is a direct growth of modularity and concept of abstraction and information hiding. Each functional independence is achieved by developing modules with “single-minded” Software with effective modularity that is independent modules is easier to develop because function may be compartmentalized .

Independent modules are easier to maintain because secondary effects caused by design or code modification are limited, error propagation is reduced and reusable is possible. To summarize functional independence is a key to good design. Independence is assessed by two criteria's: Cohesion and Coupling

Cohesion Cohesion states that the relative functional strength of module Coupling Coupling states that the relative interdependence among modules

Refinement: Refinement is actually a process of elaboration We start with high level of abstraction. Refinement causes the designer to elaborate on the original statements providing more and more details. Abstraction and refinement are complementary concepts

Design Classes: Analysis model defines a complete set of analysis classes Each analysis class describes some elements The level of abstraction of analysis class is relatively high. As design model evolves the s/w team to define set of design classes.

1. It refine the analysis classes to provide detail design, that enable the classes to be implemented. 2.And create a new set of design classes to support solutions. They are five different of design classes: User interface classes (defines, that are necessary for human computer interaction(HCI) Business domain classes (refinement of analysis classes ,classes identify the attributes and services that are required to implement elements in business domain Process classes( implement lower level business abstraction,supports to business domain classes) Persistent classes(represents data store (like database)

System classes ( implement s/w management and control functions that enables the sys to operate and communicate with in and out of environment) They define four characteristics of a well formed design class complete and sufficient: A design class must be complete encapsulation of all attributes and methods . Primitiveness : methods associated with design class should be focused on one service for the class.

High cohesion : A design class has a small, focused set of responsibilities and methods to implement those responsibilities. Cohesion is maintained. Low coupling : design classes are collaborate with another classes, however the colloration should kept to an acceptable minimum. If design is high coupled it is difficult to implement, to test, and to maintain over time .

Design model

The design model can be viewed in two different dimensions. The process dimension indicates the change of design model as tasks are executed as part of software process. The abstraction dimension represents the level of details as each element of analysis model is transformed into design Referring to figure the dashed line indicates boundary between analysis and design models

In some cases clear distinction is possible and in other case it is not possible. The elements of design model uses many UML diagrams . Data design elements: Data design sometimes refer as data architecting, creates a model of data or information that is represented at a high level of abstraction. The structure of data has always been an important part of s/w design.

Architectural design elements: The architectural design for software is equal to floor plan of house. The floor plan depicts the overall layout of the rooms, their size,shape,and relationship to another. The floor plan gives us overall view of house. Architectural design elements give us overall view of the software.

Interface design elements: The interface design for software is equal to a set of detailed drawings for doors,windows,and external utilities of a house. They are three important interfaces user interface external interface internal interface

Component level design elements: The component level design for software is equal to set of detailed drawing for each room in a house(like wiring,plumbing,location of switches…..)

Deployment level design elements: Deployment level design elements indicate how software functionality and subsystems will be allocated within the physical computing environment.

Creating an architectural design: Design as define a multistep process in which representation of data and structure. Software architecuture:the s/w architecture of program or a system is the structure of the system.Which comprise s/w components, externally visible properties of those components and relationship among them.

What is architecture ? At most simplistic level, we consider the overall shape of the system . but in reality architecture is much more, various components are integrated to form a whole. The visual impact of the buliding,the way textures, colors and materials are combined to create the external and internal environment.

Rather architecture is not operational s/w , it is the representation. 1)Analyze the effectiveness of the design 2)Consider the alternative architecture at some stages. 3)Reduce the risks associated with the construction. Why is architecture important ? 1)Representation of s/w architecture are an enabler for communication b/w all stakeholders who are interest in development of system. 2)The architecture highlights have profound impact on software engineering work. 3)Intellectually graspable model of how the system is structured and how its components work together.

Data Design: Data design action translates the data objects defined in analysis model into data structures at software component level. Data design at architectural level: Today business large are small are awash of data. For moderately sized business to have dozens of databases and having hundreds of gigabytes of data.

To solve theses challenge the IT business community developed Data mining technique also called knowledge discovery in databases(KDD) With some factors these technique as become difficult. An alternative solution called data warehouse

Data design at the component level: Data design level focuses on representation of data structures that are accessed by software component. the Wassermann proposed set of principles to specify and design data structures.

1)The systematic analysis principles applied to functions and behavior and also applied to data. 2)All data structures and its operations should be performed, should be identified. 3)A mechanism for defining the content of each data object should be established and used to define both data and the operations applied to it.(Class diagram) 4)The representation of data structure should be known to only to those modules. that make direct use of data.

Data structure and operations that may be applied to them should be developed A software design and programming language should support specifications of data.

Architectural styles and patterns: Data centered architecture Data-flow architecture Call and return architecture Object-oriented architecture Layered architecture .

Architectural Design: As Architectural design begins, software development must be put into context. The design should define the external entities(other sys,devices,peoples) that software interact. These information generally gathered from analysis phase and remaining information from requirement engineering.

After completion of all the things, designer specifies the structure of system by refining software components that implement the architecture . This process is iteratively done.

Representing the system in context: We noted that the system engineer must model context. System context diagram accomplishes this requirement by representing the flow of information into and out of the system.

Defining Archetypes: An archetype is a class or pattern that represents core abstraction. These is main part for design of an architecture for the target system. In general small set of archetypes is required to design even complex systems. The target system composed of these archetypes

Node: represents the collection of input and output elements of safehome home security Eg:various sensors,variety of alarms etc.,,, Detector: that encompasses all sensing equipments that feeds information into it. Indicator: representing the mechanism foe indicating that alarm condition is occurring(alarm siren, flashing lights, bell)

Controller: depicts the mechanism that allows the arming or disarming of a node Archetypes are abstract building blocks of an architectural design
Tags