+ All Categories
Home > Documents > Introduction to Software Design -...

Introduction to Software Design -...

Date post: 07-Jun-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
14
Introduction to Software Design Greg Butler Computer Science and Software Engineering Concordia University, Montreal, Canada Email: [email protected]
Transcript
Page 1: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

Introduction to Software Design

Greg Butler

Computer Science and Software EngineeringConcordia University, Montreal, Canada

Email: [email protected]

Page 2: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

Design is a Blueprint for the Software

Blueprint describes “mechanism” that does the computing

Page 3: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

Design is a Phase in the Software Process

Requirements = WHAT

Design = HOW

Implementation and Test

Deployment

Maintenance and Evolution

Page 4: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

Design is an Activity to Create the Design

Page 5: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

Design is a Series of Decisions to Resolve Design Issues

Design = Trade-Offs = Setting Priorities

Design Cycle

Draft design and describe clearlyReview/Assess/Evaluate design — discover issuesResolve design issue = make decision

Issue-Driven Design

Design issue has alternative solutionsSolutions have pros and consWeigh pros and cons to make decisionIncorporate selected solution to resolve issue

Page 6: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

Design Includes a Construction Plan for the Software

Construction PlanMust have plan to develop/implement/construct the softwareBased on dependencies between design components

Construction Plan determines ...schedule of implementation and testskills required by developersnumber of developers neededwhen developers are neededwork tasks for developers

Page 7: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

Design Turns a Black-Box into a White-Box of Black-Boxes

Architectural Design

Decompose system into parts (layers, subsystems, ...)that collaborate to fulfil contractsDescribe services and interface of each partFacade pattern to encapsulate part (make it a black-box)Specify contract of each interface

Top-down Design is Recursive

ie Nested boxes

Design by Contract

Page 8: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

Design is a Document to Describe the Design

Page 9: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

Design in Seamless OO Software Development

OO Analysis — System is Black-Box

Static InfoObjects are entities in the problem domainAssociations between entitiesMain attributes of entitiesOrganize entities into classes

Dynamic InfoBehaviour as use cases & scenariosSystem operations specificed by contracts

OO DesignOOA entities become software entitiesInterfaces to encapsulate objectsCollaborations of objects to execute workObject internal details — data structures and algorithms

OO ProgrammingImplementation[ Unit Testing ]

OO Software EvolutionExtension Points; Variation PointsSublcassing; PolymorphismRefactoringFrameworks; Generative SE; Software product Lines

Page 10: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

OOSD — Jacobson Robustness Analysis

Robustness analysis checks consistency of OOA model

boundary objects — at edge of black-box systemcontrol objects — coordinate one use caseentity objects — for OOA entitiesTrace scenarios

Page 11: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

OOSD — Responsibilities

CRC Card

C = Class, name of class beingdescribedR = Responsibility, purpose ofthe classC = collaboration, other classesthat work with the class

“No object is an island”

Basic Kinds of Responsibilities

To knowTo doTo decide

Page 12: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

OOSD — Is Not Seamless

Not every software object is an OOA entity

The Representation Gap

Larman GRASP PatternsGRASP is General Responsibility Assignment Software PatternsGuidelines for how to “jump” the representation gap

Page 13: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

OOSD — Larman

OOD is use case realization

OOD is responsibility assignment

Page 14: Introduction to Software Design - Encsusers.encs.concordia.ca/.../PDF/soen6461_intro_to_design.pdf · 2014-09-06 · Introduction to Software Design Greg Butler Computer Science and

History of Design

Functional Design

Issue-Driven Design; Scenario-Driven Development

Stepwise Refinement

Modularization

Design by Contract

OO Design

Responsibility-Driven Design

Aspects


Recommended