design concepts by deepika chaudhary. definition m.a.jackson once said “ the beginning of wisdom...

25
Design Concepts By Deepika Chaudhary

Upload: bonnie-ellis

Post on 04-Jan-2016

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Design Concepts

By Deepika Chaudhary

Page 2: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Definition

• M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference between getting a program to work and getting it right.

• The following are the basic concepts for the software design:

Page 3: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Concepts

• The following are the basic concepts for the software design

• Abstraction

• Refinement

• Modularity

• Software Architecture

• Control Hierarchy

Page 4: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

• Structural Partitioning

• Data Structure

• Software Procedure

• Information Hiding

Page 5: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Abstraction

• Abstraction is a process whereby we identify the important aspects of phenomenon and ignore its details.

• According to wasserman “the Psychological notion of abstraction permits one to concentrate on a problem at some level of generalization without regard to irrelevant low level details

Page 6: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Types of Abstraction

• Procedural abstraction : A sequence of instructions that has a specific and limited function .

• For eg to open a doorimplies a long sequence of procedural steps ( walk to the door , reach out and grasp knob turn knob and pull door etc)

Page 7: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Control Abstaction

• Control abstraction implies a program control mechanism without specifying internal details . An example of a control abstraction is the synchronization semaphore used to coordinate activities in an operating system.

Page 8: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Data Abstraction

• A data abstraction is a named collection of data that describes a data object .

• For eg the data abstraction for door would encompass a set of attributes that describe a door (door type , swing direction , opening mechanisms , weight etc)

Page 9: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Refinement

• Refinement is a top down technique for decomposition of a system from high level specifications to more elementary steps.

• Refinement is also known as “stepwise program Development”

Page 10: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

• IT begins with the specifications derived during requirements analysis and external design. The problem is first decomposed into a major processing steps and then the process is repeated for each part of the system until it is decomposed into sufficient details

Page 11: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Abstraction and Refinement

• Abstraction enables a programmer to specify procedure and data and get suppress low level details

• Refinement helps the designer to reveal low level details as design progresses.

Page 12: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Modularity

• There are many definition of the “module” . They range from a module in FORTRAN to a module in ADA to a module as a work assignment for an individual programmer”

• Modular system consists of well defined manageable units with well defined interfaces among the units.

• Modularity enhances design clarity which in turn ease implementation debugging testing documenting and maintenance of the software product.

Page 13: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Software Architecture

• It is “the overall structure of the software and the ways in which that structure provides conceptual integrity for a system”

• In the simplest form architecture is the hierarchical structure of a program components , the manner in which these components interact and the structure of data that are used by the components.

Page 14: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

• Shaw and Garlan (1996) suggest that software architecture is the step in producing a software design . They distinguish among three design.

• Architecture Design

• Code Design

• Executable Design

Page 15: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Architecture Design

• It associates the system capabilities identified in the requirements specification with the system components that will implement them. Components are usually modules and the architecture defines the interconnection between them.

Page 16: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Code Design

• Involves algorithms and data structures and the components are programming language primitives such as number characters pointers and control threads.

Page 17: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Executable Design

• It addresses the code design at lower levels of details. It discusses memory allocation , data formats , bit patterns and so on.

Page 18: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Control Hierarchy

• Control hierarchy also called program structure represents the organization of program components and implies a hierarchy of control. It does not represent procedural aspects of software such as sequence of processes , occurrence of order of decisions etc.

Page 19: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

• In this design we check that how many components are under the control of a particular component.

• To check which one is the better design we minimize the number of components with high fan out ( the number of components controlled by a component)

• Fan in is the number of components controlling a particular component.( )

Page 20: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Structural partitioning

• If the architectural style of a system is hierarchical the program structure can be partitioned both horizontal and vertically .

• The simplest approach to horizontal partitioning defines three partitions-input , data transformation and output.

Page 21: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Horizontal Partitioning

• Defines separate branches of the modular hierarchy of each major program function.

• The simplest approach to horizontal partitioning defines three partitions

• Input

• Data transformation

• Output

Page 22: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Vertical Partitioning

• Vertical partitioning often called factoring suggests that control and work should be distributed top down in the program structure.

• Top level modules should perform control functions and do little actual processing work.

Page 23: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Data Structure

• Data structure is a representation of the logical representation among individual elements of data.

• Data structure dictates the organization method of access degree of associativity and processing alternatives for information.

Page 24: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Software procedure

• Software procedure focuses on the processing details of each module individually.

• Procedure must provide a precise specification of processing, including sequence of events, exact decision points and even data organization.

Page 25: Design Concepts By Deepika Chaudhary. Definition M.A.Jackson once said “ The beginning of wisdom for a software engineer is to recognize the difference

Information Hiding

• Information hiding is a fundamental design concept for software .

• Each module in the system hides the internal details of its processing activities and modules communicate only through well defined interfaces.