Software Engineering

Course Description

This course introduces software systems development with emphasis on software development life-cycle, requirements analysis, specification, design, testing and formal method verification. Complementary to gaining theoretical knowledge, students will take part in a semester-long team course project to gain important skills essential for software engineering practices, including using the version control system, creating a project plan, requirement elicitation, design software architecture, validation, verification, and documentation activities. They will model the structure and behaviour of a software system using UML standard. Project teams will practice principles and techniques introduced in the class to efficiently develop medium-large software systems and to deliver the mandatory artifacts.

Learning Outcomes

  1. Compare software engineering concepts and describe different software engineering processes and software development life-cycle stages
  2. Use UML to model different views of an application.
  3. Apply Unified Process and Agile Methodologies
  4. Develop a software documentation using UML models.
  5. Apply design patterns in a small to medium-sized software project.
  6. Demonstrate work in small project teams to complete a medium-sized project.
  7. Ability to apply and evaluate design and development principles in the construction of software systems of varying complexity.
  8. Apply software testing and quality assurance techniques to the module level, and understand these techniques at the system and organization level.
  9. Use appropriate documentation, modeling, design, and debugging tools.

Forms of Teaching

Lectures

Lectures are held during 13 weeks in the semester, with 3 hours of lectures per week.

Laboratory

Laboratory exercises are conducted in the form of project during the whole semester.

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Quizzes 0 % 9 % 0 % 0 %
Seminar/Project 50 % 30 % 50 % 30 %
Mid Term Exam: Written 0 % 25 % 0 %
Final Exam: Written 0 % 36 %
Exam: Written 50 % 70 %

Week by Week Schedule

  1. Professional software development and software engineering processes. Characteristics of good software and design principles. Challenges of software engineering. Software engineering process models. Ethics of software engineering.
  2. Software life cycle: software development process, project stakeholders and team development. Collaborative software development tools. Software documentation.
  3. Problem analysis, collection, properties and verification of requirements. Classification of requirements. Requirement modeling. Software requirements specifications. Application of UML standards in requirements engineering, use-case modeling.
  4. Software engineering process models. Generic process activities. System modeling, structural models, behavioral models, model-based design. Traditional models, unified process. Agile methods.
  5. Software architecture design principles and concepts. Properties of good software architecture. The relationship between architecture and implementation. Architecture styles, quality attributes. Principles of design, selection process and evaluation of software architecture.
  6. Object-oriented architecture design. Object-oriented architecture modeling using UML. Use of UML class diagrams in modeling.
  7. Dynamic modeling using UML state diagrams. Modeling and documenting implementation with UML component and deployment diagrams.
  8. Midterm exam
  9. Software architectural design. Detailed design: design patterns, frameworks. Basic architectural patterns. Monolithic and distributed software architectures.
  10. Software Development Automation. Application frameworks. Design applications using the Spring framework.
  11. Techniques and strategies for software testing. Bugs and software failures. Design of test cases. Software testing tools.
  12. Software quality management and evaluation. Test automation. Testing languages and tools. Test process and test evaluation measures.
  13. The role of formal approaches for software modeling and analysis. Formal methods tools, formal verification, CTL -based system behavior description, model checking.
  14. Basics of software support maintenance, nature and maintenance needs; maintenance costs; evolution and maintenance categories. Configuration management. Customer support.
  15. Final exam

Study Programmes

University undergraduate
Computing (study)
(5. semester)

Literature

(.), I. Sommerville. Software Engineering 10th Edition, Pearson Education, 2016,
(.), E. J. Braude, Michael E. Bernstein Software Engineering: Modern Approaches 2nd Edition, Waveland Press,2016,
(.), H. Gomma: Software Modeling and Design: UML, Use Cases, Patterns, and Software Architectures, Cambridge University Press, 2011,
(.), N. Bogunović, V. Sruk, A. Jović: Oblikovanje programske potpore - Materijali za predavanja, FER ZEMRIS, (http://www.unizg.fer.hr/predmet/opp) 2014,
(.), V. Sruk, D. Ivošević, A. Jović: Oblikovanje programske potpore - Projektna dokumentacija, FER ZEMRIS, (http://www.unizg.fer.hr/predmet/opp), 2013,
(.), A. Jović, M. Horvat, I. Grudenić: UML-dijagrami: zbirka primjera i riješenih zadataka, sveučilišni priručnik, GRAPHIS d.o.o. Zagreb, 2014,
(.), A. Jović, N. Frid, D. Ivošević: Procesi programskog inženjerstva, e-skripta, FER ZEMRIS (http://www.unizg.fer.hr/predmet/opp), 2019.,

Associate Lecturers

Laboratory exercises

For students

General

ID 183400
  Winter semester
5 ECTS
L3 English Level
L2 e-Learning
45 Lectures
26 Laboratory exercises

Grading System

86 Excellent
72 Very Good
60 Good
50 Acceptable