- 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.
Week by Week Schedule
- Systems level considerations, i.e., the interaction of software with its intended environment; Introduction to software process models (e.g., waterfall, incremental, agile); Programming in the large vs; individual programming; Evaluation of software process models; System design principles: levels of abstraction (architectural design and detailed design), separation of concerns, information hiding, coupling and cohesion, re-use of standard structures.
- Team participation in software development; Effort estimation (at the personal level); Software development risks; Software measurement and estimation techniques; Software quality assurance and the role of measurements; Tools for software version control.
- Software process and lifecycle; Agile and traditional development models; Software requirements and specifications; Software design principles; Software product and process metrics; Process tailoring; Software process evaluation, simulation, and improvement models.
- Describing functional requirements using, for example, use cases or users stories; Properties of requirements including consistency, validity, completeness, and feasibility; Software requirements elicitation; Describing system data using, for example, class diagrams or entity-relationship diagrams; Non-functional requirements and their relationship to software quality; Evaluation and use of requirements specifications.
- Requirements analysis and design modeling tools; Requirements analysis modeling techniques; Acceptability of certainty / uncertainty considerations regarding software / system behavior; Prototyping; Basic concepts of formal requirements specification; Requirements specification; Requirements validation; Requirements tracing.
- Design Paradigms such as structured design (top-down functional decomposition), object-oriented analysis and design, event driven design, component-level design, data-structured centered, aspect oriented, function oriented, service oriented; Structural and behavioral models of software designs; Design patterns; Relationships between requirements and designs: transformation of models, design of contracts, invariants; Software architecture concepts and standard architectures (e;g; client-server, n-layer, transform centered, pipes-and-filters).
- Refactoring designs using design patterns; The use of components in design: component selection, design, adaptation and assembly of components, components and patterns, components and objects (for example, building a GUI using a standard widget set); Internal design qualities, and models for them: efficiency and performance, redundancy and fault tolerance, traceability of requirements; External design qualities, and models for them: functionality, reliability, performance and efficiency, usability, maintainability, portability; Measurement and analysis of design quality; Tradeoffs between different aspects of quality.
- Midterm exam.
- Programming environments that automate parts of program construction processes (e.g., automated builds); Application frameworks; Principles of secure design and coding; Software reuse; Documentation and program style.
- Testing tools including static and dynamic analysis tools; Inspections, reviews, audits; Testing types/techniques; Testing fundamentals; Limitations of testing in particular domains, such as parallel or safety-critical systems; Static approaches and dynamic approaches to verification.
- Validation planning; Documentation for validation; Verification and validation of non-code artifacts (documentation, help files, training materials); Defect/fault tracking and technical support for such activities; Software quality management and assessment; Automatization of testing; Testing languages and tools; Testing process and test-related measures.
- Role of formal specification and analysis techniques in the software development cycle; Program assertion languages and analysis approaches; Formal approaches to software modeling and analysis; Tools in support of formal methods; Semantic of communicating processes; Process algebras, conceptual models, and Petri nets for communication system modeling; Temporal logic for reactive software verification.
- Rigid and robust software development with domain specific languages; Specification languages, testing languages, and verification languages; Run time verification; Model checking of reactive software; Automatic and automata based programming for concurrent systems; Business process validation and verification.
- Tool integration concepts and mechanisms; Software maintenance categories and principles; Maintainable software characteristics and maintenance metrics; Software configuration management; Release management; Reengineering systems; Reverse engineering; Software updating and patching.
- 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.,
L3 English Level
26 Laboratory exercises
0 Project laboratory
72 Very Good