Design engineering Prepared By:Jay A.Dave..

Slides:



Advertisements
Similar presentations
Unit-IV Design Engineering
Advertisements

Software Design Fundamentals
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Lecture # 2 : Process Models
Design Concepts and Principles
Chapter 13 Design Concepts and Principles
Design Concepts And Principles Software Design -- An iterative process transforming requirements into a “blueprint” for constructing the software.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Chapter 9 Design Engineering
Chapter 10 Architectural Design
Design Concepts "You can use an eraser on the drafting table or a sledge hammer on the construction site." Frank Lloyd Wright.
Chapter 2 The process Process, Methods, and Tools
CSE 303 – Software Design and Architecture
Design Issues Practice: A generic View Design Principles.
Chapter 9 Design Engineering
 2004 by SEC Chapter 4 Software Design. 2  2004 by SEC Chapter 4 Software Design 4.1 Design Fundamentals 4.2 Design Method 4.3 Architecture Design
1 Chapter 5 Software Engineering Practice. 2 What is “Practice”? Practice is a broad array of concepts, principles, methods, and tools that you must consider.
SOFTWARE DESIGN.
SOFTWARE DESIGN Design Concepts Design is a meaningful engineering representation of something that is to be built It can be traced to a customer’s requirements.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
CSEB233: Fundamentals of Software Engineering Software Design.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Drexel University CS 451 Software Engineering Winter Yuanfang Cai Room 104, University Crossings
Chapter : Design Engineering. Design Engineering It covers the set of principles, concepts, and practices that lead to the development of a high quality.
Design Concepts and Principles Instructor: Dr. Jerry Gao.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Design.
Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e.
1 Chapter 9 Design Engineering. 2 Analysis Model -> Design Model.
Design Concepts By Deepika Chaudhary.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
1 CMPT 275 High Level Design Phase Modularization.
Software Design: Principles, Process, and Concepts Getting Started with Design.
Developed by Reneta Barneva, SUNY Fredonia Software Design and Software Engineering.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 9: Design Engineering Software Engineering: A Practitioner’s Approach, 6/e Chapter.
Architectural Design Introduction Design has been described as a multistep process in which representations of data and program structure,
Software Engineering B.Tech IT/II Sem-II Term: Unit-4 PPT SLIDES Text Books:1.Software Engineering, A practitioner’s approach Roger s. Pressman.
Chapter : 8 Design Concepts
February 19, February 19, 2016February 19, 2016February 19, 2016 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific.
Software Design. Introduction Designing engineering encompasses the set of principles concepts and practices that lead to the development of a high quality.
DESIGN PROCESS AND CONCEPTS. Design process s/w design is an iterative process through which requirements are translated into a “blueprint” for constructing.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Design Concepts ch-8
Chapter 9 Design Engineering
CompSci 280 S Introduction to Software Development
CompSci 280 S Introduction to Software Development
The Development Process of Web Applications
Software Design Principles
Design and Implementation
Software Engineering: A Practitioner’s Approach, 6/e Chapter 9 Design Engineering copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For.
Lecture 9- Design Concepts and Principles
Software Engineering: A Practitioner’s Approach, 6/e Chapter 11 Component-Level Design copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Software Quality Engineering
Software Life Cycle Models
CIS 375 Bruce R. Maxim UM-Dearborn
Chapter 9 Design Engineering
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Object-Oriented Design
Chapter 20 Object-Oriented Analysis and Design
Design Model Like a Pyramid Component Level Design i n t e r f a c d s
Lecture 9- Design Concepts and Principles
Object oriented analysis and design
Chapter 9 Design Engineering
Design Engineering.
For University Use Only
Chapter 9 Architectural Design.
Software Modelling and Design
Logical Architecture & UML Package Diagrams
DESIGN CONCEPTS AND PRINCIPLES
Presentation transcript:

Design engineering Prepared By:Jay A.Dave.

Introduction Software design sits at the technical kernel of software engineering and is applied regardless of the software process model that is used. once software requirements have been analyzed and modeled, software design is the last software engineering action within the modeling activity and sets the stage for construction (code generation and testing). Prepared By:Jay A.Dave.

Translating the requirements model into the design model Prepared By:Jay A.Dave.

Continue Each of the elements of the requirements model provides information that is necessary to create the four design models required for a complete specification of design. The flow of information during software design is illustrated in Figure on the previous slide. Prepared By:Jay A.Dave.

The Design Process Software design is an iterative process through which requirements are translated into a “blueprint” for constructing the software. Initially, the design is represented at a high level of abstraction a level that can be directly traced to the specific system objective and more detailed data, functional, and behavioral requirements. Prepared By:Jay A.Dave.

