Certification of Reusable Software Artifacts

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Data Dependencies Describes the normal situation that the data that instructions use depend upon the data created by other instructions, or data is stored.
CHAPTER 2 PROCESSOR SCHEDULING PART I By U ğ ur HALICI.
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
Best-First Search: Agendas
Information System Engineering
July 11 th, 2005 Software Engineering with Reusable Components RiSE’s Seminars Sametinger’s book :: Chapters 16, 17 and 18 Fred Durão.
VBA Modules, Functions, Variables, and Constants
Software Quality Control Methods. Introduction Quality control methods have received a world wide surge of interest within the past couple of decades.
1 Software Testing and Quality Assurance Lecture 15 - Planning for Testing (Chapter 3, A Practical Guide to Testing Object- Oriented Software)
Senior Design – Acceptance Test Plan Review The goal is to: define the criteria for approving the application. Tightly coupled to the Requirements document.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
RUP Implementation and Testing
Chapter 2 소프트웨어공학 Software Engineering 임현승 강원대학교
1 1 Slide © 2008 Thomson South-Western. All Rights Reserved Slides by JOHN LOUCKS St. Edward’s University.
Chapter 6 : Software Metrics
Testing -- Part II. Testing The role of testing is to: w Locate errors that can then be fixed to produce a more reliable product w Design tests that systematically.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
1 Chapter 23 Estimation for Software Projects. 2 Software Project Planning The overall goal of project planning is to establish a pragmatic strategy for.
Problem Solving Techniques. Compiler n Is a computer program whose purpose is to take a description of a desired program coded in a programming language.
COMP 208/214/215/216 – Lecture 8 Demonstrations and Portfolios.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Memory: Relocation.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Chapter 19 Verification and Validation.
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill/Irwin 8-1 Chapter Eight Audit Sampling: An Overview and Application.
Chapter 10 Algorithmic Thinking. Learning Objectives Explain similarities and differences among algorithms, programs, and heuristic solutions List the.
SOFTWARE TESTING. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity.
Software Quality Assurance and Testing Fazal Rehman Shamil.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Memory management The main purpose of a computer system is to execute programs. These programs, together with the data they access, must be in main memory.
Victoria Ibarra Mat:  Generally, Computer hardware is divided into four main functional areas. These are:  Input devices Input devices  Output.
Chapter 33 Estimation for Software Projects
Audit Sampling: An Overview and Application
Component 1.6.
Basic Scheme February 8, 2007 Compound expressions Rules of evaluation
Software Metrics 1.
Software Testing.
Hardware & Software Reliability
Testing and Debugging PPT By :Dr. R. Mall.
Coupling and Cohesion 1.
Chapter 9: Virtual Memory – Part I
Advanced OS Concepts (For OCR)
The Software Development Cycle
CS 641 – Requirements Engineering
CS 641 – Requirements Engineering
Software Processes (a)
Software Engineering (CSI 321)
(Additional materials)
Lecture 2 Introduction to Programming
Lecture 2 of Computer Science II
Software Engineering: A Practitioner’s Approach, 6/e Chapter 23 Estimation for Software Projects copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
INFS 6225 – Object-Oriented Systems Analysis & Design
Unit# 9: Computer Program Development
Chapter 9: Virtual-Memory Management
St. Edward’s University
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Programming Fundamentals (750113) Ch1. Problem Solving
Memory Management Tasks
Software Metrics “How do we measure the software?”
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Chapter 33 Estimation for Software Projects
System Testing.
Software Engineering: A Practitioner’s Approach, 6/e Chapter 23 Estimation for Software Projects copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
An Introduction to Debugging
Extreme Programming.
Basic Concepts of Algorithm
Engineering Design Process
Chapter 26 Estimation for Software Projects.
The Software Development Cycle
Presentation transcript:

Certification of Reusable Software Artifacts

Many (failed) reuse programs assume that software components that have been tested and used are candidates to be reused. However, testing is not enough to guarantee successful reuse of a component. Frequently additional testing, evaluation, and documentation are necessary for systematic, efficient reuse. The additional testing, evaluation, and documentation of software artifacts is called "certification."

The Need for Certification Suppose that a preliminary set of requirements has been developed for a new software system. At first glance, domain analysis and library or repository assessment (whether locally- developed or not) seem sufficient for successful software reuse.

Domain analysis lets the software engineer or manager determine the appropriate reusable assets that an ideal system would need. Assessment of available repositories allows the software engineer to determine if the desired reusable asset was available. If it were available, then the component could be included in the new system.

