"Complexity is easy; simplicity is hard." -- Edmund Kean
This course is an introduction to software engineering and object-oriented software design. At the core of the lecture is the notion of software quality and the methods to achieve and maintain it in environments of "multi-person construction of multi-version software" [Parnas 1987].
Based on their pre-existing knowledge of an object-oriented programming language, students are familiarized with software architectures, design patterns and frameworks, software components and middleware, UML-based modelling, and validation by testing. Further, the course addresses the more organisational topics of project management and version control. Practical work underpins this by looking at suitable tools.
The course is recommended to all students on whose software skills people will depend one day.
don't forget to subscribe to the course mailing list:
Via the homeworks, over the course of the semester a programmable game will be developed, called "Bug World". Goal is an installable package. At the end of the semester, a tournament will run where students can provide their strategies for competition.
Over the semester, students have to develop a larger piece of software.
The main objective is to learn
group work and to gain practical experience with some
software engineering methodologies, methods and supporting
tools. The project is organized into several phases:
Component development using extreme programming.
Over several 2-week phases ("cycles"), students will exercise extreme
programming cycles in order to develop components
identified by the overall system design. Each cycle
lasts two weeks (since students only work part-time on
the lab). After each cycle, the progress will be
discussed and plans will be fixed for the next cycle.
Students work in teams of two students in each cycle
and groups will change with every cycle. The results
produced in each cycle will be graded.
System integration and system testing (2 weeks).
This phase is concerned with the integration of
the components and the testing of the overall
system. The integration test cases identified
should be exercised (or updated and complemented as
needed). Students work now again in larger groups.
The system integration and testing phase must be
documented appropriately and the documentation will be
graded, as will be installability of the resulting package.
Tournament and wrap up (1 week).
In the last phase, there will be a tournament where
students can let bugs play against each other.
Students who write smart bugs may get bonus points.