100 likes | 378 Views
Software Engineering in the Academy Bertrand Meyer IEEE Computer, May 2001 Definitions of SE The body of methods, tools and techniques intended to produce quality software.
E N D
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, grammers, 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!