Software Engineering (Softwaretechnik) SS 2019
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:
- How to find out which characteristics a software should have (requirements engineering)
- How to describe these characteristics (specification)
- How to structure software so that it can be built easily and changed flexibly (architecture and design)
- How to change software which does not (or no longer) have such a structure or that is difficult to understand (reengineering)
- How to uncover defects in software (quality assurance, testing)
- How to organize the tasks in a software company or department to regularly achieve cost-efficient and high-quality results (constructive quality assurance, process management, project management)
- Which common problems underlie all of these questions and which general approaches underlie the methods and techniques that are used
…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 2019-04-!!! 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, 2019-04-08 and is due on Sunday, 2019-04-14.
- Lecture:
- Monday 12–14, auditorium of the Institute of Computer Science (Großer Hörsaal der Informatik), Takustr. 9
- Thursday 12–14, auditorium of the Institute of Computer Science (Großer Hörsaal der Informatik), Takustr. 9
- Tutorials:
When | Who | KVV | Where | Exception |
Monday 10:00–12:00 | Samuel Domiks | n | Takustraße 9 SR 051 | |
Monday 10:00–12:00 | Jannis Hamann | n | Takustraße 9 SR 053 | |
Monday 16:00–18:00 | Samuel Domiks | n | Takustraße 9 SR 053 | |
Monday 16:00–18:00 | Alexander Korzec | n | Takustraße 9 SR 055 | |
Thursday 8:00–10:00 | Jannis Hamann | n | Takustraße 9 SR 051 | |
Thursday 8:00–10:00 | Victor Brekenfeld | n | Takustraße 9 SR 055 | |
Friday 10:00–12:00 | Alexander Korzec | n | Takustraße 9 SR 055 | |
Friday 12:00–14:00 | Alexander Korzec | n | Takustraße 9 SR 006 | |
Credits & Exams
The criteria for gaining credits are
- regular participation in the tutorials
- active participation in the tutorials: oral participation in the tutorials & regular preparation of the tasks
- passing of the exam
- The exam takes 90 minutes and there are 90 points to be achieved.
- To pass, a number of points typically between 28 and 35, will suffice. The actual threshold will be decided upon when correcting.
- You may use the following resources during the exam:
- A handwritten cheat sheet prepared by yourself with a maximum size of 1 sheet of DIN A3. Alternatively: Two tightly linked DIN A4 sheets (stapled or glued). There are no restrictions as to the content. The sheet may be written on from both sides. You may only use your own sheet you brought.
The sheet needs to be handwritten by yourself, as its purpose is mainly fulfilled in the process of preparation, less so during the actual exam.
- Students whose mother tongue is not German may use a dictionary during the exam. They also may write their answers in English.
- 1st exam: Thursday 2019-07-18, 11:59–14:00, auditorium 1a and 1b, Habelschwerdter Allee 45 ("Silberlaube") (Hörsaal 1a: 511 Plätze mit Pult = 110 Studenten; Hörsaal 1b: 450 Plätze = 91 Studenten bzw. 131 Studierende bei enger Besetzung (immer nur 1 Platz frei anstelle von 2))
- Subdivision of the group according to the first letter of the last name:
- A* - K*: auditorium 1a
- L* - Z*: auditorium 1b
- Please make sure you travel to the right location as space is limited. On-site, you will be assigned to your table.
- post-exam review: Wednesday 2019-09-25, 14:15 until at least 14:45, SR 051, Takustr. 9
- 2nd exam: Monday 2019-10-07, 11:59, auditorium 1b, Habelschwerdter Allee 45 ("Silberlaube"): 450 Plätze = 91 Studenten bzw. 131 Studierende bei enger Besetzung (immer nur 1 Platz frei anstelle von 2)
- post-exam review: Wednesday 2019-10-23, 15:59 until at least 16:30, SR 49, Takustr. 9
Content
Literature
Subject Matter
Most slide sets are in German. A few are English and a few are mixed German/English.
- Introduction: 2019-04-08
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
- Case study: 2019-04-11 (Vertretung durch Barry Linnert)
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.
- Introduction: 2019-04-15
The Software Engineering Landscape (Die Welt der Softwaretechnik)
- routine and innovation: Normal and Radical Design
- taxonomy: problems and solutions
- Modeling: 2019-04-18
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)
- Identify WHAT: 2019-04-25
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)
- Identify WHAT: 2019-04-29
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
- Understand WHAT: 2019-05-02
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)
- Understand WHAT: 2019-05-06
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)
- Decide HOW: 2019-05-09
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)
- Decide HOW: 2019-05-13
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
- Reuse HOW: 2019-05-16
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
- Reuse HOW: 2019-05-20
Design Patterns, part 2
- types of design patterns; Proxy pattern; Command pattern; Observer pattern; Strategy pattern; Abstract Factory pattern; Builder pattern
- Specify HOW: 2019-05-23
Interface Specification
- visibilities (public, protected, private, package), specification of preconditions and postconditions (effects) with OCL (context, pre, post, inv); mapping of associations to code
- Test IF: 2019-05-27 (Vertretung durch Barry Linnert)
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)
- Test IF: 2019-06-03
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)
- Prevent THAT: 2019-06-06
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
- Decide HOW (Process): 2019-06-13
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)
- Constraints: 2019-06-17
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
- Implement (Process): 2019-06-20
Project Management, part 1
- what and what for?; task areas
- estimation (ways of estimation; function point estimation); death-march projects
- Implement (Process): 2019-06-24
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
- Implement (Process): 2019-06-27
Project Management, part 3
- teams; sport team or choir?; organizational structures; roles; communication structures
- psychological factors; estimating probabilities; motivation; attribution; attitudes; social influences
- Implement (Process): 2019-07-01
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
- Maximize Normal Design: 2019-07-04
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
- Maximize Normal Design: 2019-07-08
Reuse, part 2
- usability patterns
- process patterns
- pattern languages; anti-patterns; tool usages as reuse
- Pass on Knowledge: 2019-07-11
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)
- Famous Last Words: 2019-07-XX
Summary
- reprise of first lecture; quick run-through of topics
- important topics we have not discussed; some advice
Further resources
Software
- UML diagrams
- BOUML. It's not the greatest program in the world, but fast and sufficiently good. Alternatively you may browse through the following big list of UML tools (or the list at Wikipedia).
- Or use a vector-oriented paint program like e.g. Inkscape or the handy web-based draw.io.
- In the computer rooms ("Rechnerpools"): IBM Rational Rose is installed on the computers in the basement, which enables you to draw diagrams easily. However, Rose has many additional functions and is a complex software package.
- recommended by students:
- Dia - part of the Gnome desktop (also available under Windows)
- UMLet - free and open source UML tool written in Java; stand-alone, as Eclipse plugin, or web-based as UMLetino
- Gantt charts
Tutorials
- tutorials begin in the second week of the course
- the first practice sheet will be given out in the first week of the course
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:
- 3 to 5 students form a team.
- 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?
- 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.
- 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.
- The team carries out the project autonomously. The tutor is available as a coach, in particular when faced with tricky decisions.
- 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.
- The tutor (hopefully) accepts the result.
- 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.
History of the Curriculum
(small changes are made every year)
- SS 2019
- discussed or emphasized agile methods more in many places
- SS 2008 shortened the curriculum from 30 units to 26 units due to the shift to the summer semester:
- replaced the three units about electronic health card (eGK) by a completely new one
- shortened the two units about UML introduction/overview down to a single one
- shortened unit 35_Schnittstellenspezifikation somewhat and 36_Objektimplementierung a lot; and merged the two.
- WS 2005/2006
- lecture completely changed based on own concept, partly based on book "Objektorientierte Softwaretechnik" by Brügge and Detoit.
- WS 2004/2005
- lecture completely changed based on book SE7 by Ian Sommerville (prior: book by Helmut Balzert)
- WS 2003/2004
- Omitted:
- unit about components (JavaBeans, COM);
- unit about server (serverseitigen) components (EJB, Corba, COM+)
- unit about web UI (Servlet, JSP, CGI)
- unit about reuse
- Added:
- unit about documentation
- unit about test automatisation
- unit about risk management
- WS 2002/2003 (block seminar in march)
- first lecture, based on "Lehrbuch der Softwaretechnik" (part 1 and 2) by Helmut Balzert.
Should you have comments or suggestions as to this page, please leave them here (preferably with date and name):
SWTIDSR