EIFFEL TEST STUDIO Locating faults in external code Master Thesis Project Plan

Similar documents
Reflection Library for Eiffel PROJECT PLAN

Contract Wizard II: Developing a GUI

Master Thesis Project Plan. Reusable Mathematical Models

Concurrency Patterns in SCOOP

Automatic Testing Based on Design by Contract

Trusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout

COMP 3500 Introduction to Operating Systems Project 5 Virtual Memory Manager

Spell Checker for EiffelStudio

Traffic 3.1 Getting Started

Guided Random-Based Testing Strategies Diploma Thesis

Wrapping a complex C++ library for Eiffel. FINAL REPORT July 1 st, 2005

Portland State University Maseeh College of Engineering and Computer Science. Proficiency Examination Process

Course specification

Eiffel: Analysis, Design and Programming. ETH Zurich, September-December Exception handling

Help! My Birthday Reminder Wants to Brick My Phone!

CS 536. Class Meets. Introduction to Programming Languages and Compilers. Instructor. Key Dates. Teaching Assistant. Charles N. Fischer.

Software Engineering. Unit Testing Gobo Eiffel Test and Clover

Einführung in die Programmierung Introduction to Programming

Embest IDE Pro for ARM 2005

Refinements and Git Integration with Notifications and Monitoring Software Engineering Laboratory: Open Source Eiffel Studio

Cleveland State University

18-642: Code Style for Compilers

Program Vulnerability Analysis Using DBI

Automated Fixing of Programs with Contracts

Parallelization Primer. by Christian Bienia March 05, 2007

TTh 9.25 AM AM Strain 322

Software Architecture Bertrand Meyer. Lecture 3: Language constructs for modularity and information hiding

CSE 333 Lecture 1 - Systems programming

CSCI 201L Syllabus Principles of Software Development Spring 2018

Computers and programming languages introduction

Enrollment. My Class Schedule / Weekly Schedule

COMPLEX SYSTEMS. Today. Complex Systems. Kinds of Systems. Embedded Systems. Software Engineering. Lectures 20: Engineering Complex Systems

Assertions. Assertions - Example

Syllabus of ENPM 691: Secure Programming in C

Debugging (Part 2) 1

CS 241 Data Organization using C

CUBE. Configuration Management Report. Hakan Nizamoğlu Yiğitalp Ertem Murat Toprak Saim Güveloğlu

Self-checking software insert specifications about the intent of a system

Goals for this lecture. Lecture 4 Getting Started with ITK! Getting help. Assignments. Assignments, cont. Grading of assignments

Einführung in die Programmierung Introduction to Programming

Using Intel VTune Amplifier XE and Inspector XE in.net environment

Com S 541. Programming Languages I

What Is Computer Science? The Scientific Study of Computation. Expressing or Describing

Regression testing. Whenever you find a bug. Why is this a good idea?

Steps for project success. git status. Milestones. Deliverables. Homework 1 submitted Homework 2 will be posted October 26.

BOSTON UNIVERSITY Metropolitan College MET CS342 Data Structures with Java Dr. V.Shtern (Fall 2011) Course Syllabus

Web Room Booking Procedure

DEBUGGING: DYNAMIC PROGRAM ANALYSIS

ECE 3210 Laboratory 1: Develop an Assembly Program

Intel Parallel Studio XE 2015

MDF4 Lib. Product Information

ECE 3574: Applied Software Design

SWE3004: Operating Systems. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Eiffel as a Framework for Verification

C File System File Functions EXPERIMENT 1.2

Introduction to computer networking

NightStar. NightView Source Level Debugger. Real-Time Linux Debugging and Analysis Tools BROCHURE

CSC180: Lecture 2. Wael Aboulsaadat.

Course specification

Introduction. Instructor: Jia Xu CSCI-135

EPICS Base Status and Plans. Ralph Lange for the EPICS Core Developers

Static program checking and verification

Bypassing Memory Leak in Modern C++ Realm

Both parts center on the concept of a "mesa", and make use of the following data type:

Lesson Plan for semester Started w.e.f (8 th Sem)

Intel Parallel Studio XE 2015 Composer Edition for Linux* Installation Guide and Release Notes

Course and Unix Intro

BATES COLLEGE. Master Calendar Automated Space Reservation System

Program Analysis and Code Verification

Compiling Techniques

