1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.

Slides:



Advertisements
Similar presentations
Software Engineering Key design concepts Design heuristics Design practices.
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Object-Oriented Software Construction Bertrand Meyer 2nd ed., Prentice Hall, 1997.
Software Engineering Software Design Slide 1 Software Engineering Software Design.
Software Design Hoang Huu Hanh, Hue University hanh-at-hueuni.edu.vn.
Conquering Complex and Changing Systems Object-Oriented Software Engineering TJSS System Design Lecture 12 Päivi Ovaska.
ASPECT ORIENTED SOFTWARE DEVELOPMENT Prepared By: Ebru Doğan.
The Architecture Design Process
1 SOFTWARE DESIGN QUALITY COHESION and COUPLING (Part I)
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
1 SYSTEM and MODULE DESIGN Elements and Definitions.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
1 CS115 Class 7: Architecture Due today –Requirements –Read Architecture paper pages 1-15 Next Tuesday –Read Practical UML.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
MADALINA CROITORU Software Engineering week 4 Madalina Croitoru IUT Montpellier.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Systems Analysis and Design in a Changing World, Fifth Edition
Chapter 5CSA 217 Design in Construction Chapter 5 1.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 1.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
Software Engineering Chapter 8 Fall Analysis Extension of use cases, use cases are converted into a more formal description of the system.Extension.
Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
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.
Software Design Deriving a solution which satisfies software requirements.
CSE 303 – Software Design and Architecture LECTURE 4.
Design Concepts and Principles Instructor: Dr. Jerry Gao.
GRASP: Designing Objects with Responsibilities
1 COMP 350: Object Oriented Analysis and Design Lecture 1Introduction References: Craig Larman Chapter 1.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
FDT Foil no 1 On Methodology from Domain to System Descriptions by Rolv Bræk NTNU Workshop on Philosophy and Applicablitiy of Formal Languages Geneve 15.
1/26 On-demand Learning Series Software Engineering of Web Application - Object-Oriented Development & UML Hunan University, Software School.
Introduction to Design. What is Design? 2 minutes Pairs.
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
PRINCIPLES OF GOOD DESIGN 12/7/ Assignment 4 – Deadline 28 Nov.  Read an article placed in generalshare course folder  Point: Design Patterns.
Thanks for Coming l WEB. Principles of Good Design SEI, SJTU WEB APPS and SERVICES.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
Object-Oriented Design Concepts University of Sunderland.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Basic Characteristics of Object-Oriented Systems
DESIGN PROCESS AND CONCEPTS. Design process s/w design is an iterative process through which requirements are translated into a “blueprint” for constructing.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Wrap up. Structures and views Quality attribute scenarios Achieving quality attributes via tactics Architectural pattern and styles.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Design Concepts ch-8
Software Design.
CompSci 280 S Introduction to Software Development
Lecture 9- Design Concepts and Principles
Software Quality Engineering
CIS 375 Bruce R. Maxim UM-Dearborn
Lecture 9- Design Concepts and Principles
An Introduction to Software Architecture
Principles of Good Design
Design Yaodong Bi.
Principles of Good Design
Software Design Lecture : 6
Presentation transcript:

1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software School

2/19 Component Design From Beginner to Master Pieces, Moves Principles, Criteria, Heuristics Contextual Solutions What is Good? How to Apply "Good"? How to Play?

3/19 Component Design Stages of Learning  Learn the Rules!  algorithms, data structures and languages of software  write programs, maybe not always good ones  Learn the Principles!  software design, programming paradigms with pros and cons  importance of cohesion, coupling, information hiding, dependency management  Learn the Patterns!  study the "design of masters"  Understand! Memorize! Practice!

4/19 Component Design A Roadmap  What is Good Design?  Goals of Design  Key Concepts and Principles  Criteria for Good Design  Principles and Rules of Good Design  What is Good Component Design?  Guidelines, Rules, Heuristics  How to Apply Good Design?  Architectural Patterns (Styles)  Design Patterns

5/19 Component Design Goals of Design  Decompose system into components  identify the software architecture  design pattern  Describe component functionality  informally or formally  Determine relationships between components  identify component dependencies and inter-component communication mechanisms  Specify component interfaces  Interfaces should be well defined  facilitates component testing and team communication

