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.
- 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.
- Ability to 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 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.
|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
Computing (study)(5. semester)
(.), 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.,