Summaries of brainstorm tutorials lesterk.myweb.port.ac.uk/inse/storms.

Slides:



Advertisements
Similar presentations
Test Design and Documentation. Test Design Test design is to ensure that all requirements are met through a series of test procedures, increasing the.
Advertisements

INSE - Lecture 15  SE Project Management  This lecture is a brief overview –  mainly things to remember to do!
Lecture 6: Software Design (Part I)
CSC271 Database Systems Lecture # 18. Summary: Previous Lecture  Transactions  Authorization  Authorization identifier, ownership, privileges  GRANT/REVOKE.
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.
System Analysis (Part 1)
INSE - Lecture 11 Testing u Verification testing vs pursuit testing u Philosophy of testing u Stages of testing u Methods of testing u Design of test data.
Coding Practices. What are Coding Practices ? Coding practices are a set of informal rules that the software development community has learned over time.
© Copyright 2011 John Wiley & Sons, Inc.
Integration and System Testing CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 29, 2007.
Requirements Analysis Lecture #3 David Andrews
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
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.
Programming Fundamentals (750113) Ch1. Problem Solving
Chapter 8: Introduction to High-level Language Programming Invitation to Computer Science, C++ Version, Third Edition.
Chapter 2: Algorithm Discovery and Design
Chapter 2: Algorithm Discovery and Design
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
Process Analysis Essay Answers the following questions: – How do I do it? – How is (or was) it done? Leads to two types of process analysis: – Directive.
1 Shawlands Academy Higher Computing Software Development Unit.
INFO 637Lecture #81 Software Engineering Process II Integration and System Testing INFO 637 Glenn Booker.
Object Oriented Analysis and Design Introduction.
Top-Down Design and Modular Development
Program Design CMSC 201. Motivation We’ve talked a lot about certain ‘good habits’ we’d like you guys to get in while writing code. There are two main.
Chapter 2: Algorithm Discovery and Design Invitation to Computer Science, C++ Version, Third Edition.
Invitation to Computer Science, Java Version, Second Edition.
Copyright © 2012 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 6 Value- Returning Functions and Modules.
Program Development Life Cycle (PDLC)
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
FPGA-Based System Design: Chapter 6 Copyright  2004 Prentice Hall PTR Topics n Design methodologies.
CSE 219 Computer Science III Program Design Principles.
I Power Higher Computing Software Development The Software Development Process.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Intermediate 2 Software Development Process. Software You should already know that any computer system is made up of hardware and software. The term hardware.
CPS120: Introduction to Computer Science Lecture 14 Functions.
Flowcharting A Quality Improvement Tool. Quality = Inspection Statistical methods assisted in prevention of defects – The need for inspection declined.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Wrapup 1.
The Software Development Process
1 AVCE ICT Unit 7 - Programming Session 8 – Documenting your programs.
Introduction to programming Carl Smith National Certificate Year 2 – Unit 4.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Project Management Inspections and Reviews 1 February.
INSE - Lecture 8 Design Tactics (2) - Modular structure u Notations for design documents u Verification of design.
Hands-on Introduction to Visual Basic.NET Programming Right from the Start with Visual Basic.NET 1/e 6.
CSC 480 Software Engineering Test Planning. Test Cases and Test Plans A test case is an explicit set of instructions designed to detect a particular class.
CS451 Software Implementation and Integration Yugi Lee STB #555 (816) Note: This lecture was designed.
CS223: Software Engineering Lecture 4: Software Development Models.
Copyright © , Dennis J. Frailey, All Rights Reserved Day 2, Part 1, Page 1 1/11/2004 Day 2, Part 1 Estimating Software Size Section 2 Calculating.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Tevfik Bultan Lecture 4: Introduction to C: Control Flow.
From the customer’s perspective the SRS is: How smart people are going to solve the problem that was stated in the System Spec. A “contract”, more or less.
SYSTEM ANALYSIS AND DESIGN SAFAA S.Y. DALLOUL. DESIGN THE PROGRAM.
Today… Modularity, or Writing Functions. Winter 2016CISC101 - Prof. McLeod1.
© Chinese University, CSE Dept. Software Engineering / Topic 3: Software Engineering Principles Your Name: _____________________ Computer Science.
CSC 108H: Introduction to Computer Programming
CSE 219 Final exam review.
Systems Analysis and Design
Lecture 2 Introduction to Programming
Unit# 9: Computer Program Development
Objects First with Java
Hands-on Introduction to Visual Basic .NET
Component-Level Design
Programming Fundamentals (750113) Ch1. Problem Solving
Topics Introduction to Value-returning Functions: Generating Random Numbers Writing Your Own Value-Returning Functions The math Module Storing Functions.
Human Computer Interaction Lecture 14 HCI in Software Process
Top-Down Design & JSP Skill Area Part D
Functions, Procedures, and Abstraction
Presentation transcript:

