COMP 6471 Software Design Methodologies

Similar documents
Logical Architecture & Design Preliminaries

CSSE 374: Logical Architecture. Shawn Bohner Office: Moench Room F212 Phone: (812)

COMP 6471 Software Design Methodologies

Architectural Models. Section Outline. What is an architectural design? Architecture Types. Example Logical Architecture. Example Deployment Diagram

CSSE 374: GRASP ing at the First Five Patterns Principles. Shawn Bohner Office: Moench Room F212 Phone: (812)

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of

COMP 6471 Software Design Methodologies

Responsibilities. Using several specific design principles to guide OO design decisions.

BDSA08 Advanced Architecture

17. GRASP: Designing Objects with Responsibilities

References: Applying UML and patterns Craig Larman

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of

ADVANCED SOFTWARE DESIGN LECTURE 7 GRASP

Information Expert (or Expert)

Lecture 13 Introduction to Software Architecture

Assigning Responsibilities (Patterns of Responsibility Assignment Principles: GRASP)

Operations Contracts and Preliminaries on Design

Object-Oriented Design

Software Design and Analysis CSCI 2040

Patterns and Testing

CTIS 359 Principles of Software Engineering SOFTWARE DESIGN OO(A)D

Final Exam CISC 475/675 Fall 2004

Architectural Blueprint

Principles of Software Construction: Objects, Design and Concurrency. Object-Oriented Design: Assigning Responsibilities.

Object-Oriented Design

Object Analysis & Design in the textbook. Introduction to GRASP: Assigning Responsibilities to Objects. Responsibility-Driven Design

Constantinos Constantinides Computer Science and Software Engineering Concordia University Montreal, Canada

Software Modeling & Analysis

CS 307: Software Engineering. Lecture 10: Software Design and Architecture

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.

Last Time: Object Design. Comp435 Object-Oriented Design. Last Time: Responsibilities. Last Time: Creator. Last Time: The 9 GRASP Patterns

2 GRASP Patterns and basic OO Design. Roel Wuyts OASS

Introduction - SENG 330. Object-Oriented Analysis and Design

Assigning Responsibilities by Larman

Domain Modeling. CSSE 574: Week 1, Part 3. Steve Chenoweth Phone: Office (812) Cell (937)

(Movement - Synthesis) Improve existing programming skills by developing much larger and more complex programs than in previous classes.

Principles of Software Construction: Objects, Design, and Concurrency. Assigning Responsibilities to Objects. toad. Jonathan Aldrich Charlie Garrod

Agile Model-Driven Development with UML 2.0 SCOTT W. AM BLER. Foreword by Randy Miller UNIFIED 1420 MODELING LANGUAGE. gile 1.

OO Design2. Design Artifacts

Object-Oriented Analysis and Design Using UML (OO-226)

Goal: build an object-oriented model of the realworld system (or imaginary world) Slicing the soup: OOA vs. OOD

Requirements and Design Overview

be used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate

VEL TECH HIGH TECH Dr. RANGARAJAN Dr. SAKUNTHALA ENGINEERING COLLEGE UNIT 1 UML DIAGRAMS

SE203b: OO Design for Software Engineers. Office: TEB349, Ext

Object-Oriented Design

DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING CS2353-OBJECT ORIENTED ANALYSIS AND DESIGN. Unit-I. Introduction to OOAD

BDSA Introduction to OOAD. Jakob E. Bardram

Software Architectures

CS6502-OBJECT ORIENTED ANALYSIS AND DESIGN Two Marks Question with Answers Unit-I Introduction to OOAD

Principles of Software Construction: Objects, Design, and Concurrency

Appendix A - Glossary(of OO software term s)

What is a Model? Copyright hebley & Associates

Final Exam. Final Exam Review. Ch 1: Introduction: Object-oriented analysis, design, implementation. Exam Format

GRASP 2. CSC 440: Software Engineering Slide #1

ROEVER ENGINEERING COLLEGE DEPARTMENT OF INFORMATION TECHNOLOGY CS2353-OBJECT ORIENTED ANALYSIS AND DESIGN. Unit-I. Introduction to OOAD

GRASP: Patterns for. chapter18

UP Requirements. Software Design - Dr Eitan Hadar (c) Activities of greater emphasis in this book. UP Workflows. Business Modeling.

Software Design and Analysis CSCI 2040

ADVANCED SOFTWARE DESIGN LECTURE 4 GRASP. Dave Clarke

Model-based Transition from Requirements to High-level Software Design

1 Software Architecture

Eliminate enterprise software design instability - protect variations! Nickolay Kofanov

index_ qxd 7/18/02 11:48 AM Page 259 Index

