Ch:10 Component Level Design Unit 4. What is Component? A component is a modular building block for computer software Because components reside within.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Chapter 11 Component-Level Design
Design Concepts and Principles
Design Phase What’s design?
General OO Concepts and Principles CSE301 University of Sunderland Harry R. Erwin, PhD.
Lecture 9 Improving Software Design CSC301-Winter 2011 – University of Toronto – Department of Computer Science Hesam C. Esfahani
Introduction To System Analysis and Design
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 8 Slide 1 System models.
Component-Level Design
Irwin/McGraw-Hill Copyright © 2004 The McGraw-Hill Companies. All Rights reserved Whitten Bentley DittmanSYSTEMS ANALYSIS AND DESIGN METHODS6th Edition.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Chapter 11 Component-Level Design
Introduction To System Analysis and design
Chapter 7 Requirement Modeling : Flow, Behaviour, Patterns And WebApps.
Chapter 10 Architectural Design
Systems Analysis and Design in a Changing World, Fifth Edition
Chapter 6 System Engineering - Computer-based system - System engineering process - “Business process” engineering - Product engineering (Source: Pressman,
Chapter 4 System Models A description of the various models that can be used to specify software systems.
Unified Modeling Language, Version 2.0
 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
Introduction To System Analysis and Design
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE DESIGN.
1 Software Design Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13, 5 th edition and Ch. 10, 6 th edition.
Chapter :11 Component-Level Design
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
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 Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13.
SE: CHAPTER 7 Writing The Program
Chapter 7 System models.
Systems Analysis and Design in a Changing World, 3rd Edition
Sommerville 2004,Mejia-Alvarez 2009Software Engineering, 7th edition. Chapter 8 Slide 1 System models.
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 12-5 Software Engineering Design Goals.
1 Chapter 11 Component-Level Design. 2 What is a Component? OMG Unified Modeling Language Specification [OMG01] defines a component as “… a modular, deployable,
Programming Techniques Lecture 10 Component-Level Design Based on: Software Engineering, A Practitioner’s Approach, 6/e, R.S. Pressman Software Engineering.
CS 8532: Adv. Software Eng. – Spring 2009 Dr. Hisham Haddad Chapter 11 CS 8532: Advanced Software Engineering Dr. Hisham Haddad Class will start momentarily.
Design Methods Instructor: Dr. Jerry Gao. Software Design Methods Design --> as a multistep process in which we design: a) data structureb) program structure.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 11a: Component-Level Design Software Engineering: A Practitioner’s Approach, 6/e Chapter.
1 Technical & Business Writing (ENG-715) Muhammad Bilal Bashir UIIT, Rawalpindi.
1 Unified Modeling Language, Version 2.0 Chapter 2.
Chapter 14 컴포넌트-수준 설계 Component-Level Design
CHAPTER 3 MODELING COMPONENT-LEVEL DESIGN.
Component Design Elaborating the Design Model. Component Design Translation of the architectural design into a detailed (class-based or module- based)
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Chapter : 9 Architectural Design
Basic Characteristics of Object-Oriented Systems
11 Systems Analysis and Design in a Changing World, Fifth Edition.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill, 2009). Slides copyright 2009 by Roger Pressman.1.
Design Concepts ch-8
Chapter 14 Component-Level Design
Component-Level Design
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
CIS 375 Bruce R. Maxim UM-Dearborn
Chapter 10 Component-Level Design
Component-Level Design
Component-Level Design
Component-Level Design
Component-Level Design
Object-Oriented Design
Lecture 9- Design Concepts and Principles
Software Design Lecture : 14.
COSC 4406 Software Engineering
Chapter 10 – Component-Level Design
Presentation transcript:

Ch:10 Component Level Design Unit 4

What is Component? A component is a modular building block for computer software Because components reside within the software architecture, they must communicate and collaborate with other components and with entities that exist outside the boundaries of the software An Object-oriented view The Traditional View The Process Related View

An Object-oriented view In a context of OO software engineering, a component contains a set of collaborating classes Each class within a component has been fully elaborated to include all attributes and operations that are relevant to its implementation. As a part of the design elaboration, all interfaces that enable the classes to communicate and collaborate with other design classes must be defined

The Traditional View In the context of traditional software engineering, a component is a functional element of a program that incorporates processing logic, the internal data structure required to implement processing logic, and interface that enables the component to be invoked and data to be passed to it

It is also called module resides within the s.w architecture and serves one of the three important roles as: –A control component that coordinates the invocation of all other problem domain components –A problem domain component that implements a complete or partial function that is required by the customer –An infrastructure component that is responsible for the functions that support the processing required in the problem domain

The Process Related View Build systems that make use of existing software components or design patterns A catalog of proven design or code-level component is made available as design work proceeds As the software architecture is developed, choose a component design or code level components or design patterns from the catalog and use them to populate the architecture. A complete description of interface, the function the component perform, and required communication and collaboration are all available

Designing Class-Based Components Basic Design Principles Component-Level Design Guidelines Cohesion Coupling