Summaries of brainstorm tutorials lesterk.myweb.port.ac.uk/inse/storms

INSE - Lecture 7 Design  Introduction  Strategy  Tactics (1) - Reuse

Only 1.4 litres of brain...

Design - meeting the need This lecture -  objectives  strategy  re-use Next lecture -  modular structure  design notations - languages, diagrams, tools  verification of design

Antoine de St Expeury

Expeury ’ s philosophy of design Good design has been achieved not when there is nothing left to add, but when there is nothing more to take away. translated by Kit Lester

Objectives of design  The specification document is (ideally) a statement of what the system will achieve, not how it is achieved;  consequently one can seldom code directly from the code; so  design “ fills the gap ” –key decisions about the principles of “ how ” ; –usually goes through a number of increasingly detailed stages.  ?? The most creative/innovative stage of the lifecycle ??

The finished design... … should be correct and complete; understandable (at the “ right ” level of detail and no more!); maintainable in itself; actively helpful when maintaining the code (not just helpful when initially writing the code).

The “ obvious ” strategy  At first, design was “ drawing the flow diagram ” -  there was no discipline on the order of design decisions, but usually it came out as –design the introductory code, then –design the main code, then –design the concluding code;  that overlooks any decisions about design of data;  detailed decisions were often made early, biasing later large-scale decisions.

[Drawing the flow diagram … ]

Low level of flow diagrams  In practice, flow diagrams were often too detailed: –they are at “ too low a level ” for design; –they “ start at the start ” – not good when designing complexity; –they are poor at supporting maintenance, because a maintained flowchart often becomes a confusing jumble.  So they have fallen into dis-use in the design of large complex systems  But they remain useful for after-the-fact documentation of small pieces of code.

After flow diagrams SO:  Later systems are “ higher level ” than flow diagrams;  Later systems are also better for expressing multiple stages of design (whereas flow diagrams usually only express the final stage of design).

Subroutine-driven strategy The invention of “ subroutines ” led to a different strategy:  You ’ d have a library of subroutines;  You ’ d put sequences of subroutine-calls together to form larger components;  You ’ d put sequences of calls to those together …  … and so on until you had the final program. This is bottom-up design.

Weaknesses of bottom-up  Lashing components together often leads to something not quite what you wanted...  fixing it would require modified components;  modifying a component implies changes to sub- components, sub-sub-components …  this discourages you from coding too soon:  but the natural way to test is bottom-up...

“ Black box ” strategy So in the late ‘ 60s, people tried the exact opposite to bottom-up:  View the whole spec as a “ black box ” ;  Design how it should work in terms of next- level components: write a spec for each of those components;  Repeat until the components are each simple enough to code directly. This is top-down design.

R é n é D é scartes - top-down maths and philosophy in 1635.

Tree-structured designs  With either bottom-up or top-down –you wind up with a tree of components, –the “ root ” representing the spec of the “ main ” program component; –each subordinate representing a sub-component of a superior component.  But with bottom-up the tree is likely to be “ cross-linked ”.

Design strategy - conclusion So  top-down tends to lead to not-quite-identical components (i.e. poor reuse - expensive! & extra maintenance to be done … )  it is hard to test top-down (i.e. hard to test a component before it ’ s sub-components have been coded & tested);  bottom-up tends to lead to mis-fit with the spec. One solution: top-down near the top of the pyramid, bottom-up/reuse in the bottom layers.

Design strategy - decide! u The project manager has a decision to make!

Tactics (1)  Reuse of components

Reuse - Introduction  In the past – a lot of near-duplication of designed components of programs  therefore a lot of duplication of resulting code, testing, debugging … –expensive!! –hard to maintain!!  Increasingly: large software producers try to maintain libraries of –reusable code and –documentation of the detailed designs.

Technical consequences  new designs are worth doing to be more generally applicable (i.e. “ generic ” ) in order to be more reusable in other contexts in the future in the same software & also in future software;  designs need to be better documented;  tests need to be more generic as well – but then only need doing once for many reuses.

Not-so-technical consequences  How do we locate an appropriate component in a big library?  if something was written as part of software for one customer, is it legal (or ethical) to reuse it in software for other customers? - increasingly, that ’ s handled by suitable contract wording

After this lecture  review what strategy you actually used in your past programming efforts –flow-diagram? –bottom-up? –top-down? –some hybrid? –chaos?  could you have reused more?

T J Watson Snr was the founder of IBM