inf005 - Software Engineering I (Complete module description)

inf005 - Software Engineering I (Complete module description)

Original version English PDF download
Module label Software Engineering I
Module code inf005
Credit points 6.0 KP
Workload 180 h
Institute directory Department of Computing Science
Applicability of the module
  • Bachelor's Programme Business Informatics (Bachelor) > Aufbaucurriculum - Pflichtbereich
  • Bachelor's Programme Computing Science (Bachelor) > Aufbaumodule
  • Bachelor's Programme Mathematics (Bachelor) > Nebenfachmodule
  • Dual-Subject Bachelor's Programme Computing Science (Bachelor) > Aufbaumodule (60 KP)
  • Master of Education Programme (Vocational and Business Education) Computing Science (Master of Education) > Pflichtbereich
  • Master's Programme Environmental Modelling (Master) > Mastermodule
Responsible persons
  • Winter, Andreas (module responsibility)
  • Lehrenden, Die im Modul (authorised to take exams)
Prerequisites

Expected/useful experience

from inf030 Programming, Data structures and Algorithms

Professional competence

The students:

  • describe basic concepts of imperative programming with Java
  • recognise imperative programming terminology and use the appropriate terms accurately in discussions
  • recognise basic terminology of object-oriented programming
  • describe what programs presented to them do
  • independently develop programs to solve small problems
  • systematically examine their own and other people's programmes for errors
  • use modern programme development environments to develop and test programmes
  • create algorithms with general design concepts (e.g. Greedy method, divide-and-conquer method)
  • name algorithms and data structures for solving common problems and evaluate their applicability
  • name problems of efficiency of algorithmic solutions of concrete problems and evaluate them
  • make a well-founded choice of an algorithm and a data structure for solving a concrete problem
  • apply the learned algorithms and data structures sensibly to given and concrete problems

Methodological competence

The students:

  • solve given problems from the point of view of imperative or object-oriented programming
  • transfer practical experience in programme development to new tasks

Social competence

The students:

  • communicate the structure and mode of operation of self-developed programmes to others
  • present solutions to small tasks in front of groups

Self-competence

The students:

  • organise themselves in finding algorithmic solutions to small and medium-sized problems in computer science
  • incorporate the concepts of general programme design in their actions

 

from inf030 Object-oriented Modelling and Programming

Professional competence:

The students:

  • know basic concepts of object-oriented modelling and UML as modelling notation
  • know basic concepts of object-oriented programming with Java
  • know the terminology of object-oriented modelling and programming and use the appropriate terms precisely in discussions
  • can describe what object-oriented programmes presented to them do
  • independently develop models and programmes for solving medium-sized problems
  • systematically examine their own and other people's models and programmes for errors
  • use modern development environments for modelling and developing programmes
  • know the differences between the imperative, object-oriented, functional, logical and rule-based programming paradigms

Methodogical competence:

The students:

  • independently develop programmes for given problems by consistently applying the concepts of object-oriented modelling and programming
  • transfer practical experience in programme development to new tasks
  • independently develop programmes with concurrency
  • can independently apply known solution methods to complex problems

Social competence:

The students:

  • communicate the structure and mode of action of self-developed models and programmes to others
  • present independently developed solutions to groups

Self-competence:

The students:

  • organise themselves when developing programmes for small and medium-sized problems in computer science
  • incorporate the concepts of object-oriented programme design in their actions
Skills to be acquired in this module

The objective of the module is to convey the development and maintainance of large scale software systems. The complete software developing process including requirements elicitation, software architecture and quality assurance, is covered in both classic and agile approaches. Basic concepts of object-oriented modeling and software development based on the Unified Modeling Language are covered in depth.


Professional competence
The students: 

  • recognize the phases in the software life cycle (requirements elicitation, design, implementation, quality assurance)
  • name the tasks involved in each phase
  • recognize and evaluate the arrangement of these activities in classic and agile approaches
  • assess and select suitable process models for the realization of projects
  • understand the advantages of the modelling process with UML
  • develop and evaluate models in different UML notations and their combinations
  • solve given problems with the help of UML notations


Methodological competence
The students:

  • structure, evaluate, differentiate and use procedures of classic and agile project management
  • structure, document and evaluate problems and solutions using the tools of object-oriented modeling
  • apply methods and techniques of object-oriented modeling with UML in a targeted manner


Social competence
The students:

  • create, present and discuss solutions to problems using modeling techniques
  • describe and solve given modeling problems in teams


Self-competence
The students: 

  • reflect on their actions when describing problems and developing solutions
Module contents

The module introduces fundamental terms and concepts of software engineering.

These include

  • Necessity of software engineering
  • Principles of software engineering
  • Activities and process models of software development (classic, agile)
  • Object-oriented modeling, metamodeling
  • Synchronization of code and models
  • Determination and documentation of requirements (classic, agile))
  • Definition of software architectures
  • Use of software development patterns
  • Definition and assurance of software quality
  • Maintenance and operation of software systems
Recommended reading
  • Slide script for the lecture
  • Ian Sommerville: Software Engineering, Addison-Wesley Longman, Amsterdam, 10. Ed. (Global Edition). 2015.
  • Helmut Balzert: Lehrbuch der Software-Technik, Spektrum Akademischer Verlag, 3. Auflage 2009.
  • Anja Metzner:  Software-Engineering – kompakt, Hanser, München, 2020.
  • Ravi Sethi: Software Engineering: Basic Principles and Best Practices, Cambridge University Press, 8. Dezember 2022. 
  • Chris Rupp, Stefan Queins: UML 2 glasklar. Praxiswissen für die UML-Modellierung, Carl Hanser Verlag, 4. Auflage 2012.
  • Martina Seidl,  Marion Scholz, Christian Huemer, Gerti Kappel, UML @ Classroom: An Introduction to Object-Oriented Modeling, Springer, 2015.
  • Christoph Kecher, Alexander Salvanos, Ralf Hoffmann-Elbern: UML 2.5, Das umfassende Handbuch. 7. Aufl. Rheinwerk Computing, 2021.
  • OMG Unified Modeling Language, Version 2.5.1 (formal/17-12-05), Dec. 2017, https://www.omg.org/spec/UML/,
Links
Language of instruction German
Duration (semesters) 1 Semester
Module frequency annual
Module capacity unlimited
Teaching/Learning method V+Ü
Type of course Comment SWS Frequency Workload of compulsory attendance
Lecture 3 WiSe 42
Exercises 2 WiSe 28
Total module attendance time 70 h
Examination Prüfungszeiten Type of examination
Final exam of module

At the end of the lecture period

Written exam (as a rule)

Oral examination or portfolio (after consultation with the examination office, e.g. if compensation for disadvantages has been granted)