Software Engineering (Softwaretechnik) SS 2018

Description

Software Engineering is the discipline of software construction on a large scale and an important part of systems engineering.

Software Engineering aims at providing answers to the following questions:

…and many similar ones.

This course gives an overview of the problems and methods and provides essential basic knowledge for any computer scientist working as a software engineer.


Organizational Matters

Lecturers

Requirements & Target Group, Classification, Credits, etc.

See entry in the KVV course catalog.

This lecture is a required course for Computer Science Bachelor students.

Dates & News

  • The subdivision into tutorial groups is done via the KVV
  • As from 2018-04-16 14:00 you may register for the tutorials.

  • Tutorials start in the second week of the course (calender week 17)
  • The first practice sheet will be made available in the first week of the course on Monday, 2018-04-16 and is due on Sunday, 2018-04-22.

Credits & Exams

The criteria for gaining credits are

Content

Literature

Subject Matter

Most slide sets are in German. A few are English and a few are mixed German/English.

  1. Introduction: 2018-04-16
    Introduction (Einführung)
    • software; software engineering (SE); tasks of SE; personal relevance; stakeholders; standards of good SE: costs/benefits; quality; product and process; principle, method, procedures, tools; technical vs. human aspects; kinds of software engineering situations
    • learning goals; learning style
  2. Case study: 2018-04-19
    Electronic Health Card (Elektronische Gesundheitskarte)
    • classification, requirements e-prescription ('eRezept') (as to function, performance, availability, safety), technical workflow, some details, document map, participants, beneficiaries and lines of conflict, introduction schedule, side note: digital signatures.
    • "bear-in-mind"-hints regarding: domains, non-functional requirements, need of cooperation, project risk.
  3. Introduction: 2018-04-23
    The Software Engineering Landscape (Die Welt der Softwaretechnik)
    • routine and innovation: Normal and Radical Design
    • taxonomy: problems and solutions
  4. Modeling: 2018-04-26
    Modeling with UML
    • models and modeling (reality vs. model; phenomena vs. concepts); UML; class diagrams; sequence diagrams; statecharts; activity diagrams; other types of diagrams (component diagrams, collaboration diagrams, interaction overview diagrams); UML meta model; profiles; some notation details (classes, associations, interfaces, states)
  5. Identify WHAT: 2018-04-30
    Requirements Elicitation
    • requirements elicitation: requirements and requirements engineering; types of requirements; requirements and modeling; hard and soft systems; identify problems and chances; elicitation techniques (traditional, social, representation-based, knowledge-based)
  6. Identify WHAT: 2018-05-03
    Use Cases
    • What is a use case?; important parameters (system under discussion, level of detail, level of goal); iterative specification; use case hierarchies (overview, user goals, details); checklist for use cases
  7. Understand WHAT: 2018-05-07
    Requirements Analysis (Static Object Model)
    • from use cases to classes, Abbott's method (nouns are candidates for classes, verbs for operations, adjectives for attributes, proper nouns for instances, "is a" for inheritance, etc.); checklists for the identification of classes, associations, attributes, operations, inheritance; developer roles and types of models (analysis model vs. design model)
  8. Understand WHAT: 2018-05-14
    Requirements Analysis (Dynamic Object Model)
    • identifying classes with dynamic modeling; statechart diagrams; sequence diagrams; structure of a requirement analysis document; validation (and contrast to verification)
  9. Decide HOW: 2018-05-17
    Software Architecture
    • architecture means overall structure and approach for meeting the non-functional and functional requirements; global characteristics; reusable architectures (standard architectures); architectural styles (for developing architectures on your own); modularization (terminology "module", modularization criteria)
  10. Decide HOW: 2018-05-24
    Modularization
    • what is a module?; how to split into modules?; case study: KWIC; KWIC 1: data flow chain; evaluation of the design quality; KWIC 2: central control; KWIC 3: data abstraction; responding to changes; relationship to architectural styles
  11. Reuse HOW: 2018-05-28
    Design Patterns, part 1
    • What makes a problem difficult?; simplicity through recognition of patterns; idea of design patterns;
    • Composite pattern; Adapter pattern; Bridge pattern; Facade pattern
  12. Reuse HOW: 2018-05-31
    Design Patterns, part 2
    • types of design patterns; Proxy pattern; Command pattern; Observer pattern; Strategy pattern; Abstract Factory pattern; Builder pattern
  13. Specify HOW: 2018-06-04
    Interface Specification
    • visibilities (public, protected, private, package), specification of preconditions and postconditions (effects) with OCL (context, pre, post, inv); mapping of associations to code
  14. Test IF: 2018-06-07
    Analytical Quality Assurance, part 1
    • defect test; selection of input (functional test, structural test); selection of parts to test (bottom-up, top-down, opportunistic); determination of the expected behavior (reference system, (partial) oracle); repetition of tests (regression test, test automation)
  15. Test IF: 2018-06-11
    Analytical Quality Assurance, part 2
    • test automation (tools, structuring, JUnit); stopping criteria for testing; defect localization; usability testing; load testing; acceptance testing; manual static QA (review; inspection; perspective-based reading); automatic static QA (model checking; source code analysis)
  16. Prevent THAT: 2018-06-14
    Constructive Quality Assurance (Quality Mgmt, Process Mgmt)
    • project mgmt. vs. process mgmt.; types of guidelines for process mgmt.; CMM-SW/CMMI (5 process maturity levels); TQM (principle: customer satisfaction); ISO 9000
  17. Decide HOW (Process): 2018-06-18
    Process Models
    • roles, artifacts, activities
    • waterfall model
    • repair 1: iteration (prototype model, evolutionary models, spiral model)
    • repair 2: more flexible planning (agile methods)
    • process model selection criteria; adaptable process models: RUP, V model XT; explanation "agile method" (eXtreme Programming, XP)
  18. Constraints: 2018-06-21
    Personality Types
    • what and why; MBTI dimensions (E/I, S/N, T/F, J/P); warnings and advice; Keirsey temperaments (SJ, SP, NT, NF); other type systems; types and SW engineering; strengths and pitfalls; typical tendencies; identify your own type
  19. Implement (Process): 2018-06-25
    Project Management, part 1
    • what and what for?; task areas
    • estimation (ways of estimation; function point estimation); death-march projects
  20. Implement (Process): 2018-06-28
    Project Management, part 2
    • time and resource planning; Microsoft Project; critical path method (CPM); finding a work breakdown structure (WBS)
    • risk management; risk lists; DOs and DON'Ts
  21. Implement (Process): 2018-07-02
    Project Management, part 3
    • teams; sport team or choir?; organizational structures; roles; communication structures
    • psychological factors; estimating probabilities; motivation; attribution; attitudes; social influences
  22. Implement (Process): 2018-07-05
    Project Management, part 4
    • project plan; project management; non-linear dynamic (Brook's law; reinforcement of quality deficits; vicious circle of quality and time pressure)
    • communication (planned/unplanned, synchronous/asynchronous); media; meetings
  23. Maximize Normal Design: 2018-07-09
    Reuse, part 1
    • types of reuse (product/process; object; aim); risks assessment; obstacles; productivity; Normal Design through reuse; patterns; types of patterns; principles (abstraction, structuring, hierarchy, modularization, locality, consistency, suitability, reuse, notations)
    • analysis patterns
  24. Maximize Normal Design: 2018-07-12
    Reuse, part 2
    • usability patterns
    • process patterns
    • pattern languages; anti-patterns; tool usages as reuse
  25. Pass on Knowledge: 2018-07-16
    Documentation
    • types of documentation; quality characteristics (clear, precise, correct, helpful); positive and negative examples
    • principles (self documentation, minimal documentation)
    • rationale management (questions + suggestions + criteria + arguments make decisions)
  26. Famous Last Words: 2018-07-19
    Summary
    • reprise of first lecture; quick run-through of topics
    • important topics we have not discussed; some advice

Further resources

Software


Tutorials

Practice Sheets

Each new practice sheet will appear in the KVV. Solutions must be uploaded to the KVV before the respective deadline.

Active Participation

As an alternative to the tutorials you may define a software engineering project on your own and disengage to a large extent from the tutorials.
But beware: consequently the necessary exam preparation is more your personal responsibility! For details refer to the next section.

Projects

A project is organized like this:
  1. 3 to 5 students form a team.
  2. The team formulates a written project proposal:
    • What do we want to do? Why?
    • What is the goal of the project? When is it achieved (criteria)?
    • What are the subtasks? Who is responsible for which subtask? How much effort will each subtask demand?
  3. The tutor agrees to the proposal (or requests changes/amendments). Project topics may concern any aspect of software engineering (preferably many aspects), but should not focus on implementation. Especially non-trivial planning and quality assurance elements need to be included. Projects starting from scratch are hardly ever suitable.
  4. The team presents a proposal in the tutorial and asks for comments: hints as to additions and improvements, warnings concerning risks and pitfalls, technical tips.
  5. The team carries out the project autonomously. The tutor is available as a coach, in particular when faced with tricky decisions.
  6. The team presents the project result to the tutor, with all team members taking on an active role and being able to answer most questions well.
  7. The tutor (hopefully) accepts the result.
  8. The team presents the result in the tutorial. The tutor decides whether all project members have contributed (well) enough to the project to pass.

Exam Preparation

Basically the content of the lecture plus the content of the tutorials will be tested.

The practice sheets suggest possible exam questions, but not all material suits itself to a written exam well, so expect "hard" stuff such as terminology, modeling, patterns, specific methods, etc. to be represented well and "soft" topics such as project management less so. Some of the practice sheet tasks derive from old exam questions. An extra practice sheet for exam preparation may be found amongst the practice sheets, also giving advice as to the answers.

The 16-page mini script not only summarizes the course nicely, it also gives concrete learning advice.

Additional 3-LP Project (only for School Teacher Students)

There is no separate course part for the required project/internship of 3 credit points in your degree program. As only a few students are concerned, we will look for individual solutions suggested by each of you.

The format is similar to the one described under "Project" in the section "Tutorials", except that here you work alone or in pairs (instead of teams of 3 to 5) and the task size is smaller. Please turn to your tutor with your own project idea or to the tutorial co-ordinator.


History of the Curriculum

(small changes are made every year)

Comments

Should you have comments or suggestions as to this page, please leave them here (preferably with date and name):

 

SWTIDSR