Software Engineering in Practice

Course Code: 
8138
Semester: 
6th
Specialization Courses
Professor: 

Course Description

While most Information Systems and Computer Science courses traditionally deal with the development of new systems, in practice developers spend the largest part of their time in software life-cycle activities that follow the development phase. The objective of the course is to allow students to read, understand, and evaluate a system’s software elements (code, structure, architecture). Having followed this course, students should be able to intelligently decide on how existing systems will be maintained, setup design and evolution strategies for legacy code, and prescribe the use of refactoring for dealing with architectural mismatches and low-quality code.

An innovative aspect of the course involves the use of Open Source Software (OSS) in course examples and exercises. Through the study of OSS students will be able to see how non-trivial applications like the Apache Web server, the Postgres Relational Database Management System, the Jakarta Java servlet container and the Cocoon framework are structured.

The course contents are:

  • Code as Part of the Software Development Process
  • The Open Source Landscape
  • Tackling Large Projects
  • General Purpose Tools
  • Version Control
  • Build Management
  • Collaboration
  • Performance Measurement and Management
  • Code-Reading Tools
  • Inspection and Testing
  • Coding Standards and Conventions
  • Documentation
  • Maintainability
  • Basic Programming Elements