Software Engineering Education - Electronics and Computer Science

advertisement
Software Engineering
Education
Andy Gravell, Feb 2007
The Situation at Southampton
• Our programmes
– BSc/MEng Computer Science
– BEng/MEng/MSc Software Engineering
– BSc/MSc Information/Web Technology
• This year’s intake was (roughly)
–
–
–
–
–
64 Computer Science
27 Software Engineering
34 Information/Web Technology
75 BEng/BSc
50 MEng/MSc
The ACM/IEEE Perspective
• The US professional bodies have produced
computing curriculum guidelines
– ACM Computer Science Curricula 1968, 1978
– ACM/IEEE Computing Curricula 1991, 2001
• In 2004 the ACM/IEEE produced their first set of
guidelines for software engineering programmes
– SE2004 (a three year effort, 130 pages)
– earlier software engineering curricula were published
by Freeman 1976 & 1978, and Bagert (SEI) 1999
• They are now working on guidelines covering 5
areas (CS, CE, SE, IT, & IS)
SE2004
•
•
Steering committee had members from the US,
Canada, UK, Israel, Japan, Australia
Eight main chapters
1.
2.
3.
4.
5.
6.
7.
8.
Introduction
The Software Engineering Discipline
Guiding Principles
Software Engineering Education Knowledge (SEEK)
Curriculum Design and Delivery
Courses and Course Sequences
Alternative Environments
Implementation and Assessment
SEEK Areas and Units
Computing
Essentials
172
Software V & V
42
Mathematical &
Engineering
Fundamentals
Professional
Practice
89
Software
Evolution
10
35
Software Process
13
Software Modelling 53
& Analysis
Software Quality
16
Software Design
Software
Management
19
45
The Knowledge Areas
• Each area is broken down into topics
– about one per hour of lectures
• The first three areas are a subset of the
standard computer science curriculum
– introduction to CS & IT, programming, program
construction methods, discrete maths, measurement
and statistics, software economics, teamwork,
communication skills, and professionalism
• The other seven areas are more specialised
– 200 lecture hours, about 10 of our modules
– yet we only have ~7 specialist modules ourselves
The Gaps in our Curriculum
• Software Modelling & Analysis 
• Software Design 
– except Architectural Design (9) 
• Software V & V 
– except Testing (21) 
– and Problem Analysis & Reporting (4) 
•
•
•
•
Software Evolution (10) 
Software Process 
Software Quality 
Software Management 
Specialist Areas
• In addition, SE2004 recommends that students
should specialise in one or more areas such as
– networking, information systems, e-commerce, faulttolerant/security/embedded/real-time/safety-critical
systems, biomedical systems, scientific computing,
telecommunications, transportation, process control,
multimedia & entertainment systems, agent-based
systems, and mobile applications
• We cover 10 or more of these 15 subject areas
– but do our students learn “how the characteristics of
typical products in these areas influence a system’s
design and construction”?
A Key Skill
• Software engineers need to be able to
make rational and justified decisions
• Not just design decisions, but also their
selection of methods, tools & techniques
• So the curriculum must give them
opportunities to make decisions and
explain the reasons for their choices
Going Further
• Actually, students should learn several specialist
areas, as the methods used vary so much
– critical systems: hazard analysis, requirements
engineering, formal methods
– mass market software: open source, “synchronise
and stabilise”
– business systems: agile methods, customisation,
system integration, outsourcing
• This should help them to “compare and contrast”
Gaps in SE2004
• SE2004 has good coverage of the
methods used for critical systems
• But there is not much on agile methods
– only ~3 hours on some agile practices:
• unit testing, refactoring, test-first programming
• Nor on outsourcing
– only ~2 hours on a couple of the issues
• stakeholder interaction, multi-cultural environments
• And nothing about open source software!
Other Classic Questions
• How to teach programming
– object-first or procedures-first
– command line versus IDE
• Of course, professional software
engineers should be comfortable with the
full range of techniques
– so most of these questions are about
educational effectiveness – what to cover first
• Which programming languages?
Classic Programming Taxonomies
• One classification is by generation
– 1st G: machine code
– 2nd G: assembly language
– 3rd G: high level languages
– 4th G: very high level languages?
• Another is based on English grammar
– imperative: structured, object-oriented
– declarative: functional, logic programming
– interrogative: regular expressions, SQL
Top Ten Languages
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL
C#
C++
Java
XML
C
VB
HTML
JavaScript
UML
•
•
•
•
•
•
•
•
•
•
Query language
OOPL
OOPL
OOPL
Mark-up language
Structured language
Structured language
Mark-up language
Scripting language
Modelling language
A Modern View
•
The main kinds of computer languages are now
1.
2.
3.
4.
5.
6.
•
query language
object-oriented programming language
mark-up language
modelling language
structured language
scripting language
A modern curriculum should include at least
one the first four types, for example:
– SQL, C#, XML, UML, …
•
SE2004 does not mention mark-up languages
Summary
• Our Software Engineering degrees are popular
• Our curriculum follows SE2004
– but with some gaps
• testing, evolution, architecture
• SE2004 itself have some gaps
– three or more specialist areas (not just one)
• relevant methods: agile, open source, and outsourcing
– how to make rational, justified decisions
– a mark-up language such as XML
Download