Comprehensive Kernel Instrumentation via Dynamic Binary Translation

Outline. Threads. Single and Multithreaded Processes. Benefits of Threads. Eike Ritter 1. Modified: October 16, 2012

CSSE2002/7023 The University of Queensland

Scientific Programming in C IX. Debugging

Step by Step Guide for Graduate Students on the Electronic Submission of Thesis in the School of Arts and Sciences

Developing with L4 Overview and Pointers

CS 520 Theory and Practice of Software Engineering Fall 2018

w3.ualg.pt/~jvo/poo

Jackson Marusarz Software Technical Consulting Engineer

CS 378 (Spring 2003) Linux Kernel Programming. Yongguang Zhang. Copyright 2003, Yongguang Zhang

GUI Computer Simulator

Software Requirements Specification for Peer Tutoring Record Keeping

Quality Assurance in Software Development

Network Inventory Application

1 Long Term Goal. 2 What is to be done?

A web-based IDE for Java

CS 470G Introduction to Operating Systems

LEGACY SYSTEMS MODERNIZATION SERVICES.

Installing the Sample Files

Updating the Compiler?

Project 1 Balanced binary

Modern Buffer Overflow Prevention Techniques: How they work and why they don t

Topic 1: Introduction

Table 1 lists the projects and teams. If you want to, you can switch teams with other students.

CS2141 Software Development using C/C++ Debugging

Shuntaint: Emulation-based Security Testing for Formal Verification

SOFTWARE METRICS. Today. Metrics? Software Metrics. Definition of Metrics. Software Engineering

Trusted Components. Bertrand Meyer, Manuel Oriol. Lecture 7: Testing Object-Oriented Software. Ilinca Ciupa, Andreas Leitner, Bertrand Meyer

High Performance Radar Signal Processsing

Eclipse Guard: Relative Debugging in the Eclipse Framework

Transcription:

EIFFEL TEST STUDIO Locating faults in external code Master Thesis Project Plan Reto Ghioldi Department of Computer Science ETH Zürich September 6, 2005 Project period 8.September 2005-9.March 2006 Student name Reto Ghioldi Student no. 00-920-777 Status 9th semester E-Mail ghioldir@student.ethz.ch Supervisors Ilinca Ciupa, Andreas Leitner Supervising Professor Prof. Bertrand Meyer 1

1 Project Description 1.1 Overview Eiffel Test Studio is a tool for fully automatic testing of Eiffel classes, based on the contracts present in them [1]. However, external code (e.g. external C/C++ code) is usually not equipped with contracts. This means that often the manifestation of a bug occurs far from the actual location of the bug in the software and there is no indication of the type of error that occured. There are tools such as memory profilers or memory leak tracers that are able to detect some types of these software faults. 1.2 Scope of the work The aim of this project is to research if and how such a tool can be integrated into Test Studio to provide information about faults occuring in external code. 1.3 Intended results After the project s ending, there should be provided an analysis of theoretical and technical aspects of possible approches. requirements for external testing. a list of third-party tools able to fullfill these requirements. an implementation written in Eiffel/C. a set of use and test cases. a lasting link concept between Eiffel Test Studio and possible thirdparty analysis tools. a documentation and API description. an extensive technical report of all the results. 2 Background Material 2.1 Reading list 2.1.1 Object-Oriented Software Construction Several chapters from the well known book Object-Oriented Software Construction [3], in particular: 2

Chapter 1: Software quality Chapter 8: The run-time structure: objects Chapter 9: Memory management Chapter 11: Design by Contract: building reliable software Chapter 12: When the contract is broken: exception handling Chapter 17: Typing Chapter 28: The software construction process Chapter 34: Emulating object technology in non-o-o environments Chapter 35: Simula to Java and beyond: major O-O languages and environments 2.1.2 Valgrind publications The Valgrind developers [5] have written some interesting academic publications like Bounds-Checking Entire Programs Without Recompiling by Nicholas Nethercote and Jeremy Fitzhardinge [2004]. Dynamic Binary Analysis and Instrumentation by Nicholas Nethercote [2004]. Valgrind: A Program Supervision Framework by Nicholas Nethercote and Julian Seward [2003] 2.2 Tools Various tools will be used during the project time. The following incomplete list provides a shorten overall view Eiffel Studio 5.6 [6] Eiffel Test Studio 1.0+ [1] Valgrind 3.01+ (and other binary analysis tools) [4] GNU Compiler Collection (GCC) 3.4+ [7] ReadHat Linux L A TEX 3

