Product Design Phases. Design Structured Walk-Through marks the end of the Analysis phase and the beginning of the Design phase –Recall the Structure.

Slides:



Advertisements
Similar presentations
Chapter 10: Designing Databases
Advertisements

Chapter 11 user support. Issues –different types of support at different times –implementation and presentation both important –all need careful design.
Lecture 1: Overview of Computers & Programming
Object-Oriented Analysis and Design CHAPTERS 12-14: INTRODUCTION TO DESIGN 1.
User Interface Design Notes p7 T120B pavasario sem.
Data - Information - Knowledge
Introduction To System Analysis and Design
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
File Systems and Databases
©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. COMPSCI 125 Introduction to Computer Science I.
Interpret Application Specifications
Principles and Methods
Chapter 1 Program Design
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Rensselaer Polytechnic Institute CSC 432 – Operating Systems David Goldschmidt, Ph.D.
1 DOS with Windows 3.1 and 3.11 Operating Environments n Designed to allow applications to have a graphical interface DOS runs in the background as the.
1 User Interface Design CIS 375 Bruce R. Maxim UM-Dearborn.
Chapter 4 Product Design. Objectives of Design  As all other aspects of object-oriented system development, design can be deployed in an iterative or.
User Interface Design Chapter 11. Objectives  Understand several fundamental user interface (UI) design principles.  Understand the process of UI design.
Microsoft Visual Basic 2005 CHAPTER 1 Introduction to Visual Basic 2005 Programming.
Lesson 4 Computer Software
System Design Chapter 8. Objectives  Understand the verification and validation of the analysis models.  Understand the transition from analysis to.
Introduction 01_intro.ppt
Chapter 10 Architectural Design
The Design Discipline.
State Machine Diagram Chapter 10. State Machine Diagram Used to describe system behavior.
UML Unified Markup Language Ziya Karakaya Atılım University, Computer Engineering
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
COMPUTER SOFTWARE Section 2 “System Software: Computer System Management ” CHAPTER 4 Lecture-6/ T. Nouf Almujally 1.
SOFTWARE ENGINEERING BIT-8 APRIL, 16,2008 Introduction to UML.
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Designing Interface Components. Components Navigation components - the user uses these components to give instructions. Input – Components that are used.
Introduction To System Analysis and Design
1.8History of Java Java –Based on C and C++ –Originally developed in early 1991 for intelligent consumer electronic devices Market did not develop, project.
MULTIMEDIA DEFINITION OF MULTIMEDIA
Discovering Computers Fundamentals Fifth Edition Chapter 9 Database Management.
Design Rules-Part B Standards and Guidelines
Database Design and Management CPTG /23/2015Chapter 12 of 38 Functions of a Database Store data Store data School: student records, class schedules,
1 Welcome to CSC 301 Web Programming Charles Frank.
Cohesion and Coupling CS 4311
User Support Chapter 8. Overview Assumption/IDEALLY: If a system is properly design, it should be completely of ease to use, thus user will require little.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
CIS 112 Exam Review. Exam Content 100 questions valued at 1 point each 100 questions valued at 1 point each 100 points total 100 points total 10 each.
1 CMPT 275 High Level Design Phase Modularization.
1 Software. 2 What is software ► Software is the term that we use for all the programs and data on a computer system. ► Two types of software ► Program.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Chapter 7 Operating Systems Foundations of Computer Science  Cengage Learning 1.
7.1 Operating Systems. 7.2 A computer is a system composed of two major components: hardware and software. Computer hardware is the physical equipment.
Microsoft Visual Basic 2012: Reloaded Fifth Edition Chapter One An Introduction to Visual Basic 2012.
Chapter 1 WHAT IS A COMPUTER Faculty of ICT & Business Management Tel : BCOMP0101 Introduction to Information Technology.
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Programming Logic and Design Seventh Edition Chapter 1 An Overview of Computers and Programming.
Human Computer Interaction Lecture 21 User Support
Algorithms and Problem Solving
CHAPTER
Object-Oriented Analysis and Design
System Design Ashima Wadhwa.
Unified Modeling Language
Software Design and Architecture
Unit 2 User Interface Design.
Introduction to Operating System (OS)
Java programming lecture one
Analysis models and design models
Algorithms and Problem Solving
Proper functionality Good human computer interface Easy to maintain
Programming Logic and Design Eighth Edition
Presentation transcript:

