83
Software Design and Engineering using UML January 15, 2000

Software Design and Engineering using UML

  • Upload
    bryony

  • View
    38

  • Download
    0

Embed Size (px)

DESCRIPTION

Software Design and Engineering using UML. January 15, 2000. Agenda. Administrivia Course Overview Failures - “Design Manifesto” System Development Modeling Analysis - Preliminary Study Homework 1 & Project. Administrivia. Syllabus Doing it in Seven Waivers Presentations. - PowerPoint PPT Presentation

Citation preview

Page 1: Software Design and Engineering using UML

Software Design and Engineering using UML

January 15, 2000

Page 2: Software Design and Engineering using UML

Agenda

AdministriviaCourse OverviewFailures - “Design Manifesto”System DevelopmentModelingAnalysis - Preliminary StudyHomework 1 & Project

Page 3: Software Design and Engineering using UML

Administrivia

SyllabusDoing it in SevenWaiversPresentations

Page 4: Software Design and Engineering using UML

Presentations

review of the assigned chapter(s)review of the profile at the end of the

chapter (if appropriate)example of a "well designed" web

site or software packagereasons why you consider it "well

designed"

Page 5: Software Design and Engineering using UML

Course Overview

Analysis and Design of Information Systems

UML (Unified Modeling Language)“What” not “How” to makeCore, GSIA courseHomework (teams)Project & Final (solo)

Page 6: Software Design and Engineering using UML

In Class Exercise

Groups of 3Most Frustrating/Annoying ApplicationWhat makes it that way?What would fix it?

Example: Forwarded WebTV mail & Mulberry

Page 7: Software Design and Engineering using UML

Failures

Technology FailuresKapor - “Design Manifesto”Cost of Changes

Page 8: Software Design and Engineering using UML

Technology Failures

A technology failure occurs when a system fails to meet expectations.

SystemExpectationsFails to meet

Page 9: Software Design and Engineering using UML

“System”

SoftwareHardware/TechnologyProcedures/Business Process

Page 10: Software Design and Engineering using UML

Whose Expectations?

“Stakeholders” Top Management Line Management IS Management Users Shareholders - Market IS Developers

Page 11: Software Design and Engineering using UML

What Expectations?

Explicit

Documented

Implicit

Unwritten

Expectations can be contradictory

Explicit Expectations can be incorrect

Page 12: Software Design and Engineering using UML

Expectations about What?

Anything

Cost Performance Functionality Reliability ……

Page 13: Software Design and Engineering using UML

“Fails to Meet”

User Survey as Measure of Quality Good Idea?

Range of satisfaction Not always binary

Page 14: Software Design and Engineering using UML

Causes of Failures

Numerous

Right System Wrong place or time Wrong process

Missed Expectations

Page 15: Software Design and Engineering using UML

Cost of Failures

Initial, Complete Failure Total Development Cost Rework/Reengineering Retraining

“Minor” Failures Cost to fix driven by when need for

change is identified

Page 16: Software Design and Engineering using UML

Cost of Changes

0

10

20

30

40

50

60

70

Analysis Design Code Test After Release

x E

xpen

se

Page 17: Software Design and Engineering using UML

Preventing Failures

Correctly capturing and determining how to meet everyone's expectations Software (System) Designer (Winograd)

One foot in world of people & processesOne foot in world of technology

Correctly meeting expectations Software (System) Engineer

Page 18: Software Design and Engineering using UML

Design Manifesto

Mitch Kapor Founded Lotus Designer of 1-2-3

Need for DesignWhat is DesignTraining Designers

Page 19: Software Design and Engineering using UML

Need for Design

Large MIS Departments“Conspiracy of silence”“Secret shame of the industry”Systems are hard to useUsers learn minimum to get by

Page 20: Software Design and Engineering using UML

What is Design

People, Process, TechnologyNot just interface designArchitects not Construction Engineers

Creating buildings Defining public spaces Knowledge of use and function

Profile 1 (where the analogy falls short)

Page 21: Software Design and Engineering using UML

Well Designed

