Software Development II
practices for clean software development (naming, documentation, code
organization, error handling), refactoring techniques (composing
methods, simplifying conditional & methods, moving features,
generalizations), introduction to design patterns. The course’s lab
aims at training the students in the use of integrated development
environments and refactoring tools that will be employed for the
developments of the course's project. The lab further focuses on issues
to the different phases of the project (development phase, refactoring
Learning Objectives & Expected Outcomes
study and application of best practices, patterns and refactoring
techniques that allow to avoid issues of poor software
design/implementation. The main outcomes of the course is that the
students will be capable to:
- Identify issues of poor software design/implementation.
the quality of software that suffers from issues of poor software
design/implementation by applying design patterns and refactoring
Literature and Study MaterialThe main textbooks for the course are:
- OO Design: UML, principles, patterns and rules, Α. Xatzigeorgiou, ISBN 960-209-882-1
- Program Development in Java, B. Liskov and J. Guttag, ISBN 978-960-461-063-1
- Clean Code - A Handbook of Agile Software Craftsmanship, R. C. Martin
Apart from the above textbooks you can download the course's lecture notes here. (NEW versions of refactoring slides + examples)
- Refactoring - Improving the Design of Existing, M.Fowler
project developed by groups of 2 students. The
project consists of two phases. The goal of the 1st phase would be either the development of
an initial version of a new software application, or the systematic review of a legacy software; the goal of the 2nd phase is to
refactor the software that has been produced/reviewed in the 1st phase.
- Deliverables - Deadline 20-12-2020
can find all the neccessary material (requirements on what to do in
this phase, source code of legacy application, deliverable template,
- For the delivery of the 2nd phase use the turnin program:
- turnin deliverables@mye004 <your-project>.zip, where your-project is a zip file of your Eclipse refactored project.
- To register your project group for the project of 2020-2021 , fill this form - Deadline 23/10/2020.
- NEW !! Sept 2020 Exams - The overall grades (project and final exam, if both greater than the respective limits) can be found here.
- NEW !! The online lectures will begin on Thu 1/10 via the MS Team platform. You can join the lectures using this code: mn9zxhd
- SEPT 2020 - Guidelines for the exams:
- During the exam you may use the course material (slides, book, etc.)
- The exams will take place using the MS Teams platform.
participate in the exams you should become a member of the
- "Sept 2020 - Εξέταση Ανάπτυξης Λογισμικού ΙΙ" wbpj51p
- The deadline for becoming a member of the appropriate team is 12/9.
- To take the exam you should join in the respective MS Teams meeting that will be scheduled at the exam date.
the exam you will be given a quiz to turn in within a specific
deadline. The deadline may be shorter than the overall 3 hours of the
- During the exam you should keep your cameras and microphones open according to the rules set by the University and the rules set by the Department of Computer Science and Engineering.
- At any time during the exam the instructor may ask you to present your student ID in the camera.
- June 2020 Exams - The overall grades (project and final exam, if both greater than the respective limits) can be found here.