Continue As design iterations occur, subsequent refinement leads to design representations at much lower levels of abstraction.. Prepared By:Jay A.Dave.

Software Quality Guidelines and Attributes Throughout the design process, the quality of the evolving design is assessed with a series of technical reviews discussed previously. There are few characteristics that serve as a guide for the evaluation of a good design: Prepared By:Jay A.Dave.

Characteristics The design must implement all of the explicit requirements contained in the requirements model, and it must accommodate all of the implicit requirements desired by stakeholders. The design must be readable, understandable guide for those who generate code and for those who test and subsequently support the software. Prepared By:Jay A.Dave.

Characteristics The design should provide a complete picture of the software, addressing the data, functional, and behavioral domains from an implementation perspective. A design should be modular; that is, the software should be logically partitioned into elements or subsystems. Prepared By:Jay A.Dave.

Characteristics A design should contain distinct representations ofdata,architecture,interfaces, and components. A design should lead to interfaces that reduce the complexity of connections between components and with the external environment. Prepared By:Jay A.Dave.

Characteristics Design should follow reusability concepts if possible. A design should be represented using a notation that effectively communicates its meaning. Prepared By:Jay A.Dave.

Design Concepts A set of fundamental software design concepts has evolved over the history of software engineering. Each provides the software designer with a foundation from which more sophisticated design methods can be applied. Each helps you answer the following questions: Prepared By:Jay A.Dave.

Continue What criteria can be used to partition software into individual components? How is function or data structure detail separated from a conceptual representation of the software? What uniform criteria define the technical quality of a software design?. Prepared By:Jay A.Dave.

Abstraction When you consider a modular solution to any problem, many levels of abstraction can be posed. At the highest level of abstraction, a solution is stated in broad terms. At lower levels of abstraction, a more detailed description of the solution is provided. Prepared By:Jay A.Dave.

Continue As different levels of abstraction are developed, you work to create both procedural and data abstractions. A procedural abstraction refers to a sequence of instructions that have a specific and limited function. The name of a procedural abstraction implies these functions, but specific details are suppressed. Prepared By:Jay A.Dave.

Data Abstraction diagram Prepared By:Jay A.Dave.

Procedural Abstraction diagram Prepared By:Jay A.Dave.

Abstraction A data abstraction is a named collection of data that describes a data object. In the context of the procedural abstraction open, we can define a data abstraction called door. Like any data object, the data abstraction for door would encompass a set of attributes that describe the door (e.g., door type, swing direction, opening mechanism, weight, dimensions). Prepared By:Jay A.Dave.

Architecture Software architecture alludes to “the overall structure of the software and the ways in which that structure provides conceptual integrity for a system” . In its simplest form, architecture is the structure or organization of program components (modules), the manner in which these components interact, and the structure of data that are used by the components. Prepared By:Jay A.Dave.

Continue In a broader sense, however, components can be generalized to represent major system elements and their interactions. One goal of software design is to derive an architectural rendering of a system. This rendering serves as a framework from which more detailed design activities are conducted. Prepared By:Jay A.Dave.

Pattern A pattern is a named nugget(small portion/Unit) of insight which conveys the essence of a proven solution to a recurring problem within a certain context amidst competing concerns. a design pattern describes a design structure that solves a particular design problem within a specific context “forces” that may have an impact on the manner in which the pattern is applied and used. Prepared By:Jay A.Dave.

Continue The intent of each design pattern is to provide a description that enables a designer to determine (1) whether the pattern is applicable to the current work, (2) whether the pattern can be reused (hence, saving design time), and (3) whether the pattern can serve as a guide for developing a similar, but functionally or structurally different pattern. Prepared By:Jay A.Dave.

Modularity Modularity is the most common manifestation of separation of concerns. Software is divided into separately named and addressable components, sometimes called modules, that are integrated to satisfy problem requirements. It has been stated that “modularity is the single attribute of software that allows a program to be intellectually manageable” Prepared By:Jay A.Dave.

Continue Prepared By:Jay A.Dave.

Continue it is possible to conclude that if you subdivide software indefinitely the effort required to develop it will become negligibly small! The effort (cost) to develop an individual software module does decrease as the total number of modules increases. more modules means smaller individual size. Prepared By:Jay A.Dave.

Continue However, as the number of modules grows, the effort (cost) associated with integrating the modules also grows.. These characteristics lead to a total cost or effort curve shown in the figure. There is a number, M, of modules that would result in minimum development cost, but we do not have the necessary sophistication to predict M with assurance. Prepared By:Jay A.Dave.