Firmness - no bugsCommodity - useful for intended

purposeDelight - use is pleasurable

Page 22: Software Design and Engineering using UML

Training Designers

Technical KnowledgeHuman-Computer InteractionDesign Studio

Practice Apprentice

Integration of design into development

Page 23: Software Design and Engineering using UML

Goals for Course

What to make not how to make itUML - communication toolExposure to design issues and ideasShift focus from technology to

understanding people and processes

Page 24: Software Design and Engineering using UML

System Development

GoalsPhasesCommon CharacteristicsObject-Oriented Development

Page 25: Software Design and Engineering using UML

Goals

Build good systems Quality Cost-effective

What people wantWhat people will pay for

Page 26: Software Design and Engineering using UML

Generic Phases

AnalysisDesignCodingTestingImplementationMaintenance

Page 27: Software Design and Engineering using UML

Analysis

Problem definitionCurrent stateScopeDescription of solutionRequirements

Page 28: Software Design and Engineering using UML

Design

Model of solutionData structureInterface designSystem architectureProgram details

Page 29: Software Design and Engineering using UML

Coding

Write itSearch for reuseCatalog for reuse“Unit” testing

Page 30: Software Design and Engineering using UML

Testing

Does it work?

Integration/subsystem testingSystem testingUsability testingUser acceptance testing

Page 31: Software Design and Engineering using UML

Implementation

Put the system in placeInstall new hardware/technologyInstall new softwareTrainingPackaging and deliveryConversion

Page 32: Software Design and Engineering using UML

Maintenance

Error Correction - fix bugsAdaptation

Hardware or operating system changes Network changes Legal requirements

Enhancement

Page 33: Software Design and Engineering using UML

Common Characteristics

Phases Activities TasksIncremental

Future builds on pastMilestonesDeliverablesDifferent skills needed for different

development tasks

Page 34: Software Design and Engineering using UML

Object-Oriented Development - The Unified (?) Process

InceptionElaborationConstructionTransition

Page 35: Software Design and Engineering using UML

Modeling

What is a model?Why use a model?Alternative ModelsLiddle - Conceptual ModelsDrawbacks of Models

Page 36: Software Design and Engineering using UML

What is a Model?

RepresentationSimplificationAbstractionFocus/Important Aspects

Semantic Information vs. Notation

Page 37: Software Design and Engineering using UML

Why Model?

Save TimeGenerate

AgreementThinking ToolCapture Design

DecisionsGenerate Useful

Product

Organize and Simplify

Explore Alternatives

Master Complexity

Page 38: Software Design and Engineering using UML

Types of Models

Ideal - completePartialTool-Based

Page 39: Software Design and Engineering using UML

Alternative Models

Different Views Aspects Perspectives Contexts Levels of

Abstraction

Static Model Structure

Dynamic Model Behavior

Page 40: Software Design and Engineering using UML

Model Example

Xerox Star - User’s Conceptual Model

Design Process Identify Tasks Build Scenarios Design Graphical Display

Display ElementsControlsUser’s Conceptual Model

Page 41: Software Design and Engineering using UML

User’s Conceptual Model

What the user thinksHow the user responds

Desktop Metaphor abstractions recognition over recall progressive disclosure

Page 42: Software Design and Engineering using UML

Drawbacks of Models

UnderstandabilityOver SimplificationPoor Model ChoiceOver Reliance on ModelDifficult ConversionModel Longer to DevelopMaintenance

Page 43: Software Design and Engineering using UML

Analysis

RequirementsCommunicationActivitiesDeliverables

Page 44: Software Design and Engineering using UML

Requirements

“Correct and thorough requirements specifications is essential to a successful project.”

“No matter how well designed or well coded, a poorly analyzed and specified program will disappoint the user and bring grief to the developer.”

“It is indispensable for analysts to get acquainted with the application domain.”

Page 45: Software Design and Engineering using UML

Requirements

A desired feature, property or behavior of a system

Expectations - explicit through implicitSystem - software, hardware/technology,

procedures/business processes

“What” not “How”

Page 46: Software Design and Engineering using UML

