Software Design. Introduction. Software Design (Introduction) SERG

Similar documents
Frequently Asked Questions about the NDIS

Software Engineering

ECE-492 SENIOR ADVANCED DESIGN PROJECT

12 Key Steps to Successful Marketing

Object Visibility: Making the Necessary Connections

Your message in Outlook will look something like the illustration below. Begin by right-clicking on the name of the attachment.

Programming assignment A

CHAPTER NINE. Messaging and texting. Introduction. Messaging is accessible

CS 575: Software Design

Discover How to Watch the Mass Ascension of the Albuquerque International Balloon Fiesta Even if You Can t Be There

1: Introduction to Object (1)

Virtualization. Q&A with an industry leader. Virtualization is rapidly becoming a fact of life for agency executives,

USING EVENTBRITE. A Guide for CLAPA Staff & Volunteers

Lesson 2. Introducing Apps. In this lesson, you ll unlock the true power of your computer by learning to use apps!

Moving to a New Business Phone System

CS 283: Assignment 1 Geometric Modeling and Mesh Simplification

Case study on PhoneGap / Apache Cordova

Heuristic Evaluation of igetyou

User-Centered Design Data Entry

Spam. Time: five years from now Place: England

Software Design Fundamentals. CSCE Lecture 11-09/27/2016

CS3205 HCI IN SOFTWARE DEVELOPMENT INTRODUCTION TO PROTOTYPING. Tom Horton. * Material from: Floryan (UVa) Klemmer (UCSD, was at Stanford)

Considerations for Mobilizing your Lotus Notes Applications

Learning to Provide Modern Solutions

2 How to Create a Killer Onboarding Process

Participants. Results & Recommendations. Summary of Findings from User Study Round 3. Overall. Dashboard

IMPORTANT WORDS AND WHAT THEY MEAN

Arduino IDE Friday, 26 October 2018

Back to ObjectLand. Contents at: Chapter 5. Questions of Interest. encapsulation. polymorphism. inheritance overriding inheritance super

A Tale Dark and Grimm

If Statements, For Loops, Functions

Window and Door Selection Made Easy. The Right Function The Right Style The Right Choices

What is the Best Way for Children to Learn Computer Programming?


Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur

HulloMail for Apple iphone Paid-for Version 2.1.X

How to set up a Personal Tax Account with HMRC

WHITEPAPER MOVING TO A NEW BUSINESS PHONE SYSTEM

Architectural Design

1 SEO Synergy. Mark Bishop 2014

ADOBE BUSINESS DIRECT SALES OUTBOUND TEMPLATES

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi.

Images help us relate to content, help us become involved. They help us to see ourselves in the science, rather than standing on the outskirts.

Google SketchUp Design Exercise 1

Work Smart: Make presence work for you

ProgressTestA Unit 5. Vocabulary. Grammar

I'm reposting here an I wrote since it was well-received on the CouchDB marketing list, but its formatting did not display well there.

1 5,9,2,7,6,10,4,3,8,1 The first number (5) is automatically the first number of the sorted list

Amyyon customers can t wait to get their hands on it s new application, developed in Uniface.

Unit Testing as Hypothesis Testing

Introduction to Programming

GETTING STARTED. User Story Mapping

EEN118 LAB FOUR. h = v t - ½ g t 2

UNCLASSIFIED. Representing Information Exchange Requirements. Version November Ian Bailey

Voice. The lost piece of the BYOD puzzle.

Extension Web Publishing 3 Lecture # 1. Chapter 6 Site Types and Architectures

So, you re child wants to sign up for Myspace...

Blu Ray Burning in MZ280 Step 1 - Set Toast up to burn a Blu-ray Video Disc.

CPSC 536N: Randomized Algorithms Term 2. Lecture 5

Notebook Assignments

Voice. The lost piece of the BYOD puzzle.

Amber Weyland: [to cameraman] Just hold it there so we can see Mollie.

Cold, Hard Cache KV? On the implementation and maintenance of caches. who is

Burning CDs in Windows XP

13 TIPS TO IMPROVE YOUR WEB SITE

SketchUp Quick Start For Surveyors

Chapter 5. Systems Analysis. McGraw-Hill/Irwin. Copyright 2007 by The McGraw-Hill Companies, Inc. All rights reserved.

Study Guide Processes & Job Control

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Priority Queues / Heaps Date: 9/27/17

1Password for Mac. by Marcia Bolsinga for AshMUG 1/12/2019

CS 4349 Lecture October 18th, 2017

Hello, welcome to creating a widget in MyUW. We only have 300 seconds, so let s get going.

THE MAGIC OF A MILLION DOLLARS BY MAIL!

YOUR NEW WEBSITE: How We Get From Here to There

The 9 Tools That Helped. Collect 30,236 s In 6 Months

