INSE - Lecture 8 Design Tactics (2) - Modular structure u Notations for design documents u Verification of design.

Slides:



Advertisements
Similar presentations
The design process IACT 403 IACT 931 CSCI 324 Human Computer Interface Lecturer:Gene Awyzio Room:3.117 Phone:
Advertisements

Abstraction Lecture-4. ADT example: London Underground Map.
IT Requirements Capture Process. Motivation for this seminar Discovering system requirements is hard. Formally testing use case conformance is hard. We.
INSE - Lecture 4a Requirements Elicitation. Requirements Elicitation vs Specification [Many people in the industry confuse Requirements Elicitation with.
Summaries of brainstorm tutorials lesterk.myweb.port.ac.uk/inse/storms.
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.
The Comparison of the Software Cost Estimating Methods
CSCE 121, Sec 200, 507, 508 Software Engineering Fall 2010 Prof. Jennifer L. Welch.
Unit 251 Implementation and Integration Implementation Unit Testing Integration Integration Approaches.
System Design and Analysis
1 Introduction to Software Engineering Lecture 42 – Communication Skills.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Week 8 Implementation Design Alex Baker. Implementation Design System Design – Describes what the system should do Implementation Design – Describes what.
Chapter 1 Principles of Programming and Software Engineering.
CS 330 Programming Languages 09 / 16 / 2008 Instructor: Michael Eckmann.
Chapter 1 Program Design
School of Computer ScienceG53FSP Formal Specification1 Dr. Rong Qu Introduction to Formal Specification
Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
staffs.ac.uk Process Model. staffs.ac.uk Contents Provide definitions Explain the components and representations Introduce a step.
Introduction to Systems Analysis and Design Trisha Cummings.
Documenting Software Architectures
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
1 Shawlands Academy Higher Computing Software Development Unit.
Chapter 8: Systems analysis and design
1 Computing Software. Programming Style Programs that are not documented internally, while they may do what is requested, can be difficult to understand.
Top-Down Design and Modular Development
Requirements Engineering Requirements Elicitation Process Lecture-8.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
HCI in Software Process Material from Authors of Human Computer Interaction Alan Dix, et al.
National Commission for Academic Accreditation & Assessment Developmental Reviews at King Saud University and King Faisal University.
CHAPTER 6 - MODELING ANH AU. BACKGROUND Architectural model – an artifact that captures some or all of the design decisions that comprise a system’s architecture.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
I Power Higher Computing Software Development The Software Development Process.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Requirements Engineering Methods for Requirements Engineering Lecture-30.
Writing requirements specifications. Why we need requirements specifications To give structure to your desires To avoid waste of resources To avoid slippage.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Wrapup 1.
The Software Development Process
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Software Design Process
Systems Development Life Cycle
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
SEM510 Autumn 1996 Software Engineering u What is “Software Engineering” ? u It involves: Software, People, Applications, Methods, Tools and Practices.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Topic 4 - Database Design Unit 1 – Database Analysis and Design Advanced Higher Information Systems St Kentigern’s Academy.
MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software.
Formal Methods in Software Engineering1 Today’s Agenda  Mailing list  Syllabus  Introduction.
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.
Exceptions Lecture 11 COMP 401, Fall /25/2014.
Course: Software Engineering – Design I IntroductionSlide Number 1 What is a specification Description of a (computer) system, which:  is precise;  defines.
CSCI 383 Object-Oriented Programming & Design Lecture 7 Martin van Bommel.
Program Design. Simple Program Design, Fourth Edition Chapter 1 2 Objectives In this chapter you will be able to: Describe the steps in the program development.
© Chinese University, CSE Dept. Software Engineering / Topic 3: Software Engineering Principles Your Name: _____________________ Computer Science.
CSCE 240 – Intro to Software Engineering Lecture 3.
Enterprise Architectures Course Code : CPIS-352 King Abdul Aziz University, Jeddah Saudi Arabia.
Software Design and Development Development Methodoligies Computing Science.
In today’s lesson we will be looking at: what we mean by the software development lifecycle the phases in the lifecycle We will focus particularly on testing:
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Lecture 2 Introduction to Programming
Programming Logic and Design Fourth Edition, Comprehensive
Human Computer Interaction Lecture 14 HCI in Software Process
Top-Down Design & JSP Skill Area Part D
Presentation transcript:

INSE - Lecture 8 Design Tactics (2) - Modular structure u Notations for design documents u Verification of design

Modular program structure

What is a “ Module ” ? u What sized chunk of program is best for the “ component ” of design? (also of coding, test/debugging, documentation, re-use … ) u Mid-1960s to early 1970s dogma that a “ natural ” size chunk was “ of course ” a subroutine/procedure u because it was “ the only possibility ”.

Better thinking … u Around 1970 – increasing realization that the typical design decision is one of –we need this group of procedures; or –we need this data-structure (and procedures/functions to operate on it). (The Line between those is often unclear – the group of procedures usually imply some shared data, to be available to those procedures only.)

Implications of shared data … u Ideally we would like a “ defensive wall ” round such a bundle of facilities: e.g. if the procedures share a variable which no other procedure should use – a sort of “ group local ” variable. u That requirement of “ no other procedure should use ” is hard to enforce by hand – we need programming language support for it.

Two proposals: u The general proposal - –MODULES (Parnas, 1972) u The data-oriented proposal – –OBJECT-ORIENTATION (King, 1972) (i.e. OO is a restricted form of modularization) Languages to support/enforce them followed: –Ada (both supported) –Modula (modules only) –C++ (OO or nothing) –Smalltalk, Eiffel, Java … (OO only)

Modularization – summary u We now have languages to support the design approach; u Such a language isn ’ t essential, but it does ensure we catch unintended violations of modularity –especially important in bigger programs & in safety-critical programs; –especially to stop ham-fisted maintainers violating the design. u Many consequences to note as we work on through the lifecycle …

Ada Augusta, Countess of Lovelace, “ The first programmer ” - her programs were modular!

Notations for design documents

Design notation - issues u We had trouble with how to write down a specification without gaps, ambiguities, or clashes – u Now we have the same problem with design. u Again, there is a (loud) argument over the best way of doing so.

What are we describing? To decide what a design notation must achieve, we need to sharpen our ideas of what design is. DESIGN u is not vague implementation; u is the extraction of the principles of an implementation; u should reflect the requirements on an implementation; u should not anticipate the implementation.

But it ’ s not that simple! But: specification, design & implementation are points on a spectrum So to a large extent, the dividing lines between them are a matter of taste, or of need. u The spec could be regarded as the first level of design … u The implementation could be regarded as the last level – but that ’ s a more dubious idea.

So … … non-trivial designs need to be in layers of increasing detail. So we need u either a design notation capable of describing different layers of detail; u or different notations for different layers of detail. Obviously, too many different notations would be hard to work with.

Whichever … The notation must be able to describe u the principles of how the program works; u maybe what effect the program has when it is obeyed. (The “ how ” if often described in English, explaining a step between to levels of design.)

Audiences … The notation(s) should be readable by (at least): u the project manager; u the implementor; u quality assurance; u the trials engineer; u the maintainer. The all have different requirements, backgrounds, and work environments.

So what do we need? u Two main school of thought – u “ design is evolutionary ” in terms of modules/objects with spec as highest level – so write the design as “ specs of modules ” – so we need only a single notation. u “ spec says what to achieve, design says how, code realizes the design – different needs, so should be > 3 notations.

Some graphical notations u Let ’ s start with a specialist one u then look at some in widespread use.

MASCOT u Good for describing concurrent activities, and the communication between those activities – assumes you ’ ll use another notation for “ inside ” each activity. u Usually drawn by program from a standardized textual description – –checkable by programs; –more maintainable than “ pure ” graphics – in particular, each design refinement is (to some extent) checkable by programs.

Structure diagrams (including “ call graphs ” ) u A diagram of the design components of the program, and of which components use (or call) which. E.g. for a typical simple compiler:

(Variations on structure diagrams) u Annotations to a structure diagram can be useful for expressing information that doesn ’ t easily fit elsewhere: E.g. direction of flow of data between design components:

Data-flow diagrams u A box (circle, hexagon, etc) per data structure or file; u arrows to indicate flows between them.

Verification of design

Purpose of design verification u Making sure that the design covers the specification –correctly –completely. u Making sure that the freedoms left by the specification have been given appropriate design decisions.

Ideally... … verification would be by full formal- methods proof. u That would require formal speficiation and design. u Increasingly, there are programs available to do the necessary checks: every year they do more, and do it better.

Informal verification techniques Various forms of design review: u some selected people check the design –usually avoid people who were involved in the design itself –unless designers of different parts “ cross-check ” u the check might be for correctness or for quality or both u maybe check just the final design: maybe the check is continuous throughout the design process - both options have disadvantages.

Issues Many aspects of design reviews are matters of dispute: e.g. u who are the best checkers? –specialist checkers? –other practicing designers? u to what level of detail should the design go? /continues

(Issues - continued) u what is the best order in which to do the review? –top-down? –bottom-up? –front-to-back? –hardest-first? –random? –other? u how should it be administered? u how do you avoid personality clashes? u...

Design reviews - conclusion Different software producers have tried different combinations: each seems to have its own disadvantages; but everyone seems to feel that design reviews find enough errors to pay for themselves many times over and the choice of which combination seems not to change the benefits much … … so details are a management issue

After this lecture u think about your past programming efforts – did you use modularization well to separate things that should have been separate? u make prudent choices of design notations - match them to the need for the particular project. u do check designs! do make prudent choices of the checking method!

The Software Project Manager?