Product Design Phases

Design Structured Walk-Through marks the end of the Analysis phase and the beginning of the Design phase –Recall the Structure Walk-Through is given by the design team to a general audience –Objective is to present the developer’s view of the system and to gain confirmation of their understanding/proposed approach from the audience

Recap of UML (so far) Use Case Diagrams –Give a high level pictorial view of the system functionality Class Diagrams –Give a static view of system objects and their relationships

Analysis -> Design Goals of analysis –Understand the functional requirements –Represent the functional requirements in an unambiguous notation that will support design Goals of design –Represent/model the system –Models should support implementation UML/UCCD supports these goals –Provides a seamless progression between development phases

Design Phase The design phase will consist of two parts –Product Design –Class Design

Product Design versus Class Design Product design concerns itself with creating effective interactions –Between the system and human users –Between distributed elements of the system –Between software system and solutions for data persistence (e.g. database management systems) Class design concerns itself with determining class definitions: –Attributes –Method signatures –Class semantics

Product Design Primary goal of Product Design is to create effective interactions –Between processes that make up the system –Between systems that work together to solve the problem –Between the system and its users

Product Design (cont.) Process architecture design –The big picture Interprocess communication –How the processes within the big picture communicate with one another User interface –How users will communicate with the big picture

External Structure Software components that interact with external resources Database Files Networks Devices Users Everything else is internal structure and will be addressed during class design

Internal vs. External Structure In our simple drawing program example –External structure Output device (monitor, printer) Input device (mouse, tablet, touch-screen) File system (for loading/storing pictures) –Internal structure Circles, squares, triangles Operations on shapes

Internal vs. External Structure Example

Product Design Objectives Data Persistence –Saving system state –Accessing external data sources Process Architecture –Distributed/coordinated computation and resource use User Interface –How the user interacts with the system

Product Design Issues Data Persistence –Saving system state –Accessing external data sources Process Architecture –Distributed/coordinated computation and resource use User Interface –How the user interacts with the system

Data Persistence Scenarios for data persistence –User uses the system, stops the system, then starts it up again –System requires access to large amounts of data that cannot be completely held in memory –System requires simultaneous access to data objects –Fail-safe operation

Data Persistence (cont.) Three items of particular interest: 1)Objects (state of an object) that must be stored on permanent, long-term, large memory (e.g. disk) devices 2)The “state” of the system should be saved at the end of each use 3)The previous “state” of the system should be restored at the start of every run –Open files, pointers within files, preferences…

How To Implement Data Persistence? Database Management System? –Addresses first item but typically difficult to use within an object oriented designed system –Most database products are relational Store many similar item Primarily used for queries Must provide a translation for use with objects –Overkill for other two issues

Serialization A better approach to 2 and 3 Not suitable for large relational DBMS access Better suited to [relatively] small amounts of object-oriented data Literally stream the components from their ADT (object) form into individual bytes Store the bytes to disk in a serial (sequential fashion)

Serialization (cont.) Add-on to the C++ language (Microsoft Foundation Classes) Built in to the Java language –Saves the object type –Writes base/derived class data in “appropriate” order –Writes everything efficiently (how do we verify this?)

Serialization (cont.) Built in to the Java language (cont.) –Keeps track of aggregate references –Avoids circular references –Allocates object memory of proper size/type on read back Basically, it saves the programmer a lot of work If your language doesn’t support it, you’ll have to do it yourself

Translation If you must translate between a relational DBMS structure and an object-oriented structure… –You have work to do –These will be implementation specific details –You’ll likely create “translation” classes or interfaces or maybe just functions –We won’t go into this here

Back to Persistence Items to be considered with designing data persistence into a system –Security Restrict access to stored data Validate data on read Serialization usually creates binary (non-human readable) files

Why Binary? Less likely to have a user tamper with the file thus introducing errors or inconsistencies in the system A crude form of security

Evaluating Object Persistence Security –Hacker proof –Allows reconstruction in face of malicious use Information growth –Solution still works with increased data volume Concurrency –Concurrency solution allows for increased users

Back to Persistence (cont.) Items to be considered when designing data persistence into a system (cont.) –Data Growth If the amount of data in the system grows, can the persistence process handle it? Plan for evolutionary development

