Week 8 Implementation Design Alex Baker. Implementation Design System Design – Describes what the system should do Implementation Design – Describes what.

Slides:



Advertisements
Similar presentations
Software Design Fundamentals
Advertisements

ARCHITECTURES FOR ARTIFICIAL INTELLIGENCE SYSTEMS
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 12Slide 1 Software Design l Objectives To explain how a software design may be represented.
Framework is l Reusable Code, often domain specific (GUI, Net, Web, etc) l expressed as l a set of classes and l the way objects in those classes collaborate.
Information Systems Analysis and Design
Documenting a Software Architecture By Eng. Mohanned M. Dawoud.
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
1 Layers Data from IBM-Rational and Craig Larman’s text integrated into these slides. These are great references… Slides from these sources have been modified.
System Modelling System modelling helps the analyst to understand the functionality of the system and models are used to communicate with customers. Different.
OOAD Using the UML - Use-Case Analysis, v 4.2 Copyright  Rational Software, all rights reserved 1/18 Use Case Analysis – continued Control Classes.
8.
Copyright © 2009 Pearson Education, Inc. Publishing as Prentice Hall Essentials of Systems Analysis and Design Fourth Edition Joseph S. Valacich Joey F.
Week 2 Design Examples and Designing for Change Alex Baker.
Ch1: File Systems and Databases Hachim Haddouti
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.
Copyright 2004 Prentice-Hall, Inc. Essentials of Systems Analysis and Design Second Edition Joseph S. Valacich Joey F. George Jeffrey A. Hoffer Chapter.
Course Instructor: Aisha Azeem
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
What is Software Architecture?
Copyright 2001 Prentice-Hall, Inc. Essentials of Systems Analysis and Design Joseph S. Valacich Joey F. George Jeffrey A. Hoffer Chapter 1 The Systems.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 system design 1 what is systems design? preparation of the system’s specifications with.
The Design Discipline.
Dr. Ken Hoganson, © August 2014 Programming in R STAT8030 Programming in R COURSE NOTES 1: Hoganson Programming Languages.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
Object Oriented Analysis and Design Introduction.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 6 Slide 1 Chapter 6 Requirements Engineering Process.
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.
Team Skill 6: Building the Right System From Use Cases to Implementation (25)
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE DESIGN.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
SE: CHAPTER 7 Writing The Program
Object-Oriented Design Principles and Patterns. © 2005, James R. Vallino2 How Do You Design? What principles guide you when you create a design? What.
Architectural Design Identifying system components and their interfaces.
Systems Analysis and Design in a Changing World, 3rd Edition
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
GRASP: Designing Objects with Responsibilities
® IBM Software Group © 2006 IBM Corporation Writing Good Use Cases Module 1: Introduction to Use-Case Modeling.
SYS466: Analysis and Design Using OO Models Domain Class Diagram.
Requirements Engineering Southern Methodist University CSE 7316 – Chapter 3.
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)
Scenario-Based Analysis of Software Architecture Rick Kazman, Gregory Abowd, Len Bass, and Paul Clements Presented by Cuauhtémoc Muñoz.
Lecture 9-1 : Intro. to UML (Unified Modeling Language)
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
1 Chapter 5:Design Patterns. 2 What are design pattern?  Schematic description of design solution to recurring problems in software design and,  Reusable.
L10: Model-View-Controller General application structure. User Interface: Role, Requirements, Problems Design patterns: Model – View – Controller, Observer/Observable.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
1 Architectural Blueprints—The “4+1” View Model of Software Architecture (
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
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.
On the Criteria to Be Used in Decomposing Systems into Modules
System Design and Modeling
Chapter 13 Logical Architecture.
Informatics 121 Software Design I
Chapter 13 Logical Architecture.
An Introduction to Software Architecture
Introduction to Systems Analysis and Design Stefano Moshi Memorial University College System Analysis & Design BIT
Applying Use Cases (Chapters 25,26)
Applying Use Cases (Chapters 25,26)
Chapter 5 Architectural Design.
Remarks on Software Design
Presentation transcript:

Week 8 Implementation Design Alex Baker

Implementation Design System Design – Describes what the system should do Implementation Design – Describes what the implementer should do System Design Implementation CGprofile vertexProfile = cgD3D9GetLatestVertexProfile(); const char *vertexOptions[] = {cgD3D9GetOptimalOptions( vertexProfile ), NULL,}; const char* vertexOptions[] = {"-profileopts", "dcls", NULL,};

Implementation Design System Design – Describes what the system should do Implementation Design – Describes what the implementer should do Given what our system design tells us: What’s our plan?

Motivation: Why Bother with Implementation Design? Suppose we code an object-oriented program – 16 implementers – No Implementation Design What problems might arise?

Motivation: Why Bother with Implementation Design? Suppose we code an object-oriented program – 16 implementers – No Implementation Design What problems might arise? – Poorly chosen classes – Multiple people on the same code – Functionality in hidden, or multiple, places – Inefficiencies and interaction problems emerge – Bad match to the system design – No common vision

3 Goals of Implementation Design Provide a shared plan to follow – Consistency Ensure the plan meets its recipients’ needs – Helpfulness Ensure the solution is appropriate – Effectiveness

Goal: Consistency As we mentioned in week 6, our audience is: – system designers – implementation designers themselves – programmers – testers – …

Goal: Consistency As we mentioned in week 6, our audience is: – system designers – implementation designers themselves – programmers – testers – …

Goal: Consistency As we mentioned in week 6, our audience is: – system designers – implementation designers themselves – programmers – testers – … Communication

Goal: Consistency Ensuring implementers have the same plan – Every design is a plan, to some extent…

Goal: Consistency Ensuring implementers have the same plan – Every design is a plan, to some extent…

Goal: Consistency Ensuring implementers have the same plan – Every design is a plan, to some extent…

Goal: Consistency Ensuring implementers have the same plan – Every design is a plan, to some extent…

Goal: Consistency Ensuring implementers have the same plan – Every design is a plan, to some extent… Division of Labor – Separate parts to work on – Ensuring they work together

Goal: Consistency Ensuring implementers have the same plan – Every design is a plan, to some extent… Division of Labor – Separate parts to work on – Ensuring they work together A common vision (Ideas) – Will the developers “guesses” coincide?

Goal: Consistency

Communication isn’t enough A good representation is important What if we just communicate really well? – Some problems can’t be seen along the way – Implementation design is a bird’s eye view Need a plan that… – Supports the key work – Will lead to an effective product upon completion

Role of the Implementation Design As we mentioned in week 6, our audience is: – system designers – implementation designers themselves – programmers – testers – … Reflective Conversation with Materials

3 Goals of Implementation Design Provide a shared plan to follow – Consistency Ensure the plan meets its recipients’ needs – Helpfulness Ensure the solution is appropriate – Effectiveness

Goals: Helpfulness In a way, the implementer is our customer! What are the implementer’s needs?

The Implementers’ Needs Implementers must – Create code – Modify code – Reuse code

The Implementers’ Needs Implementers must – Create code Subtle connections must be adjusted for – Modify code How can you find it? What else will it effect? – Reuse code How can you integrate new code? Reuse this code? The difficulty is in the interconnectivity

Spaghetti vs. The Ideal Program … vs.

Goals: High-Quality Implementation Reducing interdependency (Low Coupling) – Proper cooperation easier to maintain – Changes don’t propagate – Reuse is facilitated Grouping functionality (High Cohesion) – Easier to find things – Metaphor guides decisions Both aid in dividing work

Design Notations Assuming we have a supportive plan… – How do we present it? – What representation will we use? Class Diagrams Interface specifications Textual Descriptions Sequence Diagrams Data Flow Diagrams Petri Nets + any of the notations from system design

Design Notations Each has its advantages and disadvantages Diagrams can – Help deal with complexity, abstract, give the big picture – Visualize the invisible: code objects, interactions, timing, etc. Text can explain Depends on the needs of the system too…

Goal: Helpfulness When designing, we must recognize the difficult work we are describing A design must help implementers keep complexity under control We must:

Goal: Helpfulness When designing, we must recognize the difficult work we are describing A design must help implementers keep complexity under control We must: – provide a plan that meets implementers’ needs – present the plan in a way that the implementers can understand

3 Goals of Implementation Design Provide a shared plan to follow – Consistency Ensure the plan meets its recipients’ needs – Helpfulness Ensure the solution is appropriate – Effectiveness

What makes a design effective? Quality of Service Security Reliability Scalability Portability Minimal Hardware Requirements Also still maintainability, testability, reusability Remember your system design!

Getting down to Business Existing notations may suit your needs – Created with existing wisdom – Will be more familiar to your implementers

The Class Diagram

Again: Implementers must code, maintain, reuse System’s needs

The Class Diagram Again: Implementers must code, maintain, reuse System’s needs But what classes do I need? – System design provides hints – Requirements’ emphasis can set priorities – What parts are likely to change or be reused? Carefully apply information hiding Create classes with “secrets”

Context may also guide classes Frames which classes to use Suggests I/O, interfaces, places for converters

Further Existing Wisdom Patterns provide insight into common issues More next week…

Data Flow Diagrams A more active depiction of the system 1. Context 2. Internal Processes

Sequence Diagrams Can describe usage scenarios – Might be especially useful in some games… Logic of services and transactions Can suggest classes and methods

Sequence Diagrams & Communication

Petri Nets Maybe communication is very dicey – A distributed system with concurrent processes Petri nets are a notation designed for this Not as common, but can be useful

User Interface Specification Could spend a whole year on it… May use existing components – This will guide what is possible – Needs to be determined early in some cases

User Interface Specification

Can explain: – UI layout itself, but… – Intended functionality – User experience – Simple sequences – Can imply specific implementation, given a particular API

Or something else entirely… Overhead of learning

Summary Must create an effective plan for implementers And ensure they can readily – Create code – Change code – Reuse code Must consider the system design’s needs A tricky balancing act…

Implementation Design in Context Goal Domain of Materials Representation Domain of Use Knowledge ActivityIdeas concern manipulates informs captures enhances

Next week Specific Domain wisdom about tackling software design problems Some walkthroughs Implementation design drafts due Thusday