ICSE-17 Tutorials, Tuesday, April 25

Full-Day Tutorial T1
Software Process Improvement: Methods and Lessons Learned, Bill Curtis (TeraQuest Metrics Inc.)

The software engineering community is learning, as has virtually every other area of engineering, that advances in productivity and quality do not materialize just because technology has been thrown at a problem. A software process movement emerged in the mid-1980s when shortcomings in managing development and maintenance processes were recognized as prime inhibitors of growth in software productivity and quality. There is convincing evidence that companies undertaking serious process improvement programs can reduce the number of defects they deliver to customers by two orders of magnitude, while increasing productivity by a factor of two or three.

This tutorial will help participants understand how to systematically approach the improvement of their software development operations. By hearing lessons learned from successful process improvement programs, they will develop greater confidence in their ability to make needed changes in their software operations.

Full-Day Tutorial T2
Systems Requirements Engineering, Anthony Finkelstein (City University, London)
Requirements engineering is widely recognised as a priority area in the development of software-intensive systems and products. Recent progress in research on requirements engineering has given rise to a body of new concepts, methods and tools which are ready for industrial use.

The objectives of this tutorial are to introduce the important concepts in requirements engineering. Requirements engineering is the branch of systems engineering concerned with the real-world goals for, service provided by, and constraints on software-intensive systems. It is also concerned with the relationship of these factors to precise specifications of system behaviour, and to their evolution over time vvand across system families. The tutorial will address: the problems of establishing the goals, services, and constraints of a software- intensive system; the problems of using these goals, services and constraints as a basis for specifications of system behaviour; and the problems of managing requirements in the context of system evolution.

Full-Day Tutorial T3
Gathering Requirements using Contextual Inquiry: Knowing Your User, Anne Smith Duncan and Dennis Wixon (Digital Equipment Corporation)
This tutorial provides a foundation for conducting field research with customers and incorporating those findings into product development. How to incorporate Contextual Inquiry (CI) techniques into the development process will be explicitly addressed. Through a group exercise, the tutorial will also cover the limitations in traditional methods for requirements gathering. The distinctions of CI will be illustrated via an exercise which provides guidance and experience. Various alternatives to interviews as part of requirements gathering will be discussed; these alternatives include: post-observation inquiry, artifact walkthrough, future scenario, and prototype test- drive. Finally, the links between CI and quality processes, engineering methods, and usability techniques will be illustrated with examples.

Morning Tutorial T4a
Operational Profiles, John Musa (AT&T Bell Laboratories)
Operational profiles are rapidly spreading in software engineering practice. They make system testing more realistic and more efficient, they improve system engineering, and they provide a basis for better focusing software development. This tutorial will describe how to develop operational profiles and how to use them in software development; the connections between operational profiles and software reliability engineering will also be presented. The tutorial is particularly intended for engineers and managers who develop software- based systems, and for instructors and students in software engineering and computer science.

Afternoon Tutorial T4p
Improved Formal Technical Reviews: Beyond Fagan Code Inspections, Philip Johnson (U. Hawaii-Manoa)
Formal, group-based review of software artifacts is now recognized as a cornerstone of software quality assurance methods. Studies provide evidence that formal technical review (FTR) can be more effective at discovering errors than testing, and that it can discover different kinds of errors than testing. The most well-known and widely attempted FTR technique, Fagan code inspection, is almost 20 years old and is but one among many FTR methods. Some of these methods successfully challenge the conventional wisdom concerning FTR. Other methods explore the impact of computer support for FTR, in contrast to the entirely manual nature of inspection. This tutorial will provide researchers and practitioners with an overview of the spectrum of FTR methods that have been developed.

Morning Tutorial T5a
Understanding Software Productivity, Walt Scacchi (U. Southern California)
What affects software productivity and how do we improve it? This is a basic and recurring question in software engineering. Many within the software engineering are often asked to answer this question with respect to some new tool, technique, methodology or project management strategy. Unfortunately, most answers that are given are speculative in nature, and not grounded or substantiated with systematic empirical evidence. This tutorial will examine what is currently known and unknown about software productivity through (a) review and comparative analysis of published empirical studies and measures of software productivity, and what affects it, and (b) synthesizing what can be done to better measure, understand and improve software productivity.

Afternoon Tutorial T5p
Understanding Software Systems using Reverse Engineering Technologies, Hausi Müller (U. Victoria)
The need for maintaining and improving software and information systems has risen dramatically over the past decade. Re-engineering involves capturing, preserving, and extending knowledge about software, analyzing and understanding software, and finally changing, improving and evolving software. Reverse engineering is the process of generating new information about software (such as synthesizing abstractions and generating different views) and has been particularly useful in the re-engineering arena. This tutorial will concentrate on the program understanding aspects of re-engineering large, existing software and information systems; its primary purpose is to review the state of the art in program understanding, with particular focus on reverse engineering technologies in the context of software maintenance and evolution of information systems.

dsr

This information last updated Tue 10 Jan 1995