CSE 403 Lecture 5 [Notkin] Software requirements & Software design.

Slides:



Advertisements
Similar presentations
CHAPTER OBJECTIVE: NORMALIZATION THE SNOWFLAKE SCHEMA.
Advertisements

Software Design Fundamentals
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Database Systems: Design, Implementation, and Management Tenth Edition
Structured Design. 2 Design Quality – Simplicity “There are two ways of constructing a software design: One is to make it so simple that there are obviously.
OOAD Using the UML - Use-Case Analysis, v 4.2 Copyright  Rational Software, all rights reserved 1/18 Use Case Analysis – continued Control Classes.
1 Programming for Engineers in Python Autumn Lecture 5: Object Oriented Programming.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Communication Notation Part V Chapter 15, 16, 18 and 19.
What is an object? Your dog, your desk, your television set, your bicycle. Real-world objects share two characteristics: They all have state and behavior;
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Introduction to Databases Transparencies
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.
Describing Syntax and Semantics
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
System Design Decomposing the System. Sequence diagram changes UML 2.x specifications tells that Sequence diagrams now support if-conditions, loops and.
Computer Science 240 Principles of Software Design.
Software Engineering Case Study Slide 1 Introductory case study.
Domain Modeling (with Objects). Motivation Programming classes teach – What an object is – How to create objects What is missing – Finding/determining.
The chapter will address the following questions:
What is Software Architecture?
On Roles of Models in Information Systems (Arne Sølvberg) Gustavo Carvalho 26 de Agosto de 2010.
Dr. Pedro Mejia Alvarez Software Testing Slide 1 Software Testing: Building Test Cases.
OO Analysis and Design CMPS OOA/OOD Cursory explanation of OOP emphasizes ▫ Syntax  classes, inheritance, message passing, virtual, static Most.
UML Unified Markup Language Ziya Karakaya Atılım University, Computer Engineering
CS2110: SW Development Methods Design of methods (functions) Class design – CRC cards – UML class and sequence diagrams Software Design.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
CSCI-383 Object-Oriented Programming & Design Lecture 9.
CSE 303 – Software Design and Architecture
CS 350 – Software Design The Object Paradigm – Chapter 1 If you were tasked to write code to access a description of shapes that were stored in a database.
CSE584: Software Engineering Lecture 6 (November 10, 1998) David Notkin Dept. of Computer Science & Engineering University of Washington
Computer Science 240 © Ken Rodham 2006 Principles of Software Design.
Databases From A to Boyce Codd. What is a database? It depends on your point of view. For Manovich, a database is a means of structuring information in.
SOFTWARE DESIGN.
Copyright 2002 Prentice-Hall, Inc. Chapter 2 Object-Oriented Analysis and Design Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey.
Software Design Deriving a solution which satisfies software requirements.
CSE403 Software Engineering Autumn 2001 Design (Information Hiding) Gary Kimura Lecture #8 October 17, 2001.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
ECSE Software Engineering 1I HO 5 © HY 2012 Lecture 5 Formal Methods Isn’t this really getting old?
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
UML Use Case Diagramming Guidelines. What is UML? The Unified Modeling Language (UML) is a standard language for specifying, visualizing, constructing,
Requirements Engineering Methods for Requirements Engineering Lecture-30.
Requirements Analysis and Design Engineering Southern Methodist University CSE 7313.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
1 What is OO Design? OO Design is a process of invention, where developers create the abstractions necessary to meet the system’s requirements OO Design.
ME451 Kinematics and Dynamics of Machine Systems Vel. And Acc. of a Fixed Point in Moving Frame Basic Concepts in Planar Kinematics February.
Part VII: Design Continuous
Data Structures and Algorithms Dr. Tehseen Zia Assistant Professor Dept. Computer Science and IT University of Sargodha Lecture 1.
Week 2 Introduction to Data Modelling
Copyright ©2004 Virtusa Corporation | CONFIDENTIAL Requirement Engineering Virtusa Training Group 2004 Trainer: Ojitha Kumanayaka Duration : 1 hour.
© 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.
OOP (Object Oriented Programming) Lecture 1. Why a new paradigm is needed? Complexity Five attributes of complex systems –Frequently, complexity takes.
Object-Oriented Analysis and Design Use cases Finding classes Collaboration and Sequence diagrams Associations between classes.
Basic Concepts and Definitions
ITEC0724 Modern Related Technology on Mobile Devices Lecture Notes #2 1.
JavaScript Introduction and Background. 2 Web languages Three formal languages HTML JavaScript CSS Three different tasks Document description Client-side.
Lecture 15 Page 1 CS 236 Online Evaluating Running Systems Evaluating system security requires knowing what’s going on Many steps are necessary for a full.
1 7 Systems Analysis and Design in a Changing World, 2 nd Edition, Satzinger, Jackson, & Burd Chapter 7 The Object-Oriented Approach to Requirements.
CSCE 240 – Intro to Software Engineering Lecture 3.
Requirements capture: Using UML Use Cases David Millard and Yvonne Howard {dem,
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Wrap up. Structures and views Quality attribute scenarios Achieving quality attributes via tactics Architectural pattern and styles.
Software Design.
Lecture Software Process Definition and Management Chapter 3: Descriptive Process Models Dr. Jürgen Münch Fall
CSE 403, Winter 2003 Software Engineering
CSE403 Software Engineering Autumn 2000 Design (Overview)
Algorithms and Problem Solving
Use Case Analysis – continued
Presentation transcript:

CSE 403 Lecture 5 [Notkin] Software requirements & Software design

Today’s educational objectives Be able to distinguish a system’s requirements from a program that realizes those requirements Understand that the driving force behind design is managing complexity Non-objectives for today: make you great requirements engineers and/or great designers

Software requirements: your definitions?

Software design: your definitions?

What vs. How? A classic notion is that the requirements are the “what” and the program (design) is the “how” But “what” and “how” are relative terms Parsing is the what, a stack is the how A stack is the what, an array or a linked list is the how A linked list is the what, a doubly linked list is the how

The Machine and the World: Michael Jackson The requirements are in the application domain The program (design) defines the machine that has an effect in the application domain Ex: Imagine a database system dealing with books

Not a perfect mapping There are things in the world not represented by a given machine Examples might be: Book sequels or trilogies Pseudonyms Anonymous books There are things in the machine that don’t represent anything in the world Examples might be: Null pointers Deleting a record Back pointers

Success A system is judged not by properties of the program, but by the effects of the machine in the world You don’t care how Caller ID works, just that it works TCAS is a collision-avoidance system for commercial aircraft Pilots love it (on the whole) because it helps them fly more safely and easily — not because it has great data structures

Software failures More software projects fail because they don’t meet users needs than for any other reason

Three challenges To figure out the desired effects (requirements) of the machine in the world Beyond scope of class; not needed for GizmoBall To figure out how to write this down in an effective way To figure out how to make sure that the machine (program) you build satisfies the requirements More later in the quarter

Why write it down? It will help clarify what you think It is necessary to communicate with your users It is necessary to communicate with your team members It could form the basis for a contractual relationship

How to write it down? Natural language Structured natural language A formal language We’ll come back to this later in the quarter

Natural language Inherently ambiguous If you don’t believe it, make sure to teach or TA an undergraduate course sometime! You all have your favorite examples The one on the right is from Jackson, found at the base of an escalator

Well? Must I carry a dog? What about the shoes I just bought that are still in my shopping bag? Do dogs have to wear shoes? What does it mean to wear shoes? What are shoes? What are dogs?

“dog” (noun): OED has 15 definitions, Webster’s has 11 a highly variable domestic mammal closely related to the common wolf a worthless person any of various usu. simple mechanical devices for holding, gripping, or fastening that consist of a spike, rod, or bar FEET an investment... not worth its price an unattractive girl or woman

“shoe” (noun, 6 Webster’s) an outer covering for the human foot usu. made of leather with a thick or stiff sole and an attached heel another's place, function, or viewpoint a device that retards, stops, or controls the motion of an object a device (as a clip or track) on a camera that permits attachment of accessory items a dealing box designed to hold several decks of playing cards

Structured natural language I I.A I.A.ii I.A.ii.3 I.A.ii.3.q Although not ideal, it is almost always better than unstructured natural language Unless the structure is used as an excuse to avoid content You will probably use something in this general style

What is design? The activity that leads from requirements to implementation (verb) A description that represents a key aspect of this activity (noun)

Design space There are many designs that satisfy a given set of requirements There are also many designs that may at first appear to satisfy the requirements, but don’t on further study Collectively, these form a design space A designer walks this space evaluating designs

Design: managing complexity Of course, this design space isn’t just sitting out there for you to search like a library catalog or the WWW Although limited progress is being made on this You must also generate the designs A key aspect of design generation is understanding that the goal is to achieve the requirements in the face of the limitations of the human mind and the need for teams to develop products

Decomposition Design is largely a process of finding decompositions that help humans manage the complexity Understand that the design satisfies the requirements Allow relatively independent progress of team members Support later changes effectively Not all decompositions are equally good!

Decompositions A decomposition specifies a set of components (modules) and the interactions among those modules The degree of detail in the specification varies

Comparing designs Not all decompositions are equally good So, on what basis do we compare and contrast them?

Coupling and cohesion Given a decomposition of a system into modules, one can partially assess the design in terms of cohesion and coupling Loosely, cohesion assesses why the elements are grouped together in a module Loosely, coupling assesses the kind and quantity of interconnections among modules

Kinds of cohesion Elements can be placed together to provide an abstract data type if they are all executed about the same time (say, during initialization or termination) because they will be assigned to a single person because they start with the same letter because...

Coupling Coupling assesses the interactions between modules It is important to distinguish kind and strength kind: A calls B, C inherits from D, etc. And directionality strength: the number of interactions

“Good” vs. “bad” coupling Modules that are loosely coupled (or uncoupled) are better than those that are tightly coupled Why? Because of the objective of modules to help with human limitations The more tightly coupled are two modules, the harder it is to think about them separately, and thus the benefits become more limited

What kind (of relations)? There are many kinds of interconnections (relations) to consider calls, invokes, accesses, … how about invokes in an OO language using dynamic dispatch? others? Question: how many different relations are there among components of a software system?

names vs. invokes Here is an example of a mix of relations Module A registers interest with an event that B can announce When B announces that event, a function in A is invoked A knows the name of B, but B doesn’t know the name of A

Hierarchical designs Loose coupling is often associated with hierarchical designs They also tend to arise from repeated refinements of a design Hierarchies are often more coupled than they appear Because of other relations

Other dimensions (Bergland) Complexity A design with really complex modules is worse than a design with simpler modules Complexity is brutally hard to measure Correctness Correct designs dominate incorrect ones Correspondence How closely does it map to the requirements specification? This is critical to evolution!

Use a single module? Great cohesion! No coupling! Where’s the failure?

Coupling and cohesion… …are just guidelines Again, they don’t by themselves give criteria for modular decomposition

Whirlwind… …we’ll do more later on! Ask questions!