6/19 Component Design What is Good Design?  The temptation of "correct design“  There is no “correct design”, you must make your choice.  Need of criteria for evaluating a design  Need of principles and rules for creating good designs A good design is one that balances trade-offs to minimize the total cost of the system over its entire lifetime […] a matter of avoiding those characteristics that lead to bad consequences. Coad & Jourdon

7/19 Component Design Key Design Issues 1. Decomposition/Composition  Why and How ?  What is a component?  Principles Main purpose - Manage software system complexity by improving software quality factors... facilitate systematic reuse, maintainability. 2. Modularity  Definition. Benefits  Criteria  Principles

8/19 Component Design Decomposition 1.Select a piece of the problem (start from the whole problem) 2. Determine the components in this piece using a design paradigm 3. Describe the components interactions (dependency, inter- communication) 4. Repeat steps 1 through 3 until some termination criteria is met WHY ? Handle complexity by splitting large problems into smaller problems, i.e. "divide and conquer" methodology

9/19 Component Design A Component Is...  a SW entity encapsulating the representation of an abstraction (include data and it’s operation)  a vehicle for hiding at least one design decision  a "work" assignment  for a programmer or group of programmers  a unit of code that  has one (or more) name(s)  has identifiable boundaries  can be (re-)used by other components  encapsulates data  hides unnecessary details  can be separately compiled

10/19 Component Design Component Interface A component interface consists of several sections:  Exports  services provided to other components  Imports  services required from other components  Access Control  e.g. protected/private/public (package access in java)

11/19 Component Design Decomposition Principles P1. Don't design components to correspond to execution steps  Since design decisions usually transcend execution time P2. Decompose so as to limit the effects of design decisions  Anything that spreads within the system will be expensive to change P3. Components should be specified by all information needed to use the component  From the view of user

12/19 Component Design Modularity  A modular system should be structured into identifiable abstractions called components  Components should possess well-specified abstract interfaces  Components should have high cohesion and low coupling A software construction method is modular if it helps designers produce software systems made of autonomous elements connected by a coherent, simple structure. B. Meyer

13/19 Component Design Benefits of Modularity Modularity facilitates software quality factors, e.g.:  Extensibility  well-defined, abstract interfaces  Reusability  low-coupling, high-cohesion  Portability  hide machine dependencies (change limited) Modularity is important for good design since it  Enhances for separation of concerns  Enables developers to reduce overall system complexity via decentralized software architectures  Increases scalability by supporting independent and concurrent development by multiple personnel

14/19 Component Design

15/19 Component Design

16/19 Component Design Meyer's Five Criteria for Evaluating Modularity  Decomposability  Are larger components decomposed into smaller components?  Composability  Are larger components composed from smaller components?  Understandability  Are components separately understandable?  Continuity  Do small changes to the specification affect a localized and limited number of components?  Protection  Are the effects of run-time abnormalities confined to a small number of related components and handled in predefined way?

17/19 Component Design Meyer's Five Rules of Modularity  Direct Mapping  Keep the structure of the solution compatible with the structure of the modeled problem domain  Few Interfaces  Every component should communicate with as few others as possible  Small Interfaces  If any two components communicate at all, they should exchange as little information as possible  Explicit Interfaces  Whenever two components A and B communicate, this must be obvious from the text of A or B or both  Information Hiding Information hiding is one means to enhance abstraction!

18/19 Component Design Rule 2 – Rule 3 – Rule 4 Rephrased  Few Interfaces: “Don’t talk to many!”  Small Interfaces: “Don’t talk a lot!”  Explicit Interfaces: “Talk loud and in public! Don’t whisper!”

19/19 Component Design Reading Materials  B. Meyer – Object-Oriented Software Construction, Section 3.1–3.2Object-Oriented Software Construction  E.V. Berard – Abstraction, Encapsulation, and Information HidingAbstraction, Encapsulation, and Information Hiding  D.L. Parnas – On the Criteria To Be Used in Decomposing Systems into ModulesOn the Criteria To Be Used in Decomposing Systems into Modules  Reference: 1. Dr. Radu Marinescu’s PPT