Types of Requirements

Business ProcessSystem Transactions - User’s

Perspective“Look and Feel”System Specific

Page 47: Software Design and Engineering using UML

System Specific Requirements

Limits, Constraints, PrioritiesReliability and QualitySpeed and Response TimeData VolumeError Handling

Page 48: Software Design and Engineering using UML

Quality Function Deployment

Mitsubishi

Types of Requirements Normal - explicit - satisfied user Expected - implicit Exciting - “go beyond”

Page 49: Software Design and Engineering using UML

Collecting Requirements

Identify Users/Stakeholders Different Ones - Different Needs

Establish Problem Domain What is it? What isn’t it? How big is it? Get to know it

Workflows - Business Processes Current Future

Page 50: Software Design and Engineering using UML

Collecting Requirements

Partitioning Decompose problem into separate parts Understand relationships between the

parts Way to handle complexity Hierarchy

Increasing detail with depth

Page 51: Software Design and Engineering using UML

Collecting Requirements

QuestioningListeningDiscussing

Page 52: Software Design and Engineering using UML

Collecting RequirementsPrototyping

Prototype: software model of system

Closed-Ended - throwaway Open-Ended - evolutionary

Explorative - identify requirements Experimental - try options

“Entire” System Key elements only

Page 53: Software Design and Engineering using UML

Candidates for Prototyping

Dynamic visual displaysHeavy user interactionComplex algorithms or calculationsAmbiguous or conflicting

requirements

Page 54: Software Design and Engineering using UML

Prototyping Considerations

User ResourcesDecision Makers IS Resources - Tools, PeopleUser Understanding of Prototype

Time to completion Full functionality Performance requirements Closed-ended

“Paper Prototype”Communication Tool (Model)

Page 55: Software Design and Engineering using UML

Analysis Communication Challenges

Explicit RequirementsImplicit RequirementsAll StakeholdersShared KnowledgeGetting Agreement

Page 56: Software Design and Engineering using UML

Analysis Communication

InterviewsUser DocumentationUser TrainingRAD/FASTModelsProject Documentation/DeliverablesReviews

Page 57: Software Design and Engineering using UML

Interviews

Questions Open-ended questionsSurveyOne-on-oneObservation of work in progressFollow up

Thank you Minutes - notes Questions

Page 58: Software Design and Engineering using UML

User Materials

Training New employees Manuals

Documentation Procedure manuals Exception handling Workflow documentation “Unwritten” Forms

Page 59: Software Design and Engineering using UML

RAD/FAST

RAD Rapid Application Development Rapid Analysis and Design

FAST Facilitated Application Specification

Technique

Page 60: Software Design and Engineering using UML

RAD/FAST

Structured WorkshopAll stakeholders

users, developers, support areas, managementDecision MakersEstablished Rules and Agenda Interviews and Other Data Collection FirstCareful Documentation on DecisionsMultiple Meetings - Several Days/WeeksPrototyping PossibleReview Results

Page 61: Software Design and Engineering using UML

Analysis Models

Communication ToolModel drawbacks raised earlierUser training in understanding

modeling method and meaning

Page 62: Software Design and Engineering using UML

Project Documentation

Written for user reviewWritten for management reviewWritten for next development phaseEverything on paper (disk)Glossary: technical & businessOutstanding issues

Page 63: Software Design and Engineering using UML

Review

Formal or InformalAlong the way and after Analysis

“complete”Goal is agreementSign offs

Page 64: Software Design and Engineering using UML

Preliminary Study

OverviewAssumptions/IssuesContext DiagramBusiness Process Models Is-StateDescription of ActorsDescription of InterfacesRequirementsPrioritized List of Use CasesRecommendationAppendices

Page 65: Software Design and Engineering using UML

Preliminary Study

Overview Description of project, goals, benefits, possible

risks, summary of recommendation

Assumptions/Issues Open issues, unanswered questions, assumptions

made throughout rest of document

Recommendation Should development proceed? If so, how? What

decisions need to be made? What is the project team’s recommendation for those decisions?

