Date: Mon, 3 Jul 95 21:47:34 EDT
From:
[email protected] (Dave Parnas)
Subject: Two Short-Courses on Software Engineering
McMaster University
Faculty of Engineering
presents
Two Short-Courses on Software Engineering
SOFTWARE DESIGN: AN ENGINEERING APPROACH
-----------------------------------------
August 8-12, 1995
INSPECTING CRITICAL SOFTWARE
----------------------------
August 15-17, 1995
instructed by
Prof. David L. Parnas
Department of Electrical and Computer Engineering
McMaster University's Faculty of Engineering is pleased to present two
courses on Software Engineering. "Inspecting Critical Software" was
presented last summer and was well received by all who attended. "Software
Development: An Engineering Approach" a course previously taught on-site at
several development organizations, provides a broader, more basic,
introduction to software design principles and will be useful for those
developing software that does not require critical inspection. It is aimed
at engineers who want to know how to design software well.
THE INSTRUCTOR
Dr. David L. Parnas is an internationally known expert and researcher in the
area of software engineering. He is well known as the first person to write
about "information hiding" which is the basis of modern "object-oriented"
techniques. He has also been a leader in the development of mathematical
models for software description. Dr. Parnas, whose motto is "connecting
theory to practice", initiated and led the US Navy's Software Cost Reduction
project. He has also been a consultant to the Canadian Atomic Energy
Control Board, U.S. Navy, IBM's Federal Systems Division and many other
organizations. He has won several "best paper" awards, has an honorary
doctorate from the ETH in Zurich, and has provided education for many
industrial organizations. He is a project leader for the Telecommunications
Research Institute of Ontario. Dr. Parnas is a Fellow of the Royal Society
of Canada, a Fellow of the ACM, and a Senior Member of the IEEE.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SOFTWARE DESIGN: AN ENGINEERING APPROACH
A Practical 4-day Course
BACKGROUND
Although the process and technology of software development has
been the subject of serious study for three decades, the results of
this study have not found their way into engineering practice.
Engineers learn about programming language and other tools from
manuals and "hard knocks"; they rely on their intuition instead of
well-established software-design principles. This course teaches
a better approach.
CONTENT
This 4-day course has been created to teach design, documentation
and validation principles to those who are now building software in
their day-to-day work or as a profession. It shows how to use
engineering approaches in software design and provides some
introductory experience in using the notations and techniques that
are presented. A working example will be used throughout the four
days, providing continuity to illustrate the principles and
techniques of the course. This practical course is intended for
professionals who are skilled in one or more computer languages,
and are looking for design principles and analytical techniques.
PROGRAM
Monday
08:00-10:00 Overview of the Software Development Process
10:15-12:00 Mathematics for Software Engineering
13:00-14:15 Exercise: Describing Software Mathematically
14:30-16:00 Functional Documentation of Computer Systems
16:15-17:00 Exercise: Controlled and Monitored Variables
Tuesday
08:00-09:30 Documenting Requirements Part I - The 4 Variable Model
09:45-11:00 Documenting Requirements Part II - Notation
11:00-12:00 Exercise: Requirements
13:00-13:30 Discussion: Requirements
13:30-14:45 Exercise: Requirements (cont'd.)
15:00-16:00 Module Structure: Basic Information Hiding/Abstraction
16:00-17:00 Exercise: Module Structure
Wednesday
08:00-09:00 Module Structure: More Complex Systems
09:15-09:45 Module Structure Revisited
10:00-11:00 Design of Module Interfaces
11:00-12:00 Exercise: Module Interface Design
13:00-14:30 Module Interface Specifications
14:45-16:00 Exercise: Interface Specifications
16:00-17:00 Hierarchical Structure in Software Design
Thursday
08:00-10:00 Internal Module (Program) Documentation
10:15-11:00 Exercise: Program Design for Bicycle Speed Displays
11:00-12:00 Full Documentation of a Circular Queue
13:00-14:30 Quality Assurance for Critical Software
14:45-16:00 Software Aging
16:00-17:00 Final Discussion
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
INSPECTING CRITICAL SOFTWARE
An Intensive 3-day Course
BACKGROUND
Software is critical to the operation of modern companies and is
frequently a key component of modern products. Some pieces of
software are particularly critical; if they are not correct, the
system will have serious deficiencies. Systematic inspection is
essential. This course teaches a procedure for software inspection
that is based on a sound mathematical model and can be carried out
systematically by large groups.
The software inspection procedure combines methods used at IBM,
work originally done at the U.S. Naval Research Laboratory for the
A-7E aircraft, and procedures applied to the inspection of software
at the Darlington Nuclear Power Generating Station. The method has
been refined and enhanced by the Software Engineering Research
Group at McMaster University. It can be applied to software
written in any imperative programming language.
CONTENT
This 3-day course will give participants an understanding of the
way that mathematics can be used to document and analyze programs.
Participants should be experienced programmers and willing to use
some basic mathematics. The mathematics is classical and takes up
only a few hours of the course, however, it is fundamental to the
method. It is expected that the participants will be accustomed to
reading code written by others and it will be helpful if they can
read Pascal.
The method is language independent. On the third day, participants
inspect code written in a language that they use in their
workplace. This course presents an approach to active design
reviews that has the reviewers writing precise documentation about
the program and explaining their documentation to an audience of
other reviewers. A significant part of each day is spent using the
ideas that have been presented. On the last day, participants
inspect a small program that they bring with them from their
company. In previous courses, unexpected discrepancies were found
in every program that was inspected.
PROGRAM
Monday
09:00-10:15 Overview and Case Study: A discussion of previous
applications of the method
10:30-12:00 Predicate Logic: Evaluation rules for predicate expressions
13:30-15:00 Tabular Expressions: Writing of readable predicates
using two-dimensional notations.
15:30-17:00 Describing Program Function: Writing program
descriptions using predicates and tables
Tuesday
08:30-10:00 Presentation of "palav"
10:15-11:15 Participant decomposition and inspection of "palav"
11:30-12:00 Discussion of inspection results
13:30-14:30 Presentation of Dijkstra's Dutch National Flag (DNF)
Problem: Participants will be given a copy of E.W.
Dijkstra's explanation of a program along with several
sample programs. They will be asked to apply the
inspection method and approve or reject each program.
14:30-16:15 Participant inspection of DNF Problem
16:30-17:00 Discussion
Wednesday
08:30-12:00 Inspection of a 'Real' Program
Each participant should bring a small program, perhaps
50-100 lines, that is critical to some project. We
prefer mature code; it should compile and have
survived some testing or use. Working in small
groups, the participants will take a section of the
program and inspect it using the method learned so
far, producing documentation as they go.
13:30-15:30 Report on the Inspection Results
The first part of the afternoon will be devoted to a
series of reports by the participants on the results
of their efforts in the morning.
15:45-17:00 Software Testing
The remainder of the afternoon will be devoted to a
discussion of the interaction between testing and
inspection. We treat testing, not as an alternative
to inspection, but as complementary. We discuss the
way that the documentation produced in the inspection
process can be used in the testing process.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
INQUIRIES
Inquiries concerning either course should be directed to:
Jan Arsenault
McMaster University
Phone: (905) 525-9140, ext. 24910
Fax: (905) 577-9099
e-mail:
[email protected]
------------------------------