Title Software Engineering
Lesson Code 321-4000
Semester 5
ECTS 5
Hours (Theory) 3
Hours (Lab) 2
Faculty Kritikos Kyriakos

Syllabus

  • Intoduction to Software Engineering (Basic Definitions, Professional Software Development, Ethical Matters, Use Cases)
  • Software Processes and Lifecycle (Software Production Process Models, Software Production Process Activities, Coping with Changes, Improving the Software Development Process, Rational Unified Process, CASE-based Software Engineering)
  • Agile Software Development (Agile Methods, Agile Development Techniques, Agile Project Management, Agile Development Context, Agile Method Scaling)
  • Requirements Engineering (Functional & Nonfunctional Requirements, Requirements Engineering Processes, Requirements Elicitation, Requirements Specification, Requirements Validation, Requirements Modification)
  • System Modelling (Context Models, Interaction Models, Structured Models, Behavioural Models, Model-Driven Engineering)
  • Architectural Design (Architectural Design Decisions, Architectural Views, Architectural Patterns, Application Architectures, Reference Architectures)
  • Software Verification & Validation (Software Inspection, Software Testing Process, Software Testing Kinds, Development Testing, Test-Driven Development, Release Testing, User Testing)
  • Project Management (Management Activities, Risk Management, People Management, Teamwork)
  • Project Planning (Software Pricing, Plan-based Development, Project Scheduling, Agile Project Planning, Estimation Techniques, COCOMO II Cost Modelling) 

 

Learning Outcomes

Students who will have successfully completed the course will be able to:

  • Elicit and analyze the requirements of a certain problem as well as define them in a software specification document
  • Design & implement software solutions based on the software specification document by following a service-oriented approach
  • Model a software system by utilising various kinds of UML diagrams, covering both the software system structure and behaviour
  • Implement RESTful services by utilising Java and relative Java technologies (Maven, Hibernate/JPA, Jersey/Spring Boot)
  • Collaborativelty develop by using technologies like Git
  • Design & implement automated software unit tests through the JUnit technology
  • Apply the acquired theoretical knowledge in practive by solving problems
  • Follow a critical approach in solution development
  • Explore qualitative solutions by evaluating their plans according to the quality criteria that they apply on checkpoints in the development process
  • Install and utilize Computer-Aided Software Engineering (CASE) tools

Prerequisite Courses

Not required.

Basic Textbooks

  1. Ian Sommerville: “Software Engineering”, ΕΚΔΟΣΕΙΣ ΚΛΕΙΔΑΡΙΘΜΟΣ ΕΠΕ, 2009. Book code in Eudoxus: 13625
  2. Roger S. Pressman, Bruce R. Maxim: "Software Engineering - A Practical Approach", ΕΚΔΟΣΕΙΣ Α. ΤΖΙΟΛΑ & ΥΙΟΙ Α.Ε, 2018, Book code in Eudoxus: 68374068
  3. Γιακουμάκης Εμμανουήλ, Διαμαντίδης Νικόλαος: “Τεχνολογία Λογισμικού”, UNIBOOKS ΙΚΕ, 2017, Book code in Eudoxus: 68402214
  4. ΓΕΡΟΓΙΑΝΝΗΣ, ΚΑΚΑΡΟΝΤΖΑΣ, ΚΑΜΕΑΣ, ΣΤΑΜΕΛΟΣ, ΦΙΤΣΙΛΗΣ, ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΤΗ UML, 1η έκδοση/2006, Book code in Eudoxus: 13597 ΕΚΔΟΣΕΙΣ ΚΛΕΙΔΑΡΙΘΜΟΣ
  5. IEEE Software Engineering Standards, IEEE publications, 1998.

Additional References

  • IEEE Transactions on Software Engineering
  • Journal of Software & Systems 
  • Advances in Engineering Software
  • Information and Software Technology 
  • Requirements Engineering

Teaching and Learning Methods

 

Activity Semester workload
Lectures 39 hours
Laboratory practice 20 hours
Personal study 30 hours
Collaborative lab project 33 hours
Final exams 3 hours
Course total 125 hours (5 ECTS)

 

Student Performance Evaluation

  • Language of evaluation: Greek - In case of ERASMUS students: English. 
  • Theory evaluation method: final written exam (Exam grade should be ≥ 5 to pass the course.) (The exam includes mapping exercices, multi-choice questions, open questions, system modelling exercises, cost estimation exercises, scheduling exercises, software testing design exercises)
  • Lab evaluation method: team project (in software development) (Project grade should be ≥ 5 to pass the course) (The project is both delivered and examined orally). 
  • Final course grade is computed as follows: 0.5 * (Lab (project) grade) + 0.5 * (Theory (Written Exam) grade).
  • The examination/project subjects have clearly specified evaluation criteria. The students can inspect their exam paper after the respective (exam) evaluation and have the ability to comprehend their faults. The students also receive (evaluation & corrective) feedback in terms of their lab project. The overall grade distribution of the course in announced in the e-class platform such that the students can inspect their overall and partial performance.

Language of Instruction and Examinations

Greek, English (for Erasmus students)

Delivery Mode

Face-to-face.