Prof. David Parnas
Professor Emeritus at McMaster University, Canada and University of Limerick, IrelandPresident of Middle Road Software, Ontario
Software Engineering, What And Why
Biography
Prof David Lorge Parnas, Ph.D., P.Eng.(Ontario);
Dr.h.c.: ETH Zürich, Louvain, Lugano ,TU Wien
Fellow: RSC, ACM, CAE, GI, IEEE; MRIA; has been studying industrial software development since 1969. Many of his papers have been found to have lasting value. For example, a paper written 25 years ago, based on a study of avionics software, was recently awarded a SIGSOFT IMPACT award.
Parnas has won more than 20 awards for his contributions. In 2007, Parnas was proud to share the IEEE Computer Societyʼs one-time sixtieth anniversary award with computer pioneer Professor Maurice Wilkes of Cambridge University.
Parnas received his B.S., M.S. and Ph.D. in Electrical Engineering from Carnegie Mellon University. and honorary doctorates from the ETH in Zurich (Switzerland), the Catholic University of Louvain (Belgium), the University of Italian Switzerland (Lugano), and the Technische Universität Wien (Austria). He is licensed as a Professional Engineer in Ontario.
Parnas is a Fellow of the Royal Society of Canada (RSC), the Association for Computing Machinery (ACM), the Canadian Academy of Engineering (CAE), the Gesellschaft für Informatik (GI) in Germany and the IEEE. He is a Member of the Royal Irish Academy.
Parnas is the author of more than 275 papers and reports. Many have been repeatedly republished and are considered classics. A collection of his papers can be found in:
Hoffman, D.M., Weiss, D.M. (eds.), “Software Fundamentals: Collected Papers by David L. Parnas”, Addison-Wesley, 2001, 664 pgs., ISBN 0-201-70369-6,.
Dr. Parnas is Professor Emeritus at McMaster University in Hamilton Canada,and at the University of Limerick Ireland and also an Honorary Professor at Ji Lin University in China. He is President of Middle Road Software in Ottawa, Ontario.
About the Talk
Software Engineering, What And Why
Abstract
In the 1960s, some scientists and mathematicians who were interested in computers observed that software development was a profession that had more in common with Engineering than it did with the fields in which they had been trained. They had mastered a body of knowledge and been taught how to extend that knowledge. They had not been taught how to build software products that would be used by strangers.
It was proposed that, in addition to “Computer Science”, there should be a new engineering discipline called “Software Engineering”. Critics said that a new field wasn’t needed but today the importance of the field is indisputable; we depend on software in the same way that previous generations depended on roads and engines. The world needs software development professionals who have learned to work with the discipline expected of professional engineers.
The early pioneers did not identify the capabilities required of practitioners in the new field. Although there have been several efforts to identify a “body of knowledge” for Software Engineering, none have captured the essence of the field. This talk addresses the question, “What should a Software Engineer be able to do?” Starting with two historical characterizations of the field by leading pioneers, it describes and explains a set of capabilities that are essential for today’s “Software Engineers”.
The talk is addressed to educators, managers, licensing authorities, and, of course, developers.
About the Tutorial
A “Crash Course” in Software Development
Abstract
While the only way to learn how to develop software is to develop software, this tutorial will introduce participants to some of the capabilities that are essential for software developers. Illustrations will be provided to introduce the participants to ways that they can do their job better. The capabilities discussed are:
- Document driven distributed development
Future software will be developed by teams that are located in many countries and speak many different languages. Such projects are often hampered by communication difficulties caused by the ambiguities inherent in natural language communication. This tutorial will introduce an alternative approach. - Communicating precisely between developers and stakeholders
A document that provides a precise description of the externally visible behaviour of a proposed product can be used to communicate between developers and the future users (or their representatives). Such communication is essential if the development team is to build what the users need. The tutorial will show what such a document looks like. - Communicating precisely among developers
Modern software is built by teams. Each team member must know what behaviour is required of the module that he/she develops as well as what behaviour can be expected of modules written by other team members. This communication requires precise interface documentation. The tutorial will show what such documents look like. - Designing and maintaining multi-version software
The days when software was written, used for a short time ,and then discarded or replaced are long gone. Today’s software products must, and will, exist in many versions. The tutorial will present architectural design principles that are essential to making software that can be revised and maintained for many generations. - Software quality assurance
As our world becomes increasingly dependent on software, trustworthiness and availability become increasingly important. The tutorial will illustrate how precise documentation can be used to enhance the effectiveness of software testing and inspection.
All session by Prof. David Parnas
Software Engineering, What And Why
10:30 - 11:30
Main Hall
A “Crash Course” in Software Development – Part 1
13:00 - 15:00
Hall 1
A “Crash Course” in Software Development – Part 2
16:00 - 18:00
Hall 1
Panel 1: Distributed Software Development: Potentials, Pitfalls, and Myths
18:00 - 19:00
Main Hall