DESIGN CONCEPT AND PRINCIPLES What is a design? A meaningful representation of something that is to be built In the software engineering context, design addresses four major areas Data Interfaces Architecture Components Software Engineering 1 DESIGN CONCEPT AND PRINCIPLES Who does it? Software engineers design computer based system, but the skills required at each level of design work is different. Why it is important? What is the output of this phase? How do I ensure that I have done it right? Software Engineering 2 DESIGN CONCEPT AND PRINCIPLES The design activity is often divided into two sub phases System design ( top-level-design ) Detailed design (low-level-design) Responsible Person: System designer Software Engineering 3 DESIGN CONCEPT AND PRINCIPLES Software design sits in the technical kernel of software engineering Each of the elements of the analysis model provides information that is necessary to create the four design models required for complete design specification Software Engineering 4 DESIGN CONCEPT AND PRINCIPLES The data design transforms the information domain model created during analysis into data structure that will required to implement the software Data objects and the relationship – E-R model Detailed data content depicted in – data dictionary Software Engineering 5 DESIGN CONCEPT AND PRINCIPLES Part of the data design may occur in conjunction with design of software architecture More detailed data design occurs as the software component is designed The architectural design- defines the relationship between major structural elements of the software Software Engineering 6 DESIGN CONCEPT AND PRINCIPLES The interface design- Describes how the software communicates within itself, with systems that interoperate with it, and with humans who use it The component level design- transforms structural elements of software architecture into a procedural description of software components Software Engineering 7 DESIGN CONCEPT AND PRINCIPLES Why design is so important? Can be stated with a single word- Quality Without design we build an unstable systemOne that will fall when small changes are made One that may be difficult to test One whose quality cannot be assessed until late in the software process Software Engineering 8 DESIGN CONCEPT AND PRINCIPLES Design and software qualityThroughout the design process the quality of the evolving design is assessed with a series of formal technical reviews What is a good design? McGlaughlin suggests some characters that serves as a guide for the evaluation of a good design Software Engineering 9 DESIGN CONCEPT AND PRINCIPLES They are as follows: The design must implement all of the explicit requirements contained in the analysis model. The design must be readable, understandable, guide for those who generate code and for those who test and subsequently support the software Design should provide a complete picture of software, addressing the data , functional and behavioral domain from an implementation perspective Software Engineering 10 DESIGN CONCEPT AND PRINCIPLES Technical criteria for a good design: 1.Should exhibit an architectural structure that Has been created using recognizable design pattern Composed of components that exhibit good design characteristics Can be implemented in an evolutionary fashion, which will help the implementation and testing Software Engineering 11 DESIGN CONCEPT AND PRINCIPLES 2.A design should be modular 3.A design should contain distinct representation of data, architecture , interfaces, and components 4. A design should lead to data structures that are appropriate for the objects to be implemented. Software Engineering 12 DESIGN CONCEPT AND PRINCIPLES 5. A design should lead to components that exhibits independent functional characters 6. A design should lead to interfaces that reduce the complexity of connections between modules and with external environment 7. A design should be derived using a repeatable method that is driven by information obtained during software requirement analysis. Software Engineering 13 DESIGN CONCEPT AND PRINCIPLES Evolution of a software design: It is a continuous process spread over last four decades Early design work concentrated on development of modular programs and methods, for refining software structure in a top-down manner. Procedural aspect of design definition evolved into philosophy of structured programming Software Engineering 14 DESIGN CONCEPT AND PRINCIPLES Evolution of software continued: Later work proposed methods for the translation of data flow / data structure into the design definition Newer design approach, proposed an object oriented approach for the solution of the problem Today the emphasis in software design is on the software architecture. Software Engineering 15 DESIGN CONCEPT AND PRINCIPLES Design principles: Design is both process and the model. Design process is a sequence of steps, enables the designers to describe all the aspects of software to be built. Design model begins by representing the totality of the thing to be built and slowly refines the thing to provide guidance for constructing each detail Software Engineering 16 DESIGN CONCEPT AND PRINCIPLES A set of principles of software design are as follows: 1. The design process should not suffer from “tunnel vision”. 2.The design should be traceable to the analysis model. 3.The design should not reinvent the wheel 4.The design should minimize the ‘intellectual distance’ between the software and the problem as it exits in the real world Software Engineering 17 DESIGN CONCEPT AND PRINCIPLES 5.The design should exhibit uniformity and integration 6.The design should be structured to accommodate change 7.Design is not coding, coding is not design 8.The design should be assessed for quality as it is created, not after fact The design should be reviewed to minimize conceptual (semantic ) errors Software Engineering 18 DESIGN CONCEPT AND PRINCIPLES Terms Abstraction: When we consider modular solution of any problem, many level of abstractions can be posed Highest level of abstraction: solution is stated in broad terms using languages of problem environment. At the lowest level more procedural orientation is taken Software Engineering 19 DESIGN CONCEPT AND PRINCIPLES Refinement: Is a top down design strategy, originally proposed by ‘WIRTH’ A program is developed by successfully refined level of procedural detail Modularity: Software architecture describes Modularity as software is divided into separately named and addressable components, called modules , which are integrated to satisfy the problem requirement Software Engineering 20 DESIGN CONCEPT AND PRINCIPLES How to define an effective module? Answer lies in the methods used to define modules within a system Mayer defines some criteria, that enables us to evaluate an effective module Modular decomposability Modular composability Modular understandability Modular protection A system may be designed modularly even if its implementation is monolithic Software Engineering 21 DESIGN CONCEPT AND PRINCIPLES Control hierarchy: Also called the program structure, represents the organization of the program components and implies a hierarchy of control Software Engineering 22 DESIGN CONCEPT AND PRINCIPLES Structural partitioning: If the architectural system is hierarchical, program can be partitioned both horizontally as well as vertically Data structure: Is a representation of the logical relationship among individual elements of data. Data structure is as important as program structure to the representation of software architecture Software Engineering 23 DESIGN CONCEPT AND PRICIPLES Software procedure: Program structure defines control hierarchy without regard to the sequence of processing and decisions Information hiding: Modules must be characterized by design decisions that hides from all others. Modules should be specified in such a manner such that the information within a module is inaccessible to other modules those have no need to those information Software Engineering 24