Software Engineering
Data is displayed for the academic year: 2024./2025.
Laboratory exercises
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.
Prerequisites
Programming basics. Database basics.
Study Programmes
University undergraduate
[FER3-EN] Computing - study
(5. semester)
Learning Outcomes
- Compare software engineering concepts and describe different software engineering processes and software development life-cycle stages
- Use UML to model different views of an application.
- Apply Unified Process and Agile Methodologies
- Develop a software documentation using UML models.
- Apply design patterns in a small to medium-sized software project.
- Demonstrate work in small project teams to complete a medium-sized project.
- Apply and evaluate design and development principles in the construction of software systems of varying complexity.
- Apply software testing and quality assurance techniques to the module level, and understand these techniques at the system and organization level.
- 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.
LaboratoryLaboratory 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
- 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.
- Software life cycle: software development process, project stakeholders and team development. Collaborative software development tools. Software documentation.
- 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.
- Software engineering process models. Generic process activities. System modeling, structural models, behavioral models, model-based design. Traditional models, unified process. Agile methods.
- 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.
- Object-oriented architecture design. Object-oriented architecture modeling using UML. Use of UML class diagrams in modeling.
- Dynamic modeling using UML state diagrams. Modeling and documenting implementation with UML component and deployment diagrams.
- Midterm exam
- Software architectural design. Detailed design: design patterns, frameworks. Basic architectural patterns. Monolithic and distributed software architectures.
- Software Development Automation. Application frameworks. Design applications using the Spring framework.
- Techniques and strategies for software testing. Bugs and software failures. Design of test cases. Software testing tools.
- Software quality management and evaluation. Test automation. Testing languages and tools. Test process and test evaluation measures.
- The role of formal approaches for software modeling and analysis. Formal methods tools, formal verification, CTL -based system behavior description, model checking.
- Basics of software support maintenance, nature and maintenance needs; maintenance costs; evolution and maintenance categories. Configuration management. Customer support.
- Final exam
Literature
(.), A. Jović, N. Frid, D. Ivošević: Procesi programskog inženjerstva, e-skripta, FER ZEMRIS (https://www.fer.unizg.hr/predmet/proinz/literatura), 2021.,
(.), V. Sruk, A. Jović, N. Frid: Programsko inženjerstvo - Materijali za predavanja, FER ZEMRIS,
General
ID 209709
Winter semester
5 ECTS
L1 English Level
L2 e-Learning
45 Lectures
0 Seminar
0 Exercises
26 Laboratory exercises
0 Project laboratory
0 Physical education excercises
Grading System
86 Excellent
72 Very Good
60 Good
50 Sufficient