software engineering in the academy bertrand meyer ieee computer, may 2001
TRANSCRIPT
Software Engineeringin the Academy
Bertrand Meyer
IEEE Computer, May 2001
Definitions of SE
• The body of methods, tools and techniques intended to produce quality software.
• The development (management, maintenance, validation, etc.) of possibly large systems intended for use in production environments, over possibly a long period, worked on by possibly many people, and possibly undergoing many changes.
Goals
• How to instill software engineering concerns into an entire software curriculum.– Principles– Practices– Applications– Tools– Mathematics
The Principles: What Software Professionals Know
• Abstraction: separate essential from the auxiliary.
• Distinction between specification and implementation: confusing in software.
• Recursion: apply definition to some of its parts: classes, grammars, functions, etc.
• Information hiding: what you export and what you hide.
The Principles: What Software Professionals Know
• Reuse: when to rely on someone else’s job.
• Battling complexity: recognize simplicity in an apparent mess.
• Scaling up: which techniques will scale up?
• Designing for change: change process can be painful, especially for large systems.
• Classification: class hierarchies.
The Principles: What Software Professionals Know
• Typing: study of type systems for safe construction of software.
• Contracts: pre and post conditions and invariants.
• Exception handling.
• Errors and debugging.
Practices
• Configuration management
• Project management
• Metrics
• Ergonomics and user interfaces
• Documentation
• User interaction
• High-level system analysis
Applications
• Includes traditional areas:– Compilers, operating systems, data bases,
numerical computing, etc.
Tools
• Choose a few programming languages and implementations and help students to understand them in depth.
• Educators are responsible for choosing the appropriate tools on the basis of their best professional assessment of student’s interests over the course of a career.
Mathematics
• Programming and programming languages are mathematical beasts!