Back to Persistence (cont.) Items to be considered when designing data persistence into a system (cont.) –User Growth If the number of users of the system grows, can the persistence process handle it? Especially important if there are concurrent users Plan for evolutionary development

LMS Case Study: Object Persistence LMS may contain hundreds of thousands of book entries as well as thousands of other library resources such a volume of data does not permit object streaming A DBMS is called for to provide –Concurrent access by multiple users –Security enforcement of different access levels for various user categories –Allow for increased data capacity

LMS Case Study: Relational Representation of Data Relational TablesBook Resource List Patron Address Patron

Product Design Issues Data Persistence –Saving system state –Accessing external data sources Process Architecture –Distributed/coordinated computation and resource use User Interface –How the user interacts with the system

Process Architecture Software systems may consistent of processes interacting over a network Process architecture lays out the machines (nodes) that will host the processes making up the system Process architecture determines the behavior of the distributed processes Deployment diagrams are used to model distributed processes

Process Architecture (cont.) The system may consist of a set of cooperating processes that execute on one or more machines –The machines are called nodes –The processes are either threads or processes Functions must be mapped (assigned) to processes Processes must be mapped (assigned) to nodes –Why break a system into cooperating processes? This mapping is referred to as modeling

Why Cooperating Processes? Reuse Client/server application Process prioritization –Responsive to the user –Utilize idle time for background jobs …

Cooperating Processes Processes Multiple, concurrent operations in separate executable entities Communication is through message passing or special memory designated by the operating system Threads Multiple, concurrent operations within a single executable entity Communicate through message passing or shared memory designated by the program Processes and threads are both techniques used to achieve concurrency

Cooperating Processes (cont.) Implementation of processes and threads are a language-specific, library- specific, or operating-system specific detail –Java supports threads –C++ supports threads through operating system or library extensions

What is Modeling? Specify the functionality of each process Specify the communication requirements between processes Specify the nodes on which the processes will execute The last two may help to define whether the processes are threads or processes –Threads – must run on the same machine –Processes – may run on separate machines

Modeling (cont.) Goals of Modeling –Partitioning (mapping) for efficiency in the software engineering process It’s easier to visualize the system this way –Partitioning (mapping) for efficiency in the runtime environment The system runs “better” this way –These goals may contradict one another –More of an “art” than a “science”

Modeling and UML Processes are represented by Deployment Diagrams Threads are represented by Active Class Constructs But, the notation is somewhat flexible –The designer is given the freedom to define the notation that best suites the given need

Deployment Diagram Librarian Terminal Librarian Terminal Librarian Terminal Holdings DBMS workstation server key:

Deployment Diagram (cont.) Holdings DBMS Server Librarian Workstations

Sample Deployment Diagram Game Client Game Server Internet

Deployment Diagram (cont.) Flexibility is allowable because all we are trying to convey is the functional connectivity of the architecture –Intentionally lacking in detail

Interprocess Communication State Machines are the UML method for specifying the detail –This is a relatively simple method for specifying a potentially complex deployment diagram

Modeling Interprocess Communication Deployment diagrams show the distribution of process over multiple nodes but do not indicate how these processes communicate State machines may be used to model communication between processes The idea behind using state machines for modeling inter process communication is that the system enters a new state when messages are exchanged between processes

State Machines A universally accepted method for modeling and implementing process behavior Simple set of notational elements state-name Initial state Intermediate state Final state trigger State with substates Transition with Event trigger

State Machines (cont.) Processing begins at initial state Proceeds to intermediate states –Event triggered transition Leave one state, enter the next –Unconditional transition Processing in the state finishes (e.g. start state) –Concludes when the (a) final state is reached May be more than 1 final states

State Machines (cont.) Enter PasswordAuthenticate User characters typed typed valid user invalid user Login

Sample State Machine Showing Interprocess Communication Player Joining Game Get player name Select token { Client States} { Server State} Communicate remaining tokens player name available tokens selected token

State Machines (cont.) Like everything else, state machines will be developed through a series of refinements The process ends when all states are “self-explanatory” The process results in a hierarchy of state machines Root node of the hierarchy is the system itself

State Machines (cont.) Note that these are NOT flow charts!!! –Flow charts provide a one-to-one correspondence with code –State machines provide a one-to-one correspondence with architectural elements