Typical software testing practice: • Many organizations require that each delivered source code module be tested according to organizational standards. • Perhaps each decision path within the module is to be executed by some test data during the testing phase. • If no errors occur, the module is assumed to be correct. • Correct modules are tested and then used.

Unfortunately, much more is necessary if the system is of any size or complexity. • Domain analysis is an abstraction and must allow for inexact, approximate matches between different terms. • Library search algorithms are imperfect and must rely on inexact approximations. • An artifact in a reuse library may undergo some degree of modification before it is placed into service in a new system.

Suppose the same module is reused in an application other than the one for which it was ordinarily created. • If the new application system has a real-time requirement, then it is not immediately clear that the module can be used in the new system, because of the new, real-time constraint.

If the documentation for the module included an estimate for an upper bound of the running time of the module, in terms of the size of the data the number of arithmetic operations the actual time in a particular environment then the module is a much more attractive candidate for reuse than an equivalent module without it.

The degree to which the artifact is reused should be reflected in the cost estimate for the new system. A source code module that is 90 percent unchanged from the original component in the reuse library should require less testing than a new source code component of the same size and complexity. The amount of testing would be different for 75% reuse and for 50 % reuse.

Certification is to be done in addition to testing Certification is to be done in addition to testing. Consider a source code module that is a candidate for inclusion in a reuse library. Good software engineering practice requires that a description of the module's interface number and type of arguments, return type, purpose, and algorithm be included in the documentation of the module. The documentation of the system is adequate for the initial application. There may be other problems of interface, standards, etc., for which the documentation is not adequate.

Suggestions for Certification of Source Code: • domain analysis • metrics At least: • Size of the interconnection to other modules. • Number of logical predicates in the module. • Stability of the module • Coding problems, such as memory allocation or pointer access

C code should be run through the lint utility if available. It should also be run through a C++ compiler to obtain more information about inconsistencies in: • number and type of arguments to a function • a function's return type.

Atomic operations Any source code that makes use of a shared system resource must be atomic. Atomic operations, once started, are either: • uninterruptable or else • essential data must be rolled back to a previous state if the CPU is interrupted.

Operating system calls can usually be assumed to be atomic Operating system calls can usually be assumed to be atomic. However, using the return values of user-defined functions that contain system calls within their code, instead of using system calls directly, may leave essential data in an inconsistent state if there is a context switch during that function's execution.

Standards Source code should be evaluated to make sure it meets: interface standards the organization's coding standards.

test plan A test plan and the set of test results should be available and linked to the module when both are placed into the reuse library.

untested logic Any untested logic in the module should be indicated in the module's documentation so that the probability of an untested logical error in the module when used in a new environment can be estimated.

documentation Documentation should indicate performance of the module in a real-time environment. Documentation should also indicate system resources needed for the module. Documentation should be read by a person not familiar with the module in its original setting.

Requirements Certification • domain analysis • Each entry in the requirements traceability matrix should be included in the domain analysis. • metrics function point metrics or similar • Cost estimates for previous systems built using requirements should be compared to the actual costs and deviations should be noted and explained.

Design Certification • domain analysis • metrics .. interconnection between modules. • cost estimates for the previous systems are compared to the actual costs and any unusual deviations should be noted and explained. • documentation The documentation should be read by a person not familiar with the module in its original setting.

Software reliability and quality The idea is to measure the number of errors and determine the pattern over time. This approach can help: • Determine when to stop testing. • Identify high quality systems. • Identify low quality systems (which are poor candidates for reuse).

The certify on demand approach ••• • Place all potentially-reusable components in a reuse library • Identify those components that are not certified with a special symbol or flag. • Domain analysis process and library search algorithms are the same as before.

Certify on Demand (continued) • If the component is certified, the component is used as desired, either as is, or with necessary modifications. This is exactly the same procedure as when all reuse library components are certified. • If the reuse library component is not certified, it should be given additional testing because it may not have been tested previously in the new environment for which it was intended.

Certify on Demand (continued) The idea of deferring an action is common in computer science: • deferred evaluation of operands in expressions • late binding in Lisp programs • lazy look-ahead in Pascal.

To delay the certification process until the software artifact is actually to be reused avoids some up front costs but can slow down the software development process at a critical stage. Two general rules of Biggerstaff (1987) are useful for considering this method: "Don't attempt to reuse something unless you intend to use it at least three times." "Don't attempt to reuse something unless you haven't already used it at least three times."