3 Project Management 3.1 Objectives and priorities Objective Priority Carefull project schedule 1 Test requirements and tool selection which meet them 1 Technique to detect real bugs in external code 1 Generic adapter classes from TestStudio to an external tool 3 Plattform independance (related to the binary analysis tool) 3 Set of use cases and test classes 2 API description and further documentation 2 Technical report 1 3.2 Criteria for success With a proper integrated binary analysis tool and in connection with Eiffel Test Studio, it should be possible to detect bugs in external code. The test output should support the programer with comments and hints to crystalize the real bugs in extrenal code if there is any ambiguity. The new feature has to be integrated in the existing Eiffel Test Studio in a seamless and flexible way. The performance penalty of the tool integration is reduced to a minimum. 3.3 Method of work As development platform, Read Hat Linux with Eiffel Studio 5.6 will be used. The focus of the binary analysis tool will be on Valgrind [4]. For the source code exchange a concurrent versions system CVS [8] will be used. 3.4 Quality management Weekly meetings and a carefull schedule should help to reach the project goals and result into high quality code. 3.4.1 Documentation The documentation will be provided by a technical report, as well as an API description of the implementation and carefully commented code in the sense of design by contract [3]. 3.4.2 Validation steps A set of test classes and use cases will be developed. The implemented features should be able to detect more and more of these constructed pro- 4

gramming errors. The number of detected bugs and the tools output quality (comments and hints) can be used as a quality measure. 4 Plan with Milestones 4.1 Project steps After an analysis of the current system and the state of the art techniques for testing external code, a proof of concept implementation will be written. With such a base, the implementation should become as plattform independant as possible and shouldn t rely heavily on a third-party tool. Last but not least the comments and hints on real bugs should be improved. 4.2 Deadline On 9.March 2006 the project has to reach its end. 4.3 Tentative schedule In the following project schedule, each task is splitted up into phases 1. Analysis & Reading of background material 2. Design 3. Implementation 4. Testing 5. Review 6. Documentation A loopback to an earlier phases is always possible if the quality of the output isn t satisfactory. Grey frames in the following gant chart represent actual implementation work, milestones are printed black. 5

Setup Environement Month 1 Month 2 Month 3 Month 4 Month 5 Month 6 M1: Ready to Run Valgrind Analysis Eiffel Compilation TestStudio Analysis M2: Valgrind Presentation Adapter Framework Reference Test Cases M3: Framework Adapter Implementation Project Core Time Buffer M4: Prototype Output Refinement Thesis Report Documentation M5: Paper Thesis Report M6: Final Presentation The milestones of the projects are in detail M1 (Ready to Run): 2005-09 - 11 M2 (Valgrind, Presentation): 2005-10 - 03 M3 (Framework, Presentation): 2005-11 - 07 M4 (Prototype, Presentation): 2006-01 - 09 M5 (Printed Version of the Thesis Report): 2006-03 - 02 M6 (Final Project Presentation): 2006-03 - 09 6

References [1] Eiffel Test Studio: An Automatic Contract-Based Testing Environment; http://se.inf.ethz.ch/people/leitner/test studio/, consulted in September 2005. [2] Chair of Software Engineering: Semester- and Master projects; Online at: se.inf.ethz.ch/projects/, consulted in September 2005. [3] Bertrand Meyer: Object-Oriented Software Construction, 2nd edition, Prentice Hall, 1997. [4] Valgrind, a suite of tools for debugging and profiling Linux programs; Online at: www.valgrind.org, consulted in September 2005. [5] Academic publications written by Valgrind developers; Online at: http://valgrind.org/docs/pubs.html, consulted in September 2005. [6] EiffelStudio - A Complete Integrated Development Environment for Eiffel; Online at: www.eiffel.com, consulted in September 2005. [7] GCC, the GNU Compiler Collection, front ends for C, C++, Objective- C, Fortran, Java and Ada, as well as libraries for these languages (libstdc++, libgcj, etc).; Online at: www.gnu.org/software/gcc/gcc.html, consulted in September 2005. [8] CVS, the GNU Concurrent Versions System; Online at: http://www.nongnu.org/cvs/, consulted in September 2005. 7