Processes/Threads and State Machines State Machines designate communications between functional blocks –Note that you may have multiple state machines that reside on different platforms –The trigger events for one state machine may come from another (see page 126 of the text) They should provide some indication as to a “reasonable” partitioning/mapping into processes/threads States can be specified as residing in a particular process (no particular notation) Threads have their own notation

Thread Notation Active Class -- single process with multiple threads Representation takes us back to the Class Diagram DBMS Server class Client GUI class GetsUserID() Active Class

Product Design Issues Data Persistence –Saving system state –Accessing external data sources Process Architecture –Distributed/coordinated computation and resource use User Interface –How the user interacts with the system

User Interface The UI is the “Language” in which –User tells system what to do –System tells user what to do (or what it did) –System functionality – semantic –User manipulations – syntactic –Translator between the internals and externals of the system

User Interface (cont.) Application Functionality Internal Representations External Representations User Interface User

User Interface (cont.) But, more important than all that, the UI consists of interaction techniques –Well, more important to the customer/user at least –The translation is probably foremost on the minds of the designers

Interaction Techniques Input devices used to get information into and out of the system (from/to the user) This should be considered a separate issue from the actual functionality The application should not be dependent on the UI and vice-versa Want the flexibility to change the UI without changing the application

Information Content vs. Information Form Content – application functionality –What does the data represent –How is it stored Form – presentation of the data –How will the user input the data –How will the system output the data

Human-Computer Interaction In recent years this has become an independent field of study –University courses –International conferences –Technical journals –Books AKA “Ergonomics”, “Accessibility”, “Friendliness”…

Human-Computer Interaction (cont.) Five generally accepted design factors 1.Ease of learning 2.Speed of use 3.Frequency of user errors 4.User satisfaction 5.Knowledge retention I would add, “special needs” to the list

Human-Computer Interaction (cont.) The factors may be “mutually exclusive” –Consider emacs or vi (for you UNIX people) vs. NotePad –Consider command-line UNIX (or DOS) vs. Windows –In both cases, the command line can be much faster but is far more difficult to learn Bottom line – user satisfaction

User-Friendliness Easy to learn/remember instructions Context sensitive help –Maybe even tie this to your state machine Logical grouping of functionality –e.g. file functions under same menu item Graphical when possible Easy activation of functions –e.g. “hot-keys” for popular menu items

UI Design Principles Know/understand your user Follow “tried and true” design rules

Know/understand your user Three broad user categories (profiles) –Novice user Provide clear, concise instructions (hold their hand) Minimize possibility of error (keep it simple) –Knowledgeable, intermittent user “tool tips” (hints/reminders) Ability to “explore” without hurting anything –Frequent user Short cuts

Know/understand your user (cont.) Gather information on the user –Age –Gender –Physical abilities –Education –Cultural or ethnic background –Training –Motivation –Goals –personality

Know/understand your user (cont.) Potential users can be tested or surveyed for skill levels Most systems will need to address the entire spectrum of capabilities In general, the software engineer is NOT the best person to gather this information –I’ve seen it attempted before…it’s not pretty –Hire an ergonomic specialist

“Tried and True” design rules Be consistent –Especially applies to terminology Provide short-cuts –These will keep your frequent users happy and not overburden your novice users Offer useful, meaningful feedback –Audio, visual, or other sensory feedback –Video game controllers now have “rumble” feedback

“Tried and True” design rules (cont.) Offer a beginning and ending of each user input sequence (rest is the middle) –e.g. “submit” button Prevent catastrophic mistakes –Don’t allow invalid inputs (e.g. stop the problem before it starts) Verify deletion tasks –It’s just a nice thing to do

“Tried and True” design rules (cont.) Allow for reversal of actions –“undo” command User should be thinking about the task, not the interface –Strive for a transparent interface Do not rely on a user’s memory –Duplicate information if applicable –Context sensitive help is useful here –Tool tips are also very useful

“Tried and True” design rules (cont.) Display only relevant information –Don’t make the user search for the answer –Context sensitive help

Interaction Styles Menu Selection Form Fillin Command Language Natural Languga Direct Manipulation

Few UI Tools This is the stuff that “Visual Programming” is made of –Visual Programming(C++, Java...) –Visual Basic

Design Summary Create solution for object persistence Develop user interface designs Determine process architecture