Natallia Kokash

Researcher at Leiden University

Main menu: Home | Publications | Presentations | Reviews | Gallery

sample header image

Courses: Software Engineering

Leiden University, Fall 2011

See also web page of Werner Heijstek for the Software Engineering course in BSc. Computer Science (2d year).

Lecture Slides

  • 06/09/2011 - Introduction to Software Engineering [PPTx, PDF].
  • 13/09/2011 - Requirements Engineering and Configuration Management [PPTx, PDF].
  • 20/09/2011 - Software Modeling [PPTx, PDF].
  • 27/09/2011 - Software Architecture [PPTx, PDF] and Design [PPTx, PDF].
  • 04/10/2011 - Software Quality [PPTx, PDF]
  • 11/10/2011 - Global Software Engineering (by Werner Heijstek) [PDF]
  • 27/10/2011 - Software Testing (by Baart Knaack) in Leiden! [PDF]
  • 01/11/2011 - Software Reuse, Component-Based Software Engineering and Service-Oriented Architectures [PPTx, PDF]
  • 08/11/2011 - Software Maintenance [PPTx, PDF]
  • 15/11/2011 - Design Pattern Refactoring (by Werner Heijstek) [PDF]
  • 24/11/2011 - Software Estimation, Planning & Control (by Ir. Ronald Oudshoorn) in Leiden!
  • 29/11/2011 - Empirical Research in Software Engineering (by Werner Heijstek) [PDF]

Practical Assignment

In software engineering, Unified Modeling Language (UML) diagrams are a meaningful medium to draft and document system design. For already delivered systems such diagrams can be found in architecture descriptions, mostly embedded in other documents as bitmaps. Such embedding in bitmap files (JPG, PNG, BMP) makes them difficult to access for research, analysis and reuse by third parties. Your task is to develop an application capable of recognizing UML class diagrams in bitmap images and extracting them into XMI files. For the detailed information about XMI format, refer to the OMG XMI specification [PDF].


The following documentation artifacts have to be delivered in course of the project:

  • Software Development Plan [Word document]. The Software Development Plan is a comprehensive, composite artifact that gathers all information required to manage the project. It encloses a number of artifacts developed during the inception phase and is maintained throughout the project.
  • Software Requirements Specification [Word document]. The requirements specification document provides an outline of the envisioned core requirements and the contractual basis for the more detailed technical requirements.
  • Configuration Management Plan [Word document]. The Configuration Management (CM) Plan describes all Configuration and Change Control Management (CCM) activities you will perform during the course of the product or project lifecycle. It details the schedule of activities, the assigned responsibilities, and the required resources, including staff, tools, and computer facilities.
  • Software Architecture Document [Word document]. The Software Architecture Document provides a comprehensive architectural overview of the system from different architectural viewpoints.
  • Design models (NO TEMPLATE). The design model is an object model describing the realization of use cases, and serves as an abstraction of the implementation model and its source code. The design model is used as essential input to activities in implementation and test. Use a UML design tool and deliver your design sufficiently documented in a PDF file. The document to be delivered should at least include a class diagram, a sequence diagram, an activity diagram and a state chart diagram.

Using Google Source Code Repository

The progress of each group will be tracked through an online repository just like in a normal software company. To use the repository you need to have a Google account. Send us your Gmail address and we will grant you access to the Image-to-UML project SVN repository at the Google Source Code. After that follow the instructions available at the Source tab of the SVN repository to access the project using your SVN client.

Image-to-UML repository address:

Each group's directory should have the following structure and contain the following documents:


  • Requirements: a) groupX_ieee_requirements.pdf, b) groupX_requirements_questionnaire.pdf
  • Analysis & Design: a) groupX_rup_sad.pdf, b) groupX_rup_cmpln.pdf, c) groupX_uml_design.pdf
  • Implementation: a) trunk (put your source code here), b) tags. Read more about the conventional use of the SVN trunk, branches and tags directories here [link].
  • Project Management: a) groupX_rup_sdpln.pdf

Available libraries for image processing and OCR (Optical Character Recognition)

(Note that this list is not complete. You are allowed to use any programming language and any library you find useful).

  • VC++: OpenCV, tesseract OCR, Asprise OCR (free trial)
  • Java: Algoritharium package, tesseract OCR, java OCR, Asprise OCR (free trial)
  • C#: AForge.NET Framework, MODI (Microsoft Office Document Imaging Library), tesseract OCR, Asprise OCR (free trial)

Test images

Samples of class diagram image files that your program should be able to parse can be found here [ZIP archive].

Important Werkcollege Sessions & Project Milestones

  • 20/09/2011: (Session 2) Requirements Elicitation Session
  • 27-09/2011: (Session 3) Requirements Review Presentation
  • 04-10/2011: (Session 4) Architecture & Design Presentation
  • 11-10/2011: Milestone 1 - User Interface
  • 18/10/2011: Milestone 2 - Integrate shape recognition & OCR libraries
  • 25/10/2011: Milestone 3 - Recognize outer UML shapes
  • 01/11/2011: Milestone 4 - Integrate shape and character recognition
  • 8/11/2011: Milestone 5 - Recognize relationships
  • 15/11/2011: Milestone 6 - Optimization
  • 22/11/2011: (Session 5) System Demonstration
  • 29/11/2011: (Session 6) Evaluation System Design and Documentation

Extra Information and Useful links

Lecture 1: Introduction to software engineering

  • Laws of Software Development [link].
  • Scrum in Five Minutes [PDF].

Lecture 2: Requirements engineering

  • COTS component selection example (CCCS method) [link].

Lecture 3: Software modeling

  • XMI and MOF: a mini-tutorial [PDF].

Lecture 6: Global software development

  • Herbsleb, J. D. & Mockus, A.: An Empirical Study of Speed and Communication in Globally Distributed Software Development, IEEE Transactions on Software Engineering, IEEE Computer Society, 2003, 29, pp. 481-494 [PDF]
  • Carmel, E.; Agarwal, R.: Tactical Approaches for Alleviating Distance in Global Software Development, IEEE Software, Mar/Apr 2001. Vol. 18 Iss. 2, pp. 22-29 [PDF]
  • Thanh Nguyen, Timo Wolf, Daniela Damian: Global Software Development and Delay: Does Distance Still Matter?, In Proceedings of the International Conference on Global Software Engineering , pp. 45-54, 2008 [PDF]

Lecture 10: Design Patterns Refactoring

  • Shalloway and Trott (2005) "Design Patterns Explained" Chapter 1 (pp. 16 - 40) "The Object-Oriented Paradigm" [PDF]
  • Shalloway and Trott (2005) "Design Patterns Explained" Chapter 5 (pp. 80 - 95) "An Introduction to Design Patterns" [PDF]

Lecture 12:

  • C. J. Stettina, W. Heijstek: Necessary and Neglected? An Empirical Study of Internal Documentation in Agile Software Development Teams, ACM International Conference on Design of Communication (SIGDOC 2011) [PDF]
  • F. Shull, J. Singer, D. Sjøberg (Edts.) (2008) Guide to Advanced Empirical Software Engineering, Springer. [PDF]
  • R. Conradi, A. Wang (Edts.) (2003) Empirical Methods and Studies in Software Engineering, LNCS 2765, Springer [PDF]
  • P. Runeson, M. Höst. (2009) Guidelines for conducting and reporting case study research in software engineering, Journal of Empirical Software Engineering, 14:131-164 [PDF]