Continue You modularize a design (and the resulting program) so that development can be more easily planned; software increments can be defined and delivered; changes can be more easily accommodated; testing and debugging can be conducted more efficiently, and long-term maintenance can be conducted without serious side effects. Prepared By:Jay A.Dave.

Information hiding The concept of modularity leads you to a fundamental question: “How do I decompose a software solution to obtain the best set of modules?” The principle of information hiding which suggests that modules be “characterized by design decisions that (each) hides from all others.” In other words, modules should be specified and designed so that information (algorithms and data) contained within a module is in accessible to other modules that have no need for such information. Prepared By:Jay A.Dave.

Information Hiding Prepared By:Jay A.Dave.

Cont.. Hiding implies that effective modularity can be achieved by defining a set of independent modules that communicate with one another only that information necessary to achieve software function. Hiding defines and enforces access constraints to both procedural detail within a module and any local data structure used by the module Prepared By:Jay A.Dave.

Cont.. The use of information hiding as a design criterion for modular systems provides the greatest benefits when modifications are required during testing and later during software maintenance. Because most data and procedural detail are hidden from other parts of the software, unexpected/unplanned errors introduced during modification are less likely to propagate to other locations within the software. Prepared By:Jay A.Dave.

Functional independence Functional independence is achieved by developing modules with “single-minded” function and an “aversion” to excessive interaction with other modules. Stated another way, you should design software so that each module addresses a specific subset of requirements and has a simple interface when viewed from other parts of the program structure. Prepared By:Jay A.Dave.

Cont.. Independence is assessed using two qualitative criteria: cohesion and coupling. Cohesion is the indication of the relationship within module. Coupling is the indication of the relationships between modules Prepared By:Jay A.Dave.

Cont.. Prepared By:Jay A.Dave.

Refinement Refinement is actually a process of elaboration You begin with a statement of function (or description of information) that is defined at a high level of abstraction. That is, the statement describes function or information conceptually but provides no information about the internal workings of the function or the internal structure of the information. You then elaborate on the original statement, providing more and more detail as each successive refinement (elaboration) occurs Prepared By:Jay A.Dave.

Stepwise refinement Prepared By:Jay A.Dave.

Refactoring An important design activity suggested for many agile methods refactoring is a reorganization technique that simplifies the design (or code) of a component without changing its function or behavior. Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code [design] yet improves its internal structure. Prepared By:Jay A.Dave.

Cont.. When software is refactored, the existing design is examined for the following redundancy, unused design elements, inefficient or unnecessary algorithms, poorly constructed or inappropriate data structures, or any other design failure that can be corrected to yield a better design. Prepared By:Jay A.Dave.

Dimensions of the Design Model High Analysis model Abstraction Dimension Design model Data/Class Elements (class diag.) Architectural Elements(DFD) Interface Elements Component-level Elements (Component Dia) Deployment-level Elements (deployment Dia) Low Process Dimension (Progression)

The Design model The design model can be viewed in two different dimensions (Horizontally) The process dimension indicates the evolution of the parts of the design model as each design task is executed (Vertically) The abstraction dimension represents the level of detail as each element of the analysis model is transformed into the design model and then iteratively refined Elements of the design model use many of the same UML diagrams used in the analysis model Prepared By:Jay A.Dave.

Component-level Design Cont.. Design model elements are not always developed in a sequential fashion Preliminary architectural design sets the stage It is followed by interface design and component-level design, which often occur in parallel The design model has the following layered elements Data/class design Architectural design Interface design Component-level design A fifth element that follows all of the others is deployment-level design Data/Class Design Architectural Design Interface Design Component-level Design Prepared By:Jay A.Dave.

Design Elements Data/class design Architectural design Creates a model of data and objects that is represented at a high level of abstraction Architectural design Depicts the overall layout of the software Interface design Tells how information flows into and out of the system and how it is communicated among the components defined as part of the architecture Includes the user interface, external interfaces, and internal interfaces Component-level design elements Describes the internal detail of each software component by way of data structure definitions, algorithms, and interface specifications Deployment-level design elements Indicates how software functionality and subsystems will be allocated within the physical computing environment that will support the software Prepared By:Jay A.Dave.

Design Elements Data/class design Architectural design Creates a model of data and objects that is represented at a high level of abstraction Architectural design Depicts the overall layout of the software Interface design Tells how information flows into and out of the system and how it is communicated among the components defined as part of the architecture Includes the user interface, external interfaces, and internal interfaces Component-level design elements Describes the internal detail of each software component by way of data structure definitions, algorithms, and interface specifications Deployment-level design elements Indicates how software functionality and subsystems will be allocated within the physical computing environment that will support the software Prepared By:Jay A.Dave.