System Sequence Diagrams. Based on Craig Larman, Chapter 10 and Anuradha Dharani s notes

OBJECT ORIENTED ANALYSIS AND DESIGN SYLLABUS

Object-Oriented Design II - GRASP

CSSE 374: Design Class Diagrams. Shawn Bohner Office: Moench Room F212 Phone: (812)

Objects and Classes Lecture 1

Recalling the definition of design as set of models let's consider the modeling of some real software.

Software Architecture and Design I

From designing to coding

Avancier Methods. Very basic design patterns. It is illegal to copy, share or show this document

Domain Modeling- 2. Generalization

GRASP Design Patterns A.A. 2018/2019

Credit where Credit is Due. Lecture 4: Fundamentals of Object Technology. Goals for this Lecture. Real-World Objects

Topic : Object Oriented Design Principles

Application Architectures, Design Patterns

SOFTWARE ARCHITECTURE & DESIGN INTRODUCTION

Principles of Software Construction: Objects, Design, and Concurrency

Lecture 16: (Architecture IV)

Design Patterns. Observations. Electrical Engineering Patterns. Mechanical Engineering Patterns

ECOM 2314 COMPUTER PROGRAMMING II

Mapping Designs to Code

Software Architecture

Software Design And Modeling BE 2015 (w. e. f Academic Year )

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently.

10조 이호진 이지 호

Curriculum Map Grade(s): Subject: AP Computer Science

Software Engineering with Objects and Components Open Issues and Course Summary

Trusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout

On to Object-oriented Design

CS6502- OBJECT ORIENTED ANALYSIS AND DESIGN UNIT I

Software Architecture

On to Object-oriented Design

Object-Oriented Design I - SOLID

From Design Patterns: Elements of Reusable Object Oriented Software. Read the sections corresponding to patterns covered in the following slides.

An Introduction to Patterns

Creating Class Definitions from Design Class Diagrams: public class SalesLineItem // Java { private int quantity;

Recap: CRC Cards Process

Transcription:

COMP 647 Software Design Methodologies Fall 20 Dr Greg Butler http://www.cs.concordia.ca/~gregb/home/comp647-fall20.html

Course Introduction Course People Course Components What the course is What the course is not The KenKen Game Case Study Larman s Design Process What is OO Analysis and Design Design Pattern Example - Command

Course People Instructor: Dr Greg Butler gregb@cs EV3.2 Office Hours: Mondays 6:00 to 7:00 Or by appointment But ask questions in class please TAs: Elias Bou-Harb Labs:???

Course Components Lectures: Mondays 7:45 to 20:5 H-603 Assignments: 6, every 2 weeks, worth 60% Quizzes: 2, weeks 6 and 2, worth 40% You must pass the quizzes!!!

Course Objectives Software architecture Its role in the software process Its role in software design Software architecture Importance describing/modeling software architecture Common styles of software architecture Layers Especially in web applications

Course Objectives Think in Objects Analyze requirements with use cases Create domain models Apply an iterative & agile Unified Process (UP) Relate analysis and design artifacts Read & write highfrequency UML Practice Apply agile modeling Design object solutions Assign responsibilities to objects Design collaborations Design with patterns Design with architectural layers Understand OOP (e.g., Java) mapping issues

What the course is: A (second) look at OO design! Software architecture: where global decisions are made! Design process: domain model, use cases, design Emphasis: models, architectural patterns, GRASP principles, design patterns, responsibility, collaboration Closely follows textbook!

What the course is not: Not A course in UML, Java You should know the basics of these And become expert (as needed) yourself Not A course in tools: Eclipse, XDE, JUnit You can work through tutorials yourself Not A course in UI design, DB design Not A course in software engineering, software management, software reuse,

The Kenken Game Case Study

The Kenken Game Case Study

The KenKen Game Case Study KenKen for 4-by-4 games and 6-by-6 games Components/Stages ( Last to First): Game UI to let user play, get advice Game automatically/intelligently solve games Game UI to let users play game Game solve games by brute force-and-ignorance (BFI) Generate games ie add arithmetic Generate game layouts

Software Architecture Formal definition IEEE 47-2000 Software architecture is the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution

Software Architecture Software architecture encompasses the set of significant decisions about the organization of a software system Selection of the structural elements and their interfaces by which a system is composed Behavior as specified in collaborations among those elements Composition of these structural and behavioral elements into larger subsystems Architectural style that guides this organization

Software Architecture Perry and Wolf, 992 A set of architectural (or design) elements that have a particular form Boehm et al., 995 A software system architecture comprises A collection of software and system components, connections, and constraints A collection of system stakeholders' need statements A rationale which demonstrates that the components, connections, and constraints define a system that, if implemented, would satisfy the collection of system stakeholders' need statements Clements et al., 997 The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them

Common Software Architectures Layered architecture Eg, client-server, 3-tier Model-View-Control architecture Broker Interpreter Pipeline

Larman s Design Process Sample UP Artifact Relationships Domain Model Business Modeling date... Sale..* Sales... LineItem... quantity Use Case Model Process Sale inspiration for names of some software domain objects Requirements starting events to design for, and detailed postcondition to satisfy Cashier Process Sale Use Case Diagram Operation: enteritem( ) Post conditions:... Operation Contracts ideas for the postconditions use case names system operations : Register : Cashier. Customer arrives... 2.... 3. Cashier enters item identifier. Use Case Text system events make NewSale() enteritem (id, quantity) : System System Sequence Diagrams Design Model functional requirements that must be realized by the objects : ProductCatalog Glossary Supplementary Specification item details, formats, validation non functional requirements domain rules : Sale Design enteritem (itemid, quantity) d = getproductdescription(itemid) addlineitem( d, quantity )... Register makenewsale() enteritem(...)... *... ProductCatalog getproductdescription(...)...

Domain Model Pays-for-overdue-charges CashPayment amount : Money Customer address name phonenumber Has Membership Pays-for Initiates Rents-from * Maintains * RentalTransaction date * * Rents VideoStore address name phonenumber Owns-a Catalog..* Stocks * VideoRental duedate returndate returntime ID Records-rental-of Video *..* * 0.. ID startdate..* Described-by LoanPolicy perdayrentalcharge perdaylatecharge..* Defines VideoDescription title subjectcategory..* Determines-rental-charge

Use Case Model Partial artifacts, refined in each iteration. Use Case Model :System Requirements text use cases use case diagrams foo( x ) bar( y ) system sequence diagrams system operations system operation contracts

Typical Software Architecture Layers! GUI windows B reports B speech interface B HTML, XML, XSLT, JSP, Javascript,... UI (AKA Presentation, View) B B B B B handles presentation layer requests workflow session state window/page transitions consolidation/transformation of disparate data for presentation > handles application layer requests > implementation of domain rules > domain services (POS, Inventory) services may be used by just one application, but there is also the possibility of multi application services Application (AKA Workflow, Process, Mediation, App Controller) Domain (AKA Business, Application Logic, Model) dependency more app specific > very general low level business services used in many business domains > CurrencyConverter Business Infrastructure (AKA Low level Business Services) 9 (relatively) high level technical services and frameworks 9 Persistence, Security Technical Services (AKA Technical Infrastructure, High level Technical Services) 9 low level technical services, utilities, and frameworks 9 data structures, threads, math, file, DB, and network I/O Foundation (AKA Core Services, Base Services, Low level Technical Services/Infrastructure) width implies range of applicability

Typical Software Architecture Layers (Simplified) UI Swing not the Java Swing libraries, but our GUI classes based on Swing Web Domain Sales Payments Taxes Technical Services Persistence Logging RulesEngine

What is Design? Developing a blueprint (plan) for a mechanism that performs the required task, taking into account all the constraints, & making trade-offs between constraints when they are in conflict.

What is OO Analysis and Design Object-Oriented Analysis Important domain concepts or objects? Vocabulary? Visualized in the UP Domain Model Object-Oriented Design Design of software objects Responsibilities Collaborations Design patterns Visualized in the UP Design Model

Important Concepts Model Abstraction hiding (unimportant) details Eg, cover of Larman s book GRASP Principle for assigning responsibility Design pattern Solution to design problem in context Eg, Command pattern

Responsibility-Driven Design (RDD) Detailed object design is usually done from the point of view of the metaphor of: Objects have responsibilities Objects collaborate Responsibilities are an abstraction. The responsibility for persistence. Large-grained responsibility. The responsibility for the sales tax calculation. More fine-grained responsibility.

The 9 GRASP Principles. Creator 2. Expert 3. Controller 4. Low Coupling 5. High Cohesion 6. Polymorphism 7. Pure Fabrication 8. Indirection 9. Protected Variations

Overview of Patterns Present solutions to common software problems arising within a certain context Help resolve key software design forces Flexibility Extensibility Dependability Predictability Scalability Efficiency Capture recurring structures & dynamics among software participants to facilitate reuse of successful designs Generally codify expert knowledge of design strategies, constraints & best practices AbstractService service Client Proxy service Service service The Proxy Pattern

Command Pattern You have commands that need to be executed, undone, or queued Command design pattern separates Receiver from Invoker from Commands All commands derive from Command and implement do(), undo(), and redo() Also allows recording history, replay