Basic Design Principles The Open-Closed Principle (OCP) : “A module should be open for extension but closed for modification”. The component should be extended without the need to make internal modifications (logic level / code) to the component itself The Liskov Substitution Principle (LSP) : “Subclasses should be substitutable for their base classes”. A component that uses a base class should continue to function properly if a class derived from the base class is passed to the component instead

Dependency Inversion Principle (DIP): “Depend on abstractions. Do not depend on concretions.” Abstractions are the place where a design can be extended without great complication. The more a components depends on the concrete components, the more difficult it will be to extend The Interface Segregation Principle (ISP): “Many client-specific interfaces are better than one general purpose interface.” We should create a specialized interface to serve each major category of clients

Packaging Principles The Release Reuse Equivalency Principle (REP): “The granule of reuse is the granule of release.” It is advisable to group reusable classes into packages that can be managed and controlled as newer versions evolve The Common Closure Principle (CCP) : “Classes that change together belong together.” When classes are packaged as a part of a design, they should address the same functional or behavioral area. (classes should be packaged cohesively) The Common Reuse Principle (CRP) : “Classes that aren’t reused together should not be grouped together.” So only classes that are reused together should be included within a package

Component-Level Design Guidelines Component –Naming conventions Interfaces –Only those interfaces that are relevant to the component under consideration should be shown Dependencies and Inheritance –Dependencies should be modeled from left to right and inheritance should be modeled from bottom to top

Cohesion Types of cohesion –Functional : Exhibited by operations, this level of cohesion occurs when a component performs a targeted computation and then returns a result –Layer : Exhibited by packages, components, and classes, this type of cohesion occurs when higher layer accesses the services of a lower layer but lower layer do not access higher level

–Communicational : All operations that access the same data are defined within one class –Common coupling : Occurs when a number of components all make use of a global variable

Coupling Coupling is a qualitative measure of the degree to which classes are connected to one another Coupling categories –Content coupling :Occurs when one component modifies data that is internal to another component (violates information hiding) –Common coupling : Occurs when a number of components all make use of a global variable

–Control coupling: Occurs when operation A() invokes operation B() and passes control flag to B –Stamp coupling : Occurs when class B is declared as a type for an argument of an operation of class A –Data coupling : Occurs when operations pass long strings of data arguments –Routine call coupling : Occurs when one operation invokes another –Type use coupling : Occurs when component A uses a data type defined in component B

–Inclusion or import coupling : Occurs when component A imports or includes a package or content of component B. –External coupling : Occurs when a component communicates or collaborates with infrastructure components (O.S functions, telecommunication function)

Steps for Conducting Component Level Design Identify all design classes that correspond to the problem domain Identify all design classes that correspond to the infrastructure domain: GUI components, OS components, and data management components Elaborate all design classes that are not obtain as reusable components –Specify message details when classes or components collaborate (messages passed between objects) –Identify appropriate interfaces for each component

–Elaborate attributes and define data types and data structures required to implement them. Describe processing flow within each operation in detail (pseudocode / activity diagram) Describe persistent data stores and identify the classes required to manage them Develop and elaborate behavioral representation for a class or a component: statechart is used. Example (how states are changed from one to another) Elaborate deployment diagrams to provide additional implementation detail Refactor every component-level design representation and always considers alternatives

Component Level Design For WebApps WebApp Component is (1) a well-defined cohesive function that manipulates content or provides computational or data processing for an end user. OR (2) a cohesive package of content and functionality that provides the end user with some required capability.

Content design at component level focuses on content objects and the manner in which they may be packaged for presentation to a WebApp end user. The formality of content design at component level should be tuned to the characteristics of the WebApp to be built Content Design At The Component Level

Functional Design At The Component Level WebApp functionality is delivered as a series of components developed in parallel with the information architecture to ensure that they are consistent A functional architecture is a representation of the functional domain of the WebApp and describes the key functional components in WebApp and how these components interact with each other

Designing Traditional Component Graphical Design Notation Tabular Design Notation Program Design Language

Graphical Design Notation Activity diagram or the flowchart provides useful pictorial patterns that depict procedural detail. The activity diagram allows to represent sequence, condition, and repetition.

Tabular Design Notation In many software application, a module may be required to evaluate a complex combination of conditions and select appropriate actions based on these conditions. Decision table provides a notation that translates actions and conditions into tabular form. It is made of four sections: (1)Condition statements (2) Condition entries (3) Action statements (4) Action entries

ConditionDecision rules Condition statementsCondition entries Action statementsAction entries

Program Design Language PDL is also called Structured English or pseudo code. The difference between PDL and real programming language lies in the use of narrative text (e.g English) embedded directly within PDL statements. Basic PDL syntax should include constructs for component definition, interface desc., data declaration, condition and repetition constructs, I/O constructs etc.

Component Based Development Component-based software engineering (CBSE) is a process that emphasizes the design and construction of computer-based systems using reusable software components Steps : 1. Domain Engineering 2. Component Qualification, Adaptation and Composition 3. Analysis and Design for Reuse 4. Classifying and Retrieving Components

Domain Engineering The intent of domain engineering is to identify, construct, catalog, and distribute a set of software components that have applicability to existing and future software in a particular application domain It includes three major activities: –Analysis –Construction –Dissemination (broadcasting, spreading)