Software engineering

Website:website containing additional information
Course code:INFSWE
Credits:6 ECTS (=4.2 old credit points)
Period:periode 2 (week 44 t/m 51, dwz 28-10-2002 t/m 20-12-2002; herkansing week 10)
Participants:up till now 41 subscriptions
Schedule:Dit is een oud rooster!
formgrouptimeweekroomteacher
college   ma 13-1544 BBL-505 Atze Dijkstra
Eelco Visser
Eelco Dolstra
     
45-49 MIN-211
50 AARD-klein
do 15-1744-50 MIN-211
practicum groep 1 ma 11-1345-50 BBL-401
BBL-403
vr 15-1744-50 BBL-401
BBL-403
groep 2 do 13-1545-50 BBL-401
BBL-403
vr 13-1544-50 BBL-401
BBL-403
Contents:The IEEE Computer Society defines software engineering as "(1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application engineering to software. (2) The study of approaches as in (1)"

Thus software engineering comprises everything that is involved in building and maintaining software systems. Clearly this is too much to cover in a single course. Many aspects of software engineering are adequately treated in the rest of the computer science curriculum, e.g., algorithms, data structures, programming languages, and programming methodology. Other aspects of software engineering such as project management are better studied in a department with knowledge of management. On the other hand, essential tools for software engineers, such as version management, build management, software deployment, and software testing, are neglected.

In this course we focus on the technical aspects of the software engineering process, and in particular on the tools that support this process. We will study the following topics:

  • Build management -- automatically constructing executable systems from source code
  • Version management -- keeping track of different versions of a software system
  • Software deployment -- all activities concerned with installing and activating systems
  • Software testing -- validating software
  • Software understanding -- documentation and maintenance of software
The study of these topics as well as the accompanying lab work is based on existing (Unix) tools.

The course starts with introductory lectures about each of these topics in order to introduce the basic tools to be used in the practical work.

The practical exercises of the first half of the course allow you to acquire the basic skills necessary to use the tools. These smaller introductory exercises are followed by a larger exercise in which you will reorganize an existing program to make it reusable, maintainable, and portable using the tools covered by the course.

The tools covered in the first part are widely used and provide solutions to common development problems, however, they are far from perfect. In the second half of the course we examine the underlying problems and study alternative solutions and tools for these problems. You will further examine specific problems and tools by writing a paper comparing a selection tools on their ability to solve a particular development problem.

Literature:The literature for this course consists of a bundle of articles (reader) accompanied with pointers to further resources on the website. The reader can be obtained at the student desk. Slides of the lectures will be made available online.
Course form:There will be two weekly lectures and two lab sessions. Your are expected to read literature accompanying the lectures, make lab assignments, and write a tool comparison paper.
Exam form:You have to hand in
  • solutions to the lab exercises
  • sources and documentation of the software reorganization project
  • a tool comparison paper
The final grade will be based on these deliverables. The paper must consist of approximately 10 pages of normal spaced, normal font text.
Minimum effort to qualify for 2nd chance exam:Om aan de aanvullende toets te mogen meedoen is ontbreken van ten hoogte 1 toetsactiviteit toegestaan.
wijzigen?