Technical Program
  Invited Speakers
  Technical Papers
  Practitioner Reports
Educators' Symposium
Doctoral Symposium
Student Research Comp.
Turing Lecture
Social Events
Week at a Glance
Final Program (1.5M .pdf)

Find in Program


view, help

"Better Software—No Matter What"
Object-Oriented Programming, Systems, Languages and Applications
Home    Program    Housing & Transportation    Registration    Submissions    Wiki    Maps
  > Technical Program > Tutorials > All Tutorials

 : Monday Full-Day Tutorials (8:30 - 17:00) : Monday

Better Software—No Matter What

Meeting Room 8
Monday, 8:30, full day


Scott Meyers, Independent Consultant:  Scott Meyers is an author and consultant with over three decades of software development experience. His three best-selling "Effective C++" books defined a new genre in technical publishing. His consulting and research work has spanned a wide range of industries and topics, including regulatory genetics, CAD/CAE applications, and video games. His current work focuses on identifying fundamental principles for improving software quality. Scott is Consulting Editor for Addison-Wesley's Effective Software Development Series and sits on Software Development Magazine's technical advisory board. He has a PhD in Computer Science from Brown University.

Tutorial number: 41

Some software development practices improve software quality, regardless of the domain of the application, the language in which it's written, the platform on which it runs, or the users it is intended to serve. Furthermore, there are minimal quality standards that virtually all software should adhere to, regardless of its purpose.

This tutorial explores fundamental principles, practices, and standards that improve software quality, no matter what the software does, how it does it, or whom it does it for. Among the most important ideas explored in this tutorial are:

  1. Interfaces should be easy to use correctly and hard to use incorrectly. (This includes all interfaces, from APIs to GUIs.)
  2. Use as much static analysis as possible, via both language mechanisms as well as outside tools.
  3. Avoid the creation of gratuitous constraints, including "keyholes."
  4. Embrace test-first programming.

This tutorial is not about theory. It's about principles and practices that developers can put to work immediately, no matter what they're working on.

Beginner: Attendees should be programmers or technical managers. The tutorial material is applicable to all problem domains and programming languages.