Click for commercial
licensing information.
Scott Meyers Training Courses
Better Software — No Matter What
Some 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. This seminar 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.
Unlike most treatments of software quality, this seminar focuses on the critical role that programmers play, and it discusses specific strategies applicable to their activities.
Course Highlights
Participants will gain:
- An understanding of why programmer discretion plays a key role in determining software quality.
- Knowledge of specific practices that help improve the quality of any software effort.
- Insights into the quality-related interactions of specifications, programming, and testing.
Who Should Attend
The primary audience for this seminar is the people responsible for the code: programmers, team leads, and development managers. The information is also well-suited for professionals who work with such people (e.g., QA personnel) or who are interested in improving their organization's software development process.
Format
Lecture and question/answer. There are no hands-on exercises.
Length
One full day (six to seven lecture hours).
Detailed Topic Outline
- The crucial role of programmers in software quality.
- How quality improvement practices reduce development costs.
- Requiring and enforcing useful specifications:
- What is a useful specification?
- Design by contract
- Assertions
- Designing Interfaces that are easy to use correctly, hard to use
incorrectly:
- Applies to both APIs and UIs
- The principle of least astonishment
- Choosing good names
- Designing "nice" classes
- The importance of consistency
- Employing progressive disclosure
- Preventing resource leaks
- Documenting interfaces before implementing them
- Introducing new types
- Constraining available values
- Embracing static analysis:
- Compiler warnings
- Lint and similar utilities
- Custom parsers and analyses
- Code reviews and inspections
- The keyhole problem:
- What it is, how it manifests itself
- Why it matters
- How it can be avoided
- Minimizing duplication:
- Why duplication is bad
- Source code duplication vs. object code duplication
- Preventing source code duplication
- Preventing object code duplication
- Beyond code duplication
- Embracing Automated Unit Testing:
- Unit tests
- What to test
- Encapsulation issues
- Concurrency issues
- Automation
- Test-Driven Development:
- What it is
- How to do it
- Why it's useful
- How it relates to conventional post-development testing
- Unit tests
- Retrospectives:
- What they are
- Their benefits, both technical and social
- When to hold them; who should participate
- The importance of safety
- Phases:
- Preparation
- Meeting
- Follow-Through
- Kick-off retrospectives
- Why the material in this seminar applies to you, no matter how special your circumstances.
- Sources for Additional Information
For more information on this course, contact Scott directly.