Software Design AITI GP John Paul Vergara.

Slides:



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

Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Unified Modeling Language
OOAD Using the UML - Use-Case Analysis, v 4.2 Copyright  Rational Software, all rights reserved 1/18 Use Case Analysis – continued Control Classes.
Introduction To System Analysis and Design
© Copyright Eliyahu Brutman Programming Techniques Course.
Unified Modeling Language(UML) BY
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
CIT UPES | Sept 2013 | Unified Modeling Language - UML.
Introduction To System Analysis and Design
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
1 Software Design Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13, 5 th edition and Ch. 10, 6 th edition.
1 Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13.
Unified Modeling Language* Keng Siau University of Nebraska-Lincoln *Adapted from “Software Architecture and the UML” by Grady Booch.
1 COMP 350: Object Oriented Analysis and Design Lecture 1Introduction References: Craig Larman Chapter 1.
Object-Oriented Design Notation CS 123/CS 231. References zMain Reference: UML Distilled, by Martin Fowler ÕChapters 3, 4, 6, and 8 zSupplementary References:
 What is Modeling What is Modeling  Why do we Model Why do we Model  Models in OMT Models in OMT  Principles of Modeling Principles of Modeling 
Logical view –show classes and objects Process view –models the executables Implementation view –Files, configuration and versions Deployment view –Physical.
Part VII: Design Continuous
Software Design CS 123/CS 231. What is Design? zDesign is the activity of specifying a solution to a problem zContrast this against other software engineering.
Software Design CS 123/CS 231. What is Design? zDesign is the activity of specifying a solution to a problem zContrast this against other software engineering.
Week 04 Object Oriented Analysis and Designing. What is a model? A model is quicker and easier to build A model can be used in simulations, to learn more.
OOP Review CS 124.
OOD OO Design. OOD-2 OO Development Requirements Use case analysis OO Analysis –Models from the domain and application OO Design –Mapping of model.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
CS 501: Software Engineering Fall 1999 Lecture 15 Object-Oriented Design I.
Basic Characteristics of Object-Oriented Systems
UML. Model An abstract representation of a system. Types of model 1.Use case model 2.Domain model 3.Analysis object model 4.Implementation model 5.Test.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
UML (Unified Modeling Language)
Slide 1 Unified Modeling Language, Version 2.0 Object-Oriented SAD.
Introduction to UML.
Software Engineering Lecture 4 System Modeling The Analysis Stage.
Object-oriented and Structured System Models
UML Diagrams By Daniel Damaris Novarianto S..
Evolution of UML.
Main issues: • What do we want to build • How do we write this down
Course Outcomes of Object Oriented Modeling Design (17630,C604)
Unified Modeling Language
Introduction to Unified Modeling Language (UML)
Software Design Mr. Manoj Kumar Kar.
Software Engineering: A Practitioner’s Approach, 6/e Chapter 11 Component-Level Design copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
University of Central Florida COP 3330 Object Oriented Programming
UML Diagrams Jung Woo.
Abstract descriptions of systems whose requirements are being analysed
SNSCT_CSE_PROGRAMMING PARADIGM_CS206
Software Architecture & Design Pattern
Recall The Team Skills Analyzing the Problem (with 5 steps)
Chapter 19: Interfaces and Components
Object-Oriented Design
Introduction to UML.
Software Design CMSC 345, Version 1/11.
Chapter 20 Object-Oriented Analysis and Design
Appendix A Object-Oriented Analysis and Design
Analysis models and design models
An Introduction to Software Architecture
Chapter 19: Interfaces and Components
Chapter 19: Interfaces and Components
Copyright 2007 Oxford Consulting, Ltd
CS 8532: Advanced Software Engineering
Software Analysis.
Design Yaodong Bi.
Interfaces and Components
Appendix A Object-Oriented Analysis and Design
Appendix 3 Object-Oriented Analysis and Design
Introduction to OOAD and the UML
CS 501: Software Engineering
Chapter 19: Interfaces and Components
From Use Cases to Implementation
Presentation transcript:

Software Design AITI GP John Paul Vergara

What is Design? Design is the activity of specifying a solution to a problem Contrast this against other software engineering phases Analysis: understanding and specifying the problem (requirements) Implementation: system construction

Goal of Software Design To achieve sufficient agreement on interface definition and internal structure that implementation may proceed in parallel teams.

Stages in SW Design Architectural Design Abstract Specification Interface Design Component Design Detailed Design *Reference: Sommerville, Chapter 12

Architectural Design Identify Subsystems and Modules Example: Program Submission System Server Teacher Interface Student Interface

Architectural Design, continued Design information provided is minimal System is simply decomposed into interacting subsystems or modules Making global and local decisions about planned implementation based on constraints, non-functional requirements and available alternatives Has general applicability

“Obvious” areas of concern for architectural design Structure Communication Distribution Persistence Security Error Handling Recovery Use or Reuse of existing hardware and software configurations

Abstract Specification Identify services and constraints per subsystem Example: Server set up a class set up a project submit a program Note: descriptions of services are informal

Interface Design Per subsystem, specify its interface collection of available functions/methods for use by other subsystems Consistent with Encapsulation Example: Server function: set_up_class parameters: catnum, section, list of students (id#’s and names)

Interface Specification Services per subsystem are formally specified Goal: provide unambiguous information regarding extent of external interaction parameters/inputs, return values/outputs Design and implementation details of the subsystem are still hidden

Component Design Within a subsystem determine components per component, identify services/interfaces Understand interaction between components at the level of the subsystem OO Design: components are classes Design models (using the UML, for example) are most useful at this level

Detailed Design Specify data structures and algorithms (for methods) of the individual components (classes) Generally still implementation-independent Although though in practice, specific language features are used Techniques: Pseudocode, flowcharts, others

Design Work Products System Architecture Application Programming Interfaces Target Environment (addressing non-functional requirements) Subsystem Model Design Object Model - static model representing structure of classes and relationships with each other

Design Work Products continued... Design Object Interaction Diagrams - graphically depict collaborations between objects Design State Models - represent dynamic behavior of design classes and are done for all classes that have strong state dependent object behavior

Design Quality Cohesion Coupling Understandability Adaptability *Reference: Section 12.3 of Sommerville

Cohesion Extent of relationship between parts of a component High cohesion is desirable Single logical t (or “theme”) all parts should contribute to the function Levels of cohesion (p. 218) coincidental cohesion (weakest) functional cohesion (strongest)

Coupling Dependence between units of a subsystems or components High coupling generally undesirable units fully depend on each other sensitive to change convenient/necessary only for small components

Understandability Cohesion and Coupling Naming Documentation understanding a component independently Naming reflects real-world intuition Documentation Complexity algorithms

Adaptability Sensitivity to change Loosely coupled components are changes in design easy? Loosely coupled components Self-contained components

Object-Oriented Design Notation CS 123/CS 231

References UML in a Nutshell UML Distilled, by Martin Fowler Chapters 3, 4, 6, and 8 Supplementary References: Chapter 14 of Sommerville Chapter 22 of Pressman

Component Design and Detailed Design For each subsystem determine components, and services/interface per component OO Design: components are classes Detailed Design Determine attributes of classes and relationships between the classes Determine functionality of each class and interactions between classes

Object-Oriented Modeling UML: Unified Modeling Language OO Modeling Standard Booch, Jacobson, Rumbaugh UML is used to visualize, specify, construct and document the artifacts of a software intensive system

Building Blocks of the UML Things the abstractions Relationships tie the “things” together Diagrams group interesting collections of things

UML Diagrams What is depicted? Class details and static relationships System functionality Object interaction State transition within an object

Some UML Modeling Techniques Class Diagrams Use Cases/Use Case Diagrams Interaction Diagrams Sequence Diagrams Collaboration Diagrams State Diagrams Activity Diagram

Example: Class Diagram FFCounter totalcash totalorders PriceChecker getPrice() pc counters 5 FastFood Restaurant

Example: Use Case Diagram LIBRARY SYSTEM Facilitate Checkout Search for Book Borrower Librarian Facilitate Return

Example: Interaction Diagram 2: checkIfAvailable() Checkout Screen :Book 1: checkIfDelinquent() 3: borrowBook() 4: setBorrower() :Borrower

Example: State Diagram (Book) start Reserved Borrowed New Librarian activates book as available Borrower returns book Available

Object-Oriented Design Models Static Model : interested in the structure Class Diagrams Dynamic Model : interested in the behavior Use Cases, Interaction Diagrams, State Diagrams, others

OO Static Model Classes and Class Diagrams Relationships Names (attributes and methods) Visibility(private,public,protected) Scope (abstract, concrete…) Relationships Dependency : change to one affects the other Association (includes aggregation and composition) : structural relationship describing connection between the objects

Relationships continued... Generalization : inheritance Realization : a classifier specifies a contract that another classifier guarantees to carry out (e.g., interfaces and classes that realize them)

OO Dynamic Model Goal: Represent Object behavior Object interaction Traditional/Procedural Dynamic Modeling Data Flow Diagrams (DFDs) Problem: Processes separate from data Need modeling notation that highlight tight relationship between data & processes

DFD Example (Inventory Management) Accept and Post Delivery Delivery info Transaction Item Master

OO Counterpart: Object Interaction new (delivery info) Encoder :Transaction post (item count) :Item Master

Building an OO Dynamic Model Identify use cases Describe each use case through an interaction diagram For state dependent objects, can provide state diagrams Derive implied methods (and attributes) Define flow of control, sequence of messages

What’s Next? Need to understand the notation Make sure it helps the software development process When to use the UML techniques Primarily when specifying OO design Formal means of communication across the different software development stages