CHAPTER 5 THE TOOLS OF THE TRADE.

Slides:



Advertisements
Similar presentations
Slide 5.1 © The McGraw-Hill Companies, 2007 Object-Oriented and Classical Software Engineering Seventh Edition, WCB/McGraw-Hill, 2007 Stephen R. Schach.
Advertisements

ICS103 Programming in C Lecture 1: Overview of Computers & Programming
Lecture 1: Overview of Computers & Programming
Ch 3: Unified Process CSCI 4320: Software Engineering.
Programming Types of Testing.
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.
1 The Tools of the Trade Xiaojun Qi. 2 Stepwise Refinement Stepwise refinement is a basic problem- solving principle underlying many software engineering.
Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill, 2011 Stephen R. Schach.
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
5.1/68 The Tools of The Trade. 5.2/68 Overview l Stepwise refinement, l Cost–benefit analysis, l SW metrics, l Case – Taxonomy of CASE, – Scope of CASE,
Slide 11A.1 Copyright © 2004 by The McGraw-Hill Companies, Inc. All rights reserved. An Introduction to Object-Oriented Systems Analysis and Design with.
System Design and Analysis
CVS II: Parallelizing Software Development Author: Brian Berliner John Tully.
Chapter 1 Program Design
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 1 Introduction.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 Tools of Software Development l 2 types of tools used by software engineers:
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
Your Interactive Guide to the Digital World Discovering Computers 2012.
Chapter Seven Advanced Shell Programming. 2 Lesson A Developing a Fully Featured Program.
Introduction to Systems Analysis and Design Trisha Cummings.
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
Software Configuration Management
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
Slide 5.1 Copyright © 2011 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill,
1 Computing Software. Programming Style Programs that are not documented internally, while they may do what is requested, can be difficult to understand.
Slide 10.1 Copyright © 2011 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented and Classical Software Engineering Eighth Edition,
Discovering Computers Fundamentals Fifth Edition Chapter 9 Database Management.
1 Chapter 13 Understanding Computers, 11 th Edition 13 Program Development and Programming Languages TODAY AND TOMORROW 11 th Edition CHAPTER.
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
Cohesion and Coupling CS 4311
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
INTRODUCTION TO COMPUTING CHAPTER NO. 04. Programming Languages Program Algorithms and Pseudo Code Properties and Advantages of Algorithms Flowchart (Symbols.
Chapter 12: Design Phase n 12.1 Design and Abstraction n 12.2 Action-Oriented Design n 12.3 Data Flow Analysis n Data Flow Analysis Example n
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Slide 5.1 Copyright © 2008 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented Software Engineering WCB/McGraw-Hill, 2008 Stephen R.
Editors And Debugging Systems Other System Software Text Editors Interactive Debugging Systems UNIT 5 S.Sharmili Priyadarsini.
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.
Slide 5B.18 © The McGraw-Hill Companies, 2005 Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach.
Slide 13.1 © The McGraw-Hill Companies, 2002 Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
CASE (Computer-Aided Software Engineering) Tools Software that is used to support software process activities. Provides software process support by:- –
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Slide 5.1 Copyright © 2011 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill,
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 1 Introduction to Computers and Programming.
Slide 5.1 © The McGraw-Hill Companies, 2002 CASE (Computer-Aided Software Engineering) l Scope of CASE –Can support the entire life-cycle l Graphical display.
Chapter 4 Automated Tools for Systems Development Modern Systems Analysis and Design Third Edition 4.1.
Slide 5.1 Lecture 5 THE TOOLS OF THE TRADE. Slide 5.2 Overview l Stepwise refinement l Cost–benefit analysis l Divide-and-conquer l Separation of concerns.
Configuration Management
Chapter 1 Software Engineering Principles. Problem analysis Requirements elicitation Software specification High- and low-level design Implementation.
The Hashemite University Computer Engineering Department
Unit 17: SDLC. Systems Development Life Cycle Five Major Phases Plus Documentation throughout Plus Evaluation…
Chapter – 8 Software Tools.
CSCI 161 Lecture 3 Martin van Bommel. Operating System Program that acts as interface to other software and the underlying hardware Operating System Utilities.
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.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
CASE (Computer-Aided Software Engineering) Tools
System is a set of interacting or interdependent components forming an integrated whole.
Programming Logic and Design Seventh Edition Chapter 1 An Overview of Computers and Programming.
Slide 10.1 CHAPTER 10 OVERVIEW OF THE PREVIOUS CHAPTERS.
Principles of Programming & Software Engineering
Definition CASE tools are software systems that are intended to provide automated support for routine activities in the software process such as editing.
Object-Oriented Software Engineering WCB/McGraw-Hill, 2008 Stephen R
Computer Aided Software Engineering (CASE)
About the Presentations
Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach
Tools of Software Development
Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach
Chapter 1 Introduction(1.1)
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 Tools of Software Development l 2 types of tools used by software engineers:
Presentation transcript:

CHAPTER 5 THE TOOLS OF THE TRADE

Overview Analytical Tools Software metrics CASE Taxonomy of CASE Stepwise refinement Cost–benefit analysis Software metrics CASE Taxonomy of CASE Scope of CASE Software versions Configuration control Build tools

Stepwise Refinement A basic principle underlying many software engineering techniques “Postpone decisions on details until as late as possible to concentrate on the important issues” Miller’s law (1956) A human being can concentrate on at most 7±2 items at a time

Stepwise Refinement Case Study Design a product to update a sequential master file containing name and address data for monthly magazine True Life Software Disasters Three types of transactions Type 1: INSERT (new subscriber into master file) Type 2: MODIFY (existing subscriber record) Type 3: DELETE (existing subscriber record) Transactions are sorted into alphabetical order, and by transaction type within alphabetical order

Typical file of input transactions

Sequential master file update product Decompose Process Sequential master file update product

First Refinement

Stepwise Refinement Case Study (contd) Assumption We can produce a record when PROCESS requires it Separate INPUT and OUTPUT, concentrate on PROCESS What is this PROCESS?

Second Refinement

Third Refinement This design has a major fault What is it? “Modify JONES” followed by “Delete JONES”

Stepwise Refinement Case Study (contd) It is necessary to check each successive refinement before proceeding to the next So, how do we fix this fault? By using level 1 lookahead A transaction record is processed only after the next transaction record has been analyzed Do Problem 5.1 (pg. 132)

Stepwise Refinement Case Study (contd) After the third refinement has been corrected Details like opening and closing files have been ignored up to now Add such details after the logic of the design is complete Opening and closing files is Ignored in early steps, but essential later

Appraisal of Stepwise Refinement This basic principle can be used in Every phase Every representation The power of stepwise refinement The software engineer can concentrate on the relevant aspects of the current phase Warning Miller’s Law is a fundamental restriction on the mental powers of human beings (7±2 items at a time)

Cost–Benefit Analysis Another SE technique that can be used throughout the software life cycle to determine whether an action would be profitable Compare estimated benefits against costs Estimate costs Estimate benefits If benefits > costs then GO AHEAD! else DON’T! See KCEC Case Study (pg. 113)

Cost–Benefit Analysis (contd) Cost-benefit analysis it not always straightforward How can one measure the cost of someone trying to adjust to computerization? Tangible benefits/costs are easy to measure but intangible benefits/costs can be hard to quantify directly A practical way of assigning a dollar value to intangible benefits/costs is to make assumptions

Software Metrics To detect problems early, it is essential to measure Examples: Lines of code (LOC) per month Faults per 1000 lines of code

Different Types of Metrics Product Metrics Examples: Size of product (LOC) Quality of product (faults per 1000 LOC) Process Metrics Example: Efficiency of fault detection during development Metrics specific to a given phase Number of faults detected per hour in specification reviews

The Five Basic Metrics Size Cost Duration Effort Quality In Lines of Code Cost In dollars Duration In months Effort In person-months Quality Number of faults detected

CASE (Computer-Aided Software Engineering) Scope of CASE Can support the entire life-cycle Graphical display tools (many for PCs) Data flow diagrams Entity-relationship diagrams Structure charts Stage diagrams Class diagrams Interactions diagrams

Tool vs. workbench vs. environment Taxonomy of CASE UpperCASE (or front-end) versus lowerCASE (back-end) tools Tool vs. workbench vs. environment

Graphical Tool Additional features Online Documentation Data dictionary Screen and report generators Consistency checker; the various views are always consistent Specifications and design workbench Online Documentation Problems with Documenting Manually Updating Essential online documentation Help information Programming standards Manuals

Essential Coding Tools Coding tools (text editors, debuggers, and pretty printers) designed to Simplify programmer’s task Reduce frustration Increase programmer productivity Programming-in-the-small: refers to s/w development at the level of the code of a single module Programming-in-the-large: s/w development at the module level Programming-in-the-many: s/w development by a team of s/w engineers

Essential Coding Tools (contd) Conventional coding scenario for programming-in-the-small Editor-compiler cycle Editor-compiler-linker cycle Editor-compiler-linker-execute cycle “There must be a better way”

Syntax-Directed Editor “Understands” the implementation language Speeds up implementation User interface of an editor is different to that of a compiler There is no need to change thinking mode No mental energy is wasted on these adjustments One piece of system software, two languages High-level language of module Editing command language Pretty-printer is usually included Indentations to increase readability Boldface for reserved words

Online Interface Checker Example The programmer tries to call procedure computeAverage, but the linker cannot find it The programmer realizes that the actual name of the procedure is computeMean A structure editor must support online interface checking Editor must know name of every procedure Interface checking is an important part of programming-in-the-large

Online Interface Checker (contd) Example The user enters the call average = computeAverage (dataArray, numberOfValues); Editor immediately responds with a message such as Procedure computeAverage not known Programmer is given two choices Correct the name of the procedure Declare new procedure computeAverage and specify its parameters Enables full interface checking

Online Interface Checker (contd) Example Declaration of q is void q (float floatVar, int intVar, String s1, String s2); Call (invocation) is q (intVar, floatVar, s1, s2); Online interface checker detects the fault Help facility Online information as to parameters of method q Better: Editor generates a template for the call Shows type of each parameter Programmer replaces formal by actual parameter

Online Interface Checker (contd) Advantages No need for different tools with different interfaces Hard-to-detect faults are immediately flagged for correction Wrong number of parameters Parameters of wrong type Essential when software is produced by a team If one programmer changes the interface specification, all modules calling that changed module must be disabled

Online Interface Checker (contd) Remaining problem The programmer still has to exit from the editor to invoke the compiler (to generate code) Then, the linker must be called to link the product Must adjust to the JCL, compiler, and linker output

Operating System Front-End in Editor Single command go or run Use of the mouse to choose icon, or menu selection Causes editor to invoke the compiler, linker, loader, and execute the product

Source Level Debugger Example: Product executes terminates abruptly and prints Overflow at 4B06, or Core dumped, or Segmentation fault What do these mean?

Source Level Debugger (contd) The programmer works in a high-level language, but must examine Machine code core dumps Assembler listings Linker listings Similar low-level documentation Destroys the advantage of programming in a high-level language It would be nice to have error messages as shown in Figure 5.9 We need Interactive source level debugger (e.g., dbx – UNIX debugger)

Software Versions During maintenance, at all times there are at least two versions of the product: The old version, and The new version Two types of versions: revisions and variations

Revisions and Variations Version to fix a fault in the module (corrective maintenance) The new version is called a revision We cannot throw away an incorrect version Perfective and adaptive maintenance also results in revisions

Revisions and Variations (contd) Version for different operating system or hardware Variations are designed to coexist in parallel Figure shows (a) revisions, (b) variations

Configuration Control Every module exists in three forms Source code; object code; executable load image Configuration Version of each module from which a given version of a product is built

Version Control Tool Essential for programming-in-the-many First step toward configuration management Which version of each module is compiled and linked to the product? Given an executable load image, which version of each module went into it? Must handle Updates Parallel versions

Version Control Tool (contd) Possible notation printerDriver (laser) / 13 printerDriver (inkJet) / 25 Problem of multiple variations A solution: store just one variation and then store a delta (the list of differences) for each variation Version control is not enough – due to additional problems associated with maintaining multiple variations

Configuration Control and Maintenance Two programmers working on the same module mDual / 16 (current version) mDual / 17 & mDual / 18 Baselines A baseline: a configuration (set of versions) of all the modules in the product Copies any needed modules into private workspace After making changes, the programmer freezes the current version of the module – no other programmer may make changes to any frozen version Thus, only one programmer is allowed to make any changes to a module at any one time

Version and Configuration Control Tools UNIX version control tools SCCS (source code control system) RCS (revision control system) CVS (concurrent versions system) PVCS Popular commercial configuration control tool www.merant.com MS SourceSafe Configuration control tool for MS Windows http://msdn.microsoft.com/ssafe/

Build Tools Example Compares the date and time stamp on UNIX make Compares the date and time stamp on Source code, object code Object code, executable load image Can check dependencies Ensures that correct versions/variations are compiled and linked

Productivity Gains with CASE Tools Survey of 45 companies in 10 industries [Myers, 1992] 50% information systems 25% scientific 25% real-time aerospace Results About 10% annual productivity gains Justifications for CASE Faster development Fewer faults Easier maintenance Improved morale Read Chapter 5