Document Details

Uploaded by Deleted User

Tags

software design interaction design usability software engineering

Summary

This document provides an overview of software design principles and concepts. It details the design process, software life cycle models, and usability considerations. It also discusses prototyping techniques and design rationale.

Full Transcript

Design - is all about achieving goals within constraints. Goals - what is the purpose of the design we are intending to produce? Constraints - What materials must we use? What platform must we use? Trade-off - Choosing which goals or constraints can be relaxed so that others can be met. The golden r...

Design - is all about achieving goals within constraints. Goals - what is the purpose of the design we are intending to produce? Constraints - What materials must we use? What platform must we use? Trade-off - Choosing which goals or constraints can be relaxed so that others can be met. The golden rule of design To err is Human - It is the nature of humans to make mistakes, Stages in the Interaction Design Process Requirements - what is there and what is wanted... – Is to gain an empathic understanding of the problem you are trying to solve. Analysis - ordering and understanding – This is where you will analyse your observations and synthesise them in order Design - what to do and how to decide – Designers are ready to start generating ideas. Iteration and Prototyping - Getting it right... and finding what is really needed! – Prototypes may be shared and tested within the team itself, Implementation and Deployment - Making it and getting it out there – Designers or evaluators rigorously test the complete product The Software Life Cycle Software engineering is the discipline for understanding the software design process, or life cycle Designing for usability occurs at all stages of the life cycle, not as a single isolated activity The Waterfall Model - each activity naturally leads into the next. Requirements specification - Designer and customer try capture what the system is expected to provide can be expressed in natural language Architectural design - High-level description of how the system will provide the services Detailed design - Refinement of architectural components and interrelations to identify modules to be implemented Coding and Unit Testing - Is possible to implement it in some executable programming language. After coding, the component can be tested to verify that it performs correctly Integration and Testing - Once enough components have been implemented and individually tested Maintenance - involves the correction of errors in the system which are discovered after release and the revision of the system services Verification - designing the product right Validation - designing the right product The traditional software engineering life cycles arose out of a need in the 1960s and 1970s Throw-away - The prototype is built and tested. Incremental - The final product is built as separate components, one at a time. Evolutionary - Prototypes differ according to the amount of functionality and performance they provide relative to the final product. Management issues Time - Building prototypes takes time and, if it is a throw-away prototype, it can be seen as precious time taken away from the real design task. Planning - Most project managers do not have the experience necessary for adequately planning and costing a design process which involves prototyping. Non-functional features - the most important features of a system will be non-functional ones, such as safety and reliability, and these are precisely the kinds of features which are sacrificed in developing a prototype. Contracts - Design process is often governed by contractual agreements between customer and designers which are affected by many of these managerial and technical issues. Techniques for Prototyping Here we will describe some of the techniques that are available for producing rapid prototypes. Storyboards - need not be computer-based and can be animated. Limited functionality simulations - some part of system functionality provided by designers’ tools like HyperCard are common for these Wizard of Oz technique Warning about iterative design - design inertia – early bad decisions stay bad diagnosing real usability problems in prototypes. Design rationale is information that explains why a computer system is the way it is. Benefits of design rationale – communication throughout life cycle – reuse of design knowledge across products – enforces design discipline – presents arguments for design trade-offs – organizes potentially large design space – capturing contextual information IBIS - Graphical issue-based information systems. Questions, Options and Criteria (QOC) PRINCIPLES TO SUPPORT USABILITY: Learnability – the ease with which new users can begin effective interaction and achieve maximal performance. Flexibility – the multiplicity of ways in which the user and system exchange information. Robustness – the level of support provided to the user in determining successful achievement and assessment of goals. Shneiderman's "Eight Golden Rules of Interface Design" These rules were obtained from the text designing the User Interface by Ben Shneiderman. 1. Strive for consistency. 2. Enable frequent users to use shortcuts. 3. Offer informative feedback. 4. Design dialog to yield closure. 5. Offer simple error handling. 6. Permit easy reversal of actions. 7. Support internal locus of control. 8. Reduce short-term memory load. Norman’s 7 Principles 1. Use both knowledge in the world and knowledge in the head. 2. Simplify the structure of tasks. 3. Make things visible: bridge the gulfs of Execution and Evaluation. 4. Get the mappings right. 5. Exploit the power of constraints, both natural and artificial. 6. Design for error. 7. When all else fails, standardize.

Use Quizgecko on...
Browser
Browser