Software Engineering
| Course Code | 321-4000 |
|---|---|
| Semester | 5 |
| ECTS | 5.00 |
| Hours (Theory) | 3 |
| Hours (Lab) | 2 |
| Instructor | Kritikos Kyriakos |
Course Content
- 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
Prerequisites
Not required.
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) |
Assessment Methods / Grading
- 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.
Teaching Language
Greek (English for Erasmus students)

