Software Engineering (Softwaretechnik) SS 2016

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 2016-04-18 8:00 am you may register for the tutorials.

  • Tutorials start in the second week of the course
  • The first practice sheet will be made available in the first week of the course on 2016-04-18 and is due on 2016-08-25.

  • Lecture:
    • Mondays, 12-2 pm, auditorium of the Institute of Computer Science (Großer Hörsaal der Informatik), Takustr. 9
    • Thursdays, 12-2 pm, auditorium of the Institute of Computer Science (Großer Hörsaal der Informatik), Takustr. 9
  • Tutorials:
    WhenSorted ascending Who KVV Where
    Monday 10 am - 12 pm Franz 1 Arnimallee 6 SR 025/026
    Monday 2 - 4 pm Michaela 2 Takustraße 9 SR 049
    Monday 4 - 6 pm Michaela 3 Takustraße 9 SR 049
    Thursday 10 am - 12 pm Marco 5 Arnimallee 7 SR 140 (Hinterhaus)
    Thursday 10 am - 12 pm Tanja 6 Takustraße 9 SR 051 (changed from Arnimallee 14 SR T1 (1.3.21))
    Thursday 2 - 4 pm Tanja 7 Takustraße 9 SR 006
    Thursday 2 - 4 pm Marco 8 Arnimallee 3 SR 210
    Thursday 8 - 10 am Marco 4 Takustraße 9 SR 051

  • 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 leaf 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 2016-07-28, 11:59 am - 2 pm, auditorium 1a and 1b, Habelschwerdter Allee 45 ("Silberlaube")
    • Subdivision of the group according to the first letter of the last name:
      • A* - L*: auditorium 1a
      • M* - Z*: auditorium 1b
    • post-exam review: Tuesday 2016-09-20, 10:59 am until at least 11:30 am, SR 055, Takustr. 9
  • 2nd exam: Monday 2016-10-10, 9:59 am, seminar rooms 005 and 006, Takustr. 9
    • Subdivision of the group according to the first letter of the last name:
      • A* - K*: seminar room 006
      • L* - Z*: seminar room 005
    • post-exam review: Wednesday 2016-10-19, 3:59 pm until at least 4:30 pm, 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: 2016-04-18
    Introduction (Einführung)
    • software; software engineering (SE); tasks of SE; personal relevance(Persönlicher Bezug); participants; adequacy criteria (Gütemaßstab): costs/benefits; quality; product and process; principle, method, procedures, tools; technical vs. human aspects; kinds of software engineering situations
    • learning goals; learning approach (Lernstil)
  2. case study: 2016-04-21
    Electronic Health Card (Elektronische Gesundheitskarte)
    • classification, requirements e-prescription ('eRezept') (as to function, performance, availability, safety) (funktionale, Leistungs-, Verfügbarkeits-, Sicherheitsanforderungen), technical workflow, some details, document map, participants, beneficiaries and conflict lines (Konfliktlinien), introduction schedule, digression: digital signatures.
    • "bear-in-mind"-hints regarding: domains, non-functional requirements, need of cooperation, project risk.
  3. introduction: 2016-04-25
    The World of Software Engineering (Die Welt der Softwaretechnik)
    • routine and innovation: normal and radical design
    • taxonomy: problems and solutions
  4. modeling: 2016-04-28 (Franz Zieris)
    modeling and 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 notational details (classes, associations, interfaces, states)
  5. identify WHAT: 2016-05-02
    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-bassed)
  6. identify WHAT: 2016-05-09
    use cases
    • What is a use case?; important parameters (area, level of detail, level of goal); stepwise specification; use case hierarchies (overview, users' aims, details); checklist for use cases
  7. understand WHAT: 2016-05-12
    requirements analysis (static object model)
    • from use cases to classes, Abbott's methods (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: 2016-05-19
    requirements analysis (dynamic object model)
    • finding classes with dynamic modeling; statechart diagrams; sequence diagrams; structure of a requirement analysis document; validation (and contrast to verification)
  9. decide HOW: 2016-05-23
    software architecture
    • architecture means overall structure and approach for meeting the non-functional and functional requirements; global characteristics; reusable architectures (standard architectures); architectural styles (to develop architectures on your own); modularization (terminology (Modulbegriff), seperation criteria (Aufteilungskriterien))
  10. decide HOW: 2016-05-26
    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; behavior after changes; relationship to architectural styles
  11. reuse HOW: 2016-05-30
    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: 2016-06-02
    design patterns, part 2
    • types of design patterns; Proxy pattern; Command pattern; Observer pattern; Strategy pattern; Abstract Factory pattern; Builder pattern
  13. specify HOW: 2016-06-06
    interface specification
    • visibilities (public, protected, private, package), specification of preconditions and postconditions with OCL (context, pre, post, inv); illustration of associations in code
  14. test IF: 2016-06-09
    analytical quality assurance, part 1
    • defect test; selection of input (performance check, structural test); selection of test items (bottom-up, top-down, opportunistic); identification of the expected behavior (reference system, oracle, partial oracle); repetition of tests (regression test, test automation)
  15. test IF: 2016-06-13
    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: 2016-06-16
    constructive quality assurance (quality management, process mgmt.)
    • project mgmt. vs. process mgmt.; types of process mgmt. guidelines; CMM-SW/CMMI (5 process maturity levels); TQM (principle: customer satisfaction); ISO 9000
  17. decide HOW (process): 2016-06-20
    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. ancillary conditions: 2016-06-23
    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): 2016-06-27
    project management, part 1
    • what and what for?; task areas
    • estimation (ways of estimation; function point estimation); death-march projects
  20. implement (process): 2016-06-30
    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): 2016-07-04
    project management, part 3
    • teams; sport team or choir?; organizational structures; roles; communication structures
    • psychological factors; evaluation of probabilities; motivation; attribution; attitudes; social influences
  22. implement (process): 2016-07-07
    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: 2016-07-11
    reuse, part 1
    • types of reuse (product/process; object; aim); risks assessment; obstacles; productivity; reuse for normal design; patterns; types of patterns; principles (abstraction, structuring, hierarchy, modularization, locality, consistency, suitability, reuse, notations)
    • analysis patterns
  24. maximise normal design: 2016-07-14
    reuse, part 2
    • usability patterns
    • process patterns
    • pattern languages; anti-patterns; tool usages as reuse
  25. pass on knowledge: 2016-07-18
    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: 2016-07-21
    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