Program of Graduate Studies | Applied Informatics |
---|---|
Subject Area | Software and Information Systems Technologies |
Semester | Semester 3 – Fall |
Type | Elective |
ECTS | 10 |
Weekly Teaching Hours | 4 |
Course Instructor |
|
Course Instructor |
|
- Introduction, importance and main concepts of software engineering.
- Software life cycle, development process models.
- Requirements elicitation and engineering.
- System and subsystems design.
- Object-oriented design and UML notation.
- Software design patterns.
- Code development.
- Programs and system testing.
- System support and maintenance.
- Organization and management of software projects, quality and complexity metrics, cost and time estimation.
- Modern software development process models (agile development, extreme programming, scrum).
The students participate in a software development project in large groups. In the context of the project students have to opportunity to attain hands-on experience on the technical and administrative issues related to software systems development, as well as to use modern tools used in this context.
The main goal of the course is to provide students with the technical and administrative skills necessary to develop large-scale software projects by large groups. After successfully fulfilling the requirements of the course, students are capable of:
- Knowing the main stages of the software life cycle.
- Knowing the main software development process models (traditional and agile) and applying them on real projects.
- Knowing UML notation and using the appropriate diagrams according to the phase of the software life cycle.
- Producing the respective deliverables (documents, code) at each phase of the software life cycle.
- Evaluating the quality, correctness and complexity of software projects, producing a development schedule and estimating the cost.
- Exploiting computer aided software engineering tools, as well as technologies taught in other courses, in order to develop large-scale software projects.
- Managing and / or participating in large software development groups, under specific time constraints.