Page 66: Software Design and Engineering using UML

Context Diagram

Diagram showing the relationship between the system and all external entities System - large circle External entity - box

Producer or consumer of information that resides outside the system (user or another system)

Relationship - line with arrow showing direction of flow labeled with data

Page 67: Software Design and Engineering using UML

Context Diagram

Student Enrollment System

Student

Billing System

Registrar

DeptDesired Courses

Available Courses

RosterAvailable Courses

Student Billing

Room Assignments

Unassigned Courses

Schedule

Page 68: Software Design and Engineering using UML

Business Process Model

Model of existing business processesModel of new/changed business processes

Shows procedure or workflowEmphasis is individual activities

Object state when significant

Relationship, precedence, timing of activitiesResponsibilities (swim lanes)Activity Diagrams (pp. 146-149)

Page 69: Software Design and Engineering using UML

Activity Diagrams

Start

Finish

Activity

Condition[cond]

[cond]

Page 70: Software Design and Engineering using UML

Activity Diagrams

Synchronization

Constraints

Splitting

Multiple Transitions

{AND} {OR} {XOR}

* for each/all

Page 71: Software Design and Engineering using UML

Activity DiagramsObject State

To State

Required State

Object

[state]

Object

[state]

Object

[state]

Page 72: Software Design and Engineering using UML

Register for Courses

Sign On Enter Courses

Sign Off

Check Preqs

Check Avail

Add to Waitlist

Add Student

Billing

[paid]

Billing

[due]

* each course

* all courses

Display Schedule

[ok]

[avail]

[full]

{AND}

Page 73: Software Design and Engineering using UML

“Is-State”

Description of current “system”Business Process ModelsText DescriptionsIdentify current problems

Totally New Development competitors, alternatives

Page 74: Software Design and Engineering using UML

Preliminary Study

Description of Actors Brief description of each actor - who does

whatActor: abstraction for external entities (user or

system) that interact directly with the systemDetermined by role not person

Description of Interfaces Brief description of external systems that only

provide data to the system but do not interact with it External entities that are not actors

Page 75: Software Design and Engineering using UML

Documenting Requirements

Specification - representation (model) of requirements (explicit) Text description/narrative Outline (1, 1.1, 1.1.1, etc…) Business Process Models Prototypes Sample forms, reports, screens

Page 76: Software Design and Engineering using UML

Documenting Requirements

Understandable to allFormat and content relevant to

problemInformation should be nestedDiagrams should be consistentRevisable

Page 77: Software Design and Engineering using UML

Prioritized List of Use Cases

Use Case: specification of sequence of actions that a system can perform by interacting with actors

ScenariosTransactionsBusiness Event or OperationComprehensive

Page 78: Software Design and Engineering using UML

Prioritizing Use Cases

Difference between “normal” and “exciting” requirements

What must be done right away?What can wait?Needed versus DesiredDifferent users have different priorities

RAD/FAST to help determineCost/Complexity

80/20 Rule

Page 79: Software Design and Engineering using UML

Appendices

Architectural Model What hardware, software and other

technology will be needed for this project? How experienced is the team with this

technology? What special tools or training will be

needed to develop the project? Are there any other technical

considerations that should be noted?

Page 80: Software Design and Engineering using UML

Appendices

Information Sources What were the sources of information

used in creating the Preliminary Study?Alternative Solutions

What are the alternative solutions to the recommended one?

Why was each alternative not selected? Make vs. Buy Decision

Page 81: Software Design and Engineering using UML

Appendices

Technical Glossary Definition and description of technical

terms or terms that have specialized meanings

“technical” in technology sense “technical” in business sense

Page 82: Software Design and Engineering using UML

Homework

TVList.comDocument AssumptionsFill in “blanks”Team Effort - Be both user and

developerMade Consistent Homework #1

Preliminary Study

Page 83: Software Design and Engineering using UML

Project

Individual EffortComputing or Technology FailureCauses and PreventionBooks on Reserve - Go Beyond ThemThree Parts

Overview - 2/5 Presentation - 2/26 Written Report - 2/26