The great primary-key debate

Introduction. A Brief Description of Our Journey

We turn hard problems into great software.

Additional reading for this lecture: Heuristic Evaluation by Jakob Nielsen. Read the first four bulleted articles, starting with How to conduct a

Chapter 1 What is the Home Control Assistant?

Unit Testing as Hypothesis Testing

Our Hall of Fame or Shame candidate for today is the command ribbon, which was introduced in Microsoft Office The ribbon is a radically

Filter and PivotTables in Excel

How to use your Participant Center for fundraising success! How to: Login

Excel programmers develop two basic types of spreadsheets: spreadsheets

STAUNING Credit Application Internet Sales Process with /Voic Templates to Non-Responsive Prospects 2018 Edition

Software Design. Levels in Design Process. Design Methodologies. Levels..

FRONT-END WEB DEVELOPMENT: THE BIG NERD RANCH GUIDE BY CHRIS AQUINO, TODD GANDEE

Last, with this edition, you can view and download the complete source for all examples at

The WideRuled Story Generator Tutorial Alex Mitchell Communications and New Media Programme National University of Singapore

Introduction to UML What is UML? Motivations for UML Types of UML diagrams UML syntax Descriptions of the various diagram types Rational Rose (IBM.. M

THINGS YOU NEED TO KNOW ABOUT USER DOCUMENTATION DOCUMENTATION BEST PRACTICES

Architectural Design

SECURITY AUTOMATION BEST PRACTICES. A Guide on Making Your Security Team Successful with Automation SECURITY AUTOMATION BEST PRACTICES - 1

Clean & Speed Up Windows with AWO

User-Centered Development

PAGE - 16 PAGE - 1. Sometimes, the solution is just a benchmark away..

The Embedded Linux Problem

Requirement Engineering within an Agile Environment BY KEJI GIWA. Digital Bananas Technology

Once you sign up for a CampDoc.com account, you will be able to register your camper, select a session and upload your camper s medical information.

Transcription:

Software Design Introduction

Software Design How to implement the what. Requirements Document (RD) is starting point. Software design is a highly-creative activity. Good designers are worth their weight in gold! Highly sought after, head-hunted, well-paid. Experience alone is not enough: creativity, vision, all-around brilliance required.

Software Design (Cont d) Some consider software design to be a black art : difficult to prescribe how to do it hard to measure a good design objectively I know a good design when I see it.

Requirements Engineering: An Overview Basic goal: To understand the problem as perceived by the user. Activities of RE are problem oriented. Focus on what, not how Don t cloud the RD with unnecessary detail Don t pre-constrain design. After RE is done, do software design: solution oriented how to implement the what

Requirements Engineering: An Overview Key to RE is good communication between customer and developers. Work from Requirements Document as guide.

Requirements Engineering Basically, it s the process of determining and establishing the precise expectations of the customer about the proposed software system.

The Two Kinds of Requirements Functional: The precise tasks or functions the system is to perform. e.g., details of a flight reservation system Non-functional: Usually, a constraint of some kind on the system or its construction e.g., expected performance and memory requirements, process model used, implementation language and platform, compatibility with other tools, deadlines,...

The Purpose of RE Raw user requirements are often: vague contradictory impractical or impossible to implement overly concrete just plain wrong The purpose of RE is to get a usable set of requirements from which the system may be designed and implemented, with minimal surprises.

Requirements Analysis leads to The RE Process produces Requirements Definition System Models Requirements Specification included in Requirements Definition Requirements Specification Software Specification Requirements Document Software Specification

The Requirements Document The official statement of what is required of the system developers. Includes system models, requirements definition, and requirements specification. Not a design document. States functional and non-functional requirements. Serves as a reference document for maintenance.

Requirements Document Requirements Should be easy to change as requirements evolve. Must be kept up-to-date as system changes.

The Requirements Document Should State... Foreseen problems: won t support Win-3.x apps Expected evolution: will port to MacOS in next version Response to unexpected events/usage: if input data in old format, will auto-convert

Requirements Document Structure Introduction (describe need for system) Functional Requirements Non-Functional Requirements System Evolution (describe anticipated changes) Glossary (technical and/or new jargon) Appendices Index

A Story... Dear Mr. Architect, Please design and build me a house. I am not quite sure of what I need, so you should use your discretion. My house should have between two and forty-five bedrooms. Just make sure the plans are such that bedrooms can be easily added or deleted. When you bring the blueprints to me, I will make the final decision of what I want. Also bring me the cost breakdown for each configuration so that I can arbitrarily pick one.

A Story (Cont d) Keep in mind that the house I ultimately chose must cost less than the one I am currently living in. Make sure, however, that you correct all the deficiencies that currently exist in my house (the floor of my kitchen vibrates when I walk across it, and the walls don t have nearly enough insulation in them). Also keep in mind as you design this house that I wish to keep yearly maintenance cost as low as possible. This should mean the incorporation of extra-cost features like aluminum or vinyl siding. If you chose not to specify aluminum, be prepared to explain in detail.

A Story (Cont d) Please take care that modern design practices and the latest materials are used in construction of the house. The house should be really nice. However, be alerted that the kitchen should be designed to accommodate among other things, my 1952 Gibson refrigerator. To assure that you are building the correct house for our family, make sure that you contact each of the children and also the in-laws. My mother-in-law will have very strong feelings about how the house ought to be designed since she visits with us at least once a year. Make sure that you weigh all these options carefully and make the right decision. I, however, retain the right to override any decision you come up with.

A Story (Cont d) Please don t bother me with small details right now. Your job is to develop the overall plans for this house. Get the big picture. It is not appropriate at this time to be choosing the color of the carpet. However, keep in mind that my wife likes green. Also do not worry at this time about acquiring resources to build this house. Your first priority is to develop detailed plans and specifications. However, once I accept these plans, I will expect to have the house under roof within 48 hours.

A Story (Cont d) While you are designing this house specifically for me, keep in mind that sooner or later I will have to sell this house. It should have appeal to potential buyers. Please make sure that before you finalize the plans, there is a consensus of the population in my area that they like the features this house has. You are advised to run up and look at my neighbor s house he had constructed last year. We like it a great deal. It has many features that we would like to have in our new home, particularly the 75-foot swimming pool. With careful engineering I believe that you can design this into our new house without impacting the construction cost.

A Story (Cont d) Please prepare a complete set of blueprints. It is not necessary at this time to do the real design since these blueprints will be used only for construction bids. Please be advised however, that any increase of cost in the future as a result of design changes will result in you getting your hands slapped. You must be thrilled to be working on such an interesting project such as this. To be able to use new kinds of construction and to be given such freedom in your designs is something that doesn t happen very often. Contact me as rapidly as possible with your design ideas. I am enthusiastic about seeing what you can come up with.

A Story (Cont d) P.S. My wife has just told me that she disagrees with many on the instructions I ve given you in this letter. As architect it is your responsibility to resolve these issues. I have tried in the past and have been unable to accomplish this. If you can t handle this, I ll have to look for a new architect. P.P.S. Perhaps what I need is not a house at all, but a travel trailer. Please advise me as early as possible if that is the case.

RE Summary RE focuses on determining what the customer wants, and not how it will be implemented. RE is hard to get correct; it requires good communication skills. Requirements may change over time. RE requires iteration.

RE Summary (Cont d) The customer often doesn t have good grasp of what he wants. Errors made at the requirements stage are very expensive to fix later. You might well implement the stated requirements correctly, but it won t be the system the customer really wants.

Back to Software Design...

Software Software architecture architecture High-Level (abstract) design Subsystem Subsystem decomposition decomposition Subsystem Subsystem dependencies dependencies Subsystem Subsystem interfaces interfaces module module or or class class decomposition decomposition module module or or class class dependencies dependencies Low-Level (detailed) design module or class module or class interfaces interfaces Data structures Data structures Algorithms Algorithms

Top-Down vs Bottom-Up Design Top-down Design: Start with a coarsely-grained view of system, and repeatedly refine components until you have concrete sub-components. Bottom-up Design: Start with existing components and glue them together to get what you want.

Top-Down vs Bottom-Up Design (Cont d) Top-down is the ideal of most design methods, but it s rarely followed absolutely: some branches of development are expanded before others are even started doesn t adequately account for reuse of existing components: COTS products, libraries, previous versions of the same system.

Design Quality Software design quality, as with other ideas on quality, is an elusive concept: It depends on priorities of your company and the customers: fastest to implement easiest to implement easiest to maintain, evolve, port most efficient/reliable/robust end-product.

Discussion What does quality mean to: IBM? Microsoft? Netscape? FAA? IRS? Intel?...

Some Desirable Design Attributes Hierarchical: A good design should be organized into a well-designed hierarchy of components. Modular: Separate distinct concerns (data and processing) into distinct containers (i.e., subsystems, modules, and/or classes). Hide implementation details and provide clean, simple interfaces for each container.

Some Desirable Design Attributes (Cont d) Independent: Group similar things together; limit the amount of special knowledge that unrelated components may share. If you change your mind about something, the impact will be localized.

Some Desirable Design Attributes (Cont d) Simple Interfaces: Endless flexibility adds complexity. Complex interfaces mean: hard to understand by users and developers (e.g., Unix man page syndrome) many possible variations of use inconvenient to change interface in order to eliminate bad options. You can get away with flexible interfaces in a low-level localized setting, but the larger the scale, the simpler the interface should be.