Software Engineering (Softwaretechnik) SS 2017

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 2017-04-18 8: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 2017-04-18 and is due on 2017-04-23.

  • Lecture:
    • Mondays 12–14, auditorium of the Institute of Computer Science (Großer Hörsaal der Informatik), Takustr. 9
    • Thursdays 12–14, auditorium of the Institute of Computer Science (Großer Hörsaal der Informatik), Takustr. 9
  • Tutorials:
    When Who KVV Where
    Monday 10:00–12:00 Marco Ziener 2 Takustraße 9 SR 051
    Monday 14:00–16:00 Franz Zieris 1 Takustraße 9 SR 049
    Monday 16:00–18:00 Florian Hartmann 3 Takustraße 9 SR 049
    Monday 16:00–18:00 Alexander Korzec 4 Takustraße 9 SR 053
    Thursday 8:00–10:00 Alexander Korzec 5 Takustraße 9 SR 051
    Thursday 10:00–12:00 Florian Hartmann 6 Takustraße 9 SR 053
    Thursday 14:00–16:00 Marco Ziener 7 Takustraße 9 SR 006

  • Exams: see next section

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 2017-07-27, 11:59–14:00, big auditorium / gr. Hörsaal der Pflanzenphysiologie, Königin-Luise-Str. 12-16 (450 Plätze) and gr. Hörsaal der Informatik, Takustr. 9 (200 Plätze)
    • Subdivision of the group according to the first letter of the last name:
      • A* – P*: gr. Hörsaal der Pflanzenphysiologie, Königin-Luise-Str. 12-16 (450 Plätze)
      • R* – Z*: gr. Hörsaal der Informatik, Takustr. 9 (200 Plätze)
    • post-exam review: Thursday 2017-10-05, 15:59 until at least 16:30, SR 049, Takustr. 9
  • 2nd exam: Monday 2017-10-09, 11:59, Hörsaal 2, Rost- und Silberlaube, Habelschwerdter Allee 45
    • post-exam review: Wednesday 2017-10-18, 15:59 until at least 16:30, SR 049, Takustr. 9

Content

Literature

Subject Matter

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

  1. Introduction: 2017-04-20
    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: 2017-04-24
    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: 2017-05-04!
    The Software Engineering Landscape (Die Welt der Softwaretechnik)
    • routine and innovation: Normal and Radical Design
    • taxonomy: problems and solutions
  4. Modeling: 2017-04-27!
    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: 2017-05-08
    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: 2017-05-11
    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: 2017-05-15
    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: 2017-05-18
    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: 2017-05-22
    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: 2017-05-29
    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: 2017-06-01
    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: 2017-06-01!
    Design Patterns, part 2 (will be joined with part 1)
    • types of design patterns; Proxy pattern; Command pattern; Observer pattern; Strategy pattern; Abstract Factory pattern; Builder pattern
  13. Specify HOW: 2017-06-08
    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: 2017-06-12
    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: 2017-06-15
    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: 2017-06-19
    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): 2017-06-22
    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: 2017-06-26
    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): 2017-06-29
    Project Management, part 1
    • what and what for?; task areas
    • estimation (ways of estimation; function point estimation); death-march projects
  20. Implement (Process): 2017-07-03
    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): 2017-07-06
    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): 2017-07-10
    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: 2017-07-13
    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: 2017-07-17
    Reuse, part 2
    • usability patterns
    • process patterns
    • pattern languages; anti-patterns; tool usages as reuse
  25. Pass on Knowledge: 2017-07-20
    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: self-study
    Summary
    • reprise of first lecture; quick run-through of topics
    • important topics we have not discussed; some advice

Further resources

Software

  • UML diagrams
    • officially: 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 use a normal vector-oriented paint program like e.g. Inkscape.
    • 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)
  • 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:
  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)

  • 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.

Comments

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

 

SWTIDSR
Topic revision: r31 - 17 Jul 2017, FranzZieris
 
  • Printable version of this topic (p) Printable version of this topic (p)