Design Constraints By: Tuan Ha Cohort: MCIS 21 Class: MISS 470.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

1 ICS102: Introduction To Computing King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science.
Regression Methodology Einat Ravid. Regression Testing - Definition  The selective retesting of a hardware system that has been modified to ensure that.
The Second System Effect and Self Discipline “Add little to little and there will be a big pile.” - Ovid.
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.
1 Chapter 4 - Part 1 Software Processes. 2 Software Processes is: Coherent (logically connected) sets of activities for specifying, designing, implementing,
Compiler Construction by Muhammad Bilal Zafar (AP)
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
CS-3013 & CS-502, Summer 2006 Virtual Machine Systems1 CS-502 Operating Systems Slides excerpted from Silbershatz, Ch. 2.
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
Program Design and Development
1 Building with Assurance CSSE 490 Computer Security Mark Ardis, Rose-Hulman Institute May 10, 2004.
Register Allocation (via graph coloring)
Microprocessors Introduction to ia64 Architecture Jan 31st, 2002 General Principles.
PowerPoint Presentation for Dennis, Wixom & Tegarden Systems Analysis and Design Copyright 2001 © John Wiley & Sons, Inc. All rights reserved. Slide 1.
Register Allocation (via graph coloring). Lecture Outline Memory Hierarchy Management Register Allocation –Register interference graph –Graph coloring.
Testing HCI Usability Testing. Chronological order of testing Individual program units are built and tested (white-box testing / unit testing) Units are.
1 Today More on random testing + symbolic constraint solving (“concolic” testing) Using summaries to explore fewer paths (SMART) While preserving level.
Chapter 3 Planning Your Solution
Programming. Software is made by programmers Computers need all kinds of software, from operating systems to applications People learn how to tell the.
Design, Implementation and Maintenance
Software System Integration
Introduction To C++ Programming 1.0 Basic C++ Program Structure 2.0 Program Control 3.0 Array And Structures 4.0 Function 5.0 Pointer 6.0 Secure Programming.
Chapter 1: Introduction To Computer | SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2005 | Last Updated: July 2005 Slide 1 Introduction To Computers.
Data Structures and Programming.  John Edgar2.
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
Chapter 7: The Object-Oriented Approach to Requirements
Lesson 4 Computer Software
1 Chapter-01 Introduction to Computers and C++ Programming.
Solid Performance Solutions This presentation was created to give you the ideas and support to present “Rethinking New Product Training Development” in.
Fruitful functions. Return values The built-in functions we have used, such as abs, pow, int, max, and range, have produced results. Calling each of these.
1 Shawlands Academy Higher Computing Software Development Unit.
SOFTWARE TESTING STRATEGIES CIS518001VA : ADVANCED SOFTWARE ENGINEERING TERM PAPER.
Simple Program Design Third Edition A Step-by-Step Approach
Algorithms and Programming
AGENDA Introduction to Virtual Mechanic Demo Architectural diagram and summary QA steps and user acceptance testing Bugs in the software Feedback from.
Program Development Life Cycle (PDLC)
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
Problem Definition Chapter 7. Chapter Objectives Learn: –The 8 steps of experienced problem solvers –How to collect and analyze information and data.
Chapter 3 Developing an algorithm. Objectives To introduce methods of analysing a problem and developing a solution To develop simple algorithms using.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
Programming for Beginners Martin Nelson Elizabeth FitzGerald Lecture 5: Software Design & Testing; Revision Session.
Developing an Algorithm
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Memory: Relocation.
Design Concepts By Deepika Chaudhary.
By Teacher Asma Aleisa Year 1433 H.   Goals of memory management  To provide a convenient abstraction for programming.  To allocate scarce memory.
Operating System Principles And Multitasking
Developing an Algorithm. Simple Program Design, Fourth Edition Chapter 3 2 Objectives In this chapter you will be able to: Introduce methods of analyzing.
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.
FORTRAN History. FORTRAN - Interesting Facts n FORTRAN is the oldest Language actively in use today. n FORTRAN is still used for new software development.
Software Design Chapter 11. Purposes of Design Design transforms the specification into a design. The end purpose of the design is to produce detail and.
The Whole and the Parts Chapter 13. Top-Down Design Top-Down design helps in the following ways. 1. Clarity of structure and representation makes the.
Chapter 5 How are software packages developed?. What are the main steps in software project development? Writing Specifications - Analysis Phase Developing.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
CSIS 4850: CS Senior Project – Spring 2009 CSIS 4850: Senior Project Spring 2009 Object-Oriented Design.
Efficiently Solving Computer Programming Problems Doncho Minkov Telerik Corporation Technical Trainer.
CMSC 2021 Software Development. CMSC 2022 Software Development Life Cycle Five phases: –Analysis –Design –Implementation –Testing –Maintenance.
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.
Your current Moodle 1.9 Minimum Requirements Ability to do a TEST RUN! Upgrading Moodle to Version 2 By Ramzan Jabbar Doncaster College for the Deaf By.
AS Level Computing 8 CHAPTER: Fundamentals of structured programming The basics of good programming Algorithms System Flow Charts Symbol Conventions Steps.
CSC 108H: Introduction to Computer Programming
Module 11: File Structure
Compiler Construction (CS-636)
Designing and Debugging Batch and Interactive COBOL Programs
Software System Integration
Operating Systems.
CSE 303 Concepts and Tools for Software Development
CHAPTER 6 Testing and Debugging.
Presentation transcript:

Design Constraints By: Tuan Ha Cohort: MCIS 21 Class: MISS 470

The Second-System Effect Self Discipline The architect’s first work is spare and clean  Cautious  Grand ideas set aside

The Second-System is dangerous 3 rd systems and later versions generally confirm each other 2 nd system tends to be over-designed Grand ideas are attempted ie: IBM 709 architecture was a second system of 704. only half features were regularly used

How the programmer avoids the 2 nd System Effect Be aware of the hazards Avoid functional ornamentation Make sure functions are purposeful Assign each little function a value - capability x is not worth more than m bytes and n microseconds

How the project manager avoids the 2 nd System Effect Senior Programmer with not less than 2 systems under his belt Ask the right questions during development

Chapter 13 The Whole and the Parts  Designing the bugs out  Component Debugging  System Debugging

Designing the bugs out Bug proof the definition  Conceptual integrity Easy to use Easier to build Less subject to bugs  Careful function definition, careful specification, and avoiding frills of function all reduce the number of system bugs found

Designing the bugs out (cont) Testing the specification  Spec must be handed to an outside testing group Top-down design  Niklaus Wirth (1971)  Sketch out rough task definition and rough solution method that achieves principal result  Examine definition more closely How does the result differ from what is wanted?

Designing the bugs out (cont) Top-down design (cont)  Take large steps of solution and breakdown  Each refinement in definition of task becomes a refinement in the algorithm for the solution  Modules become identifiable Modules can become separated and developed independently  High-level notation is encouraged Exposes concepts

Designing the bugs out (cont) Top-down design avoids bugs  Clarity of structure identifies requirements and functions of modules easier  Partition and independence of modules avoids system bugs  Suppression of detail makes flaws more apparent  Design can be tested at each refinement step so that testing can start earlier with proper focus

Designing the bugs out (cont) Structured programming  Use control structures consisting only of DO WHILE Loops IF… THEN Conditions GO TO branches produces errors  Think about control structures as control structures of a system, not as individual branch statements

Designing the bugs out (cont) Component Debugging  On-machine debugging Early machines had painfully slow I/O Design of this debugging method took half as long as writing the actual program  Memory dumps High-speed printers made it possible to dump memory at the end of a failed program Still required desk time to debug but minimized computer time use

Designing the bugs out (cont) Component Debugging  Snapshots As memory grew exponentially, techniques for selective dumping, selective tracing, an inserting snapshots into memory without having to reassemble or recompile  Interactive debugging Time shared debugging One computer with multiple programs that could be tested from terminals. Machines kept busy

Designing the bugs out (cont) System Debugging  Begin only after pieces seem to work  Sooner put together, sooner system bugs emerge

Designing the bugs out (cont) System Debugging  Build programs and data for tests only Dummy components  faked data Miniature file  Issues with formats for tape and disk files  few records but all pointers and descriptions Auxiliary programs  test data generator, analysis printouts, cross-reference table analyzers

Designing the bugs out (cont) System Debugging  Control Changes One person in charge  Of component changes and version substitution Controlled copies  Latest version locked up for component testing  Test copy with latest fixes being installed  Play pen copy for individuals to develop their own components with

Designing the bugs out (cont) System Debugging  Add one component at a time Have thorough test cases  Test partial systems after each new piece added Old test cases must be rerun to test for system regression

Designing the bugs out (cont) Quantize updates  Changes need to be quantized Component builders will have hot new versions Replacing an existing component will require testing Is it too disruptive?