Design and Implementation

Slides:



Advertisements
Similar presentations
Software Design Fundamentals
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Design Concepts and Principles
Design Phase What’s design?
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Chapter 9 Design Engineering
Architectural Design.
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 6 System Engineering - Computer-based system - System engineering process - “Business process” engineering - Product engineering (Source: Pressman,
An Introduction to Software Architecture
Design Issues Practice: A generic View Design Principles.
Chapter 9 Design Engineering
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Ch:10 Component Level Design Unit 4. What is Component? A component is a modular building block for computer software Because components reside within.
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.
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.
Systems Analysis and Design in a Changing World, 3rd Edition
Design Concepts and Principles Instructor: Dr. Jerry Gao.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Design.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
1 Chapter 9 Design Engineering. 2 Analysis Model -> Design Model.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
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.
ARCHITECTURAL DESIGN. Why is Architecture Important? Representations of software architecture are an enabler for communication between all parties (stakeholders)
Software Design: Principles, Process, and Concepts Getting Started with Design.
Developed by Reneta Barneva, SUNY Fredonia Software Design and Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
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
21/1/ Analysis - Model of real-world situation - What ? System Design - Overall architecture (sub-systems) Object Design - Refinement of Design.
February 19, February 19, 2016February 19, 2016February 19, 2016 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific.
DESIGN PROCESS AND CONCEPTS. Design process s/w design is an iterative process through which requirements are translated into a “blueprint” for constructing.
Chapter 9 Architectural Design. Why Architecture? The architecture is not the operational software. Rather, it is a representation that enables a software.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Unit-4 Design and Implementation. Design Engineering Design engineering encompasses the set of principles, concepts and practices that lead to the development.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
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
The Development Process of Web Applications
Software Engineering Fall 2005
Design engineering Prepared By:Jay A.Dave..
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
CHAPTER 2 CREATING AN ARCHITECTURAL DESIGN.
CIS 375 Bruce R. Maxim UM-Dearborn
Object-Oriented Analysis
Component-Level Design
Chapter 9 Design Engineering
Object-Oriented 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
Chapter 9 Design Engineering
An Introduction to Software Architecture
Design Engineering.
Chapter 9 Architectural Design.
UNIT III Design Engineering
Software Modelling and Design
Chapter 6: Architectural Design
Chapter 10 – Component-Level Design
Presentation transcript:

Design and Implementation Unit-4 Design and Implementation

Design Engineering Design engineering encompasses the set of principles, concepts and practices that lead to the development of a high quality system or product Good Design should have Firmness: A program should not have any bugs that inhibit its function. Commodity: A program should be suitable for the purposes for which it was intended. Delight: The experience of using the program should be a pleasurable one.

Purpose of Design Design is where customer requirements, business needs, and technical considerations all come together in the formulation of a product or system The design model provides detail about the software data structures, architecture, interfaces, and components The design model can be assessed for quality and be improved before code is generated and tests are conducted Does the design contain errors, inconsistencies, or omissions? Are there better design alternatives? Can the design be implemented within the constraints, schedule, and cost that have been established?

Purpose of Design (continued) A designer must practice diversification and convergence The designer selects from design components, component solutions, and knowledge available through catalogs, textbooks, and experience The designer then chooses the elements from this collection that meet the requirements defined by requirements engineering and analysis modeling Convergence occurs as alternatives are considered and rejected until one particular configuration of components is chosen Software design is an iterative process through which requirements are translated into a blueprint for constructing the software Design begins at a high level of abstraction that can be directly traced back to the data, functional, and behavioral requirements As design iteration occurs, subsequent refinement leads to design representations at much lower levels of abstraction

From Analysis Model to Design Model Each element of the analysis model provides information that is necessary to create the four design models The data/class design transforms analysis classes into design classes along with the data structures required to implement the software The architectural design defines the relationship between major structural elements of the software; architectural styles and design patterns help achieve the requirements defined for the system The interface design describes how the software communicates with systems that interoperate with it and with humans that use it The component-level design transforms structural elements of the software architecture into a procedural description of software components

From Analysis Model to Design Model (continued) Component-level Design Data/Class Design (Class-based model, Behavioral model) Architectural Design (Class-based model, Flow-oriented model) Interface Design (Scenario-based model, Flow-oriented model Behavioral model) Component-level Design (Class-based model, Flow-oriented model 7

Goals of a Good Design The design must implement all of the explicit requirements contained in the analysis model It must also accommodate all of the implicit requirements desired by the stakeholders The design must be a readable and understandable guide for those who generate code, and for those who test and support the software The design should provide a complete picture of the software, addressing the data, functional, and behavioral domains from an implementation perspective

Design Quality Guidelines A design should exhibit an architecture that Has been created using recognizable architectural styles or patterns Is composed of components that exhibit good design characteristics Can be implemented in an evolutionary fashion, thereby facilitating implementation and testing A design should be modular; that is, the software should be logically partitioned into elements or subsystems A design should contain distinct representations of data, architecture, interfaces, and components A design should lead to data structures that are appropriate for the classes to be implemented and are drawn from recognizable data patterns

Quality Guidelines (continued) A design should lead to components that exhibit independent functional characteristics A design should lead to interfaces that reduce the complexity of connections between components and with the external environment A design should be derived using a repeatable method that is driven by information obtained during software requirements analysis A design should be represented using a notation that effectively communicates its meaning

Quality attributes Functionality is assessed by evaluating the feature set and capabilities of the program, the generality of the functions that are delivered, and the security of the overall system. Usability is assessed by considering human factors, overall aesthetics, consistency, and documentation. Reliability is evaluated by measuring the frequency and severity of failure, the accuracy of output results, the mean-time-to-failure (MTTF), the ability to recover from failure, and the predictability of the program. Performance is measured by considering processing speed, response time, resource consumption, throughput, and efficiency. Supportability combines the ability to extend the program (extensibility), adaptability, serviceability—these three attributes represent a more common term, maintainability—and in addition, testability, compatibility, configurability, the ease with which a system can be installed, and the ease with which problems can be localized.

Software design evolution Procedural aspects- structured design – translation of data flow or data structure – object oriented approach to design derivation- aspect oriented methods- model driven deployment- test driven deployment for achieving more effective modularity and architectural structure in the designs that are created methods have a number of common characteristics: a mechanism for the translation of the requirements model into a design representation a notation for representing functional components and their interfaces heuristics for refinement and partitioning guidelines for quality assessment.

Design Concepts Abstraction Architecture Procedural abstraction – a sequence of instructions that have a specific and limited function-eg. open Data abstraction – a named collection of data that describes a data object eg. Door(type, swing direction, opening mechanism, height, dimensions) Architecture The overall structure of the software and the ways in which the structure provides conceptual integrity for a system Consists of components, connectors, and the relationship between them Structural models Framework models Dynamic models Process models Functional models

Patterns A design structure that solves a particular design problem within a specific context It provides a description that enables a designer to determine whether the pattern is applicable, whether the pattern can be reused, and whether the pattern can serve as a guide for developing similar patterns Whether the pattern is applicable to current work Whether the pattern can be reused Whether the pattern can serve as a guide for developing a similar, but functionally or structurally different pattern

Functional independence Modularity Separately named and addressable components (i.e., modules) that are integrated to satisfy requirements (divide and conquer principle) Makes software intellectually manageable so as to grasp the control paths, span of reference, number of variables, and overall complexity Information hiding The designing of modules so that the algorithms and local data contained within them are inaccessible to other modules This enforces access constraints to both procedural (i.e., implementation) detail and local data structures Functional independence Modules that have a "single-minded" function and an aversion to excessive interaction with other modules High cohesion – a module performs only a single task Low coupling – a module has the lowest amount of connection needed with other modules

Stepwise refinement- top down design Development of a program by successively refining levels of procedure detail- elaboration Complements abstraction and refinement, which enables a designer to specify procedure and data and yet suppress low-level details Refactoring A reorganization technique that simplifies the design (or internal code structure) of a component without changing its function or external behaviour Removes redundancy, unused design elements, inefficient or unnecessary algorithms, poorly constructed or inappropriate data structures, or any other design failures Design classes Refines the analysis classes by providing design detail that will enable the classes to be implemented Creates a new set of design classes that implement a software infrastructure to support the business solution

Design classes User interface classes- abstractions necessary for HCI Business domain classes- refinements Process classes- low level business abstractions Persistent classes- represent data stores System classes- software management and control functions interacting with outside world

Four characteristics of classes Complete and sufficient- encapsulation Primitiveness- accomplishing one service completely High cohesion- small, foccussed set of responsibility Low coupling

Design class

Design Model The process dimension indicates the evolution of the design model as design tasks are executed as part of the software process. The abstraction dimension represents the level of detail as each element of the analysis model is transformed into a design equivalent and then refined iteratively. dashed line indicates the boundary between the analysis and design models. In some cases, a clear distinction between the analysis and design models is possible. In other cases, the analysis model slowly blends into the design and a clear distinction is less obvious.

Dimensions

Data Design elements Like other software engineering activities, data design (sometimes referred to as data architecting) creates a model of data and/or information that is represented at a high level of abstraction (the customer/user’s view of data). This data model is then refined into progressively more implementation-specific representations that can be processed by the computer-based system. In many software applications, the architecture of the data will have a profound influence on the architecture of the software that must process it. The structure of data has always been an important part of software design.

At the program component level, the design of data structures and the associated algorithms required to manipulate them is essential to the creation of high-quality applications. At the application level, the translation of a data model (derived as part of requirements engineering) into a database is pivotal to achieving the business objectives of a system. At the business level, the collection of information stored in disparate databases and reorganized into a “data warehouse” enables data mining or knowledge discovery that can have an impact on the success of the business itself.

Architectural Design elements The architectural design for software is the equivalent to the floor plan of a house Architectural design elements give us an overall view of the software. The architectural model is derived from three sources: Information about the application domain for the software to be built; specific requirements model elements such as data flow diagrams or analysis classes, their relationships and collaborations for the problem at hand the availability of architectural styles and patterns

Interface Design elements The interface design for software is analogous to a set of detailed drawings and specifications There are three important elements of interface design: the user interface (UI); external interfaces to other systems, devices, networks, or other producers or consumers of information internal interfaces between various design components. These interface design elements allow the software to communicate externally and enable internal communication and collaboration among the components that populate the software architecture. UI design (increasingly called usability design) is a major software engineering action

Interface diagram realization

Usability design incorporates aesthetic elements (e. g Usability design incorporates aesthetic elements (e.g., layout, color, graphics, interaction mechanisms), ergonomic elements (e.g., information layout and placement, metaphors, UI navigation), and technical elements (e.g., UI patterns, reusable components). The UI is a unique subsystem within the overall application architecture The design of external interfaces requires definitive information about the entity to which information is sent or received The design of internal interfaces is closely aligned with component-level design

Component Diagram

The component-level design for software fully describes the internal detail of each software component. The component-level design defines data structures for all local data objects and algorithmic detail for all processing that occurs within a component and an interface that allows access to all component operations (behaviors). The design details of a component can be modeled at many different levels of abstraction. A UML activity diagram can be used to represent processing logic. Detailed procedural flow for a component can be represented using either pseudocode (a programming language-like representation )or some other diagrammatic form (e.g., flowchart or box diagram). Algorithmic structure follows the rules established for structured programming (i.e., a set of constrained procedural constructs). Data structures, selected based on the nature of the data objects to be processed, are usually modeled using pseudocode or the programming language to be used for implementation.

Deployment diagram

Deployment-level design elements indicate how software functionality and subsystems will be allocated within the physical computing environment that will support the software The deployment diagram shows the computing environment but does not explicitly indicate configuration details. For example, the “personal computer” is not further identified. It could be a Mac or a Windows-based PC, a Sun workstation, or a Linux-box. These details are provided when the deployment diagram is revisited in instance form during the latter stages of design or as construction begins. Each instance of the deployment (a specific, named hardware configuration) is identified