SENG 371 Software Evolution

Professor Hausi A. Müller, PhD, PEng
Department of Computer Science
Faculty of Engineering
University of Victoria

Last updated
April 18, 2013

Assignment 2

Due date

  • Mon, March 11, 2013 (i.e., Tue before 1 am) --- revised

Objectives

  • Introduction to reverse engineering
  • Introduction to software architecture extraction and modeling
  • Introduction to software architecture viewtypes and styles
  • Introduction to module, component-and-connector and allocation viewtypes
  • Introduction to configuration managements systems
  • Introduction to reverse engineering
  • Introduction to program understanding
  • Introduction to documenting software architecture

Instructions

This assignment consists of three parts. In Part I you are to review and summarize three papers. In part II you are to define selected software engineering and evolution terms. In Part III you are to extract and analyze the architecture of a medium-size software system.

Part I

Summarize the following three reverse engineering papers:

The answers for this question should fit into approximately 2-3 typeset pages.

 

Part II

Define the following software architecture and evolution terms. Each definition may be as short as a single sentence or as long as a paragraph. Use textbooks, the library, and the Web to research these terms. Don't assume that these terms be discussed in class.

  • Software component
  • Software connector
  • Architecture style
  • Conceptual model
  • Concept assignment
  • Horseshoe model for software reengineering
  • Top-down program understanding
  • Bottom-up program understanding
  • Opportunistic program understanding
  • Call graph

The answers for this question should fit into approximately 2-3 typeset pages.

Part III

A key objective for this course is to learn how to extract software architecture artifacts from the descriptions (i.e., code and documentation) of a subject software system, how to summarize software artifacts, and how to document software architecture effectively. These are critical evolution activities from the early design stages to the long-term maintenance of a software system. We begin this exercise by analyzing the Unix awk utility.

You are to write a report that illustrates the architecture of the gawk. The report is intended for third year computer science students. Thus, you can assume basic software engineering terms and knowledge.

gawk is written in C and consists of approximately 25,000 lines of code (LOC) in 19 .c files, 9 .h files.

The source code can be found at a GNU web site or at the course web site as follows:

gawk source code:

http://www.gnu.org/directory/gawk.html
http://www.gnu.org/software/gawk/gawk.html

gawk source at UVic:

http://www.engr.uvic.ca/~seng371/gawk/gawk_3.0.4.orig.tar.gz

gawk source in rsf form at UVic:

http://www.engr.uvic.ca/~seng371/gawk/gawk-3.0.6-htmld.rsf

http://www.engr.uvic.ca/~seng371/gawk/gawk-3.0.6-sorted.rsf.gz

rsf files can be viewed using the Rigi reverse engineeering and visualization system as well as other reverse engineering tools such as SHriMP or PBS. All these tools can be downloaded via the course resource page. Also check out the tools available in the BSEng labs.

For Rigi: Make sure you save the rsf file with type or extension .rsf in a subdirectory gawk of the directory db directory of the Rigi installation. If the file was saved as an .html document, it may contain an <html> header, which needs to be stripped before loading into Rigi.

To load this file into Rigi, start the Rigi application, select the cparse Domain by clicking on the Domain button in the Rigi Workbench, and select OpenGraph from the File menu. Select Window Statistics from the Report menu. The window summarizes the different node and arcs types and number of nodes and arcs loaded.

Read the tutorial pages (i.e., pages 9-36) in the Rigi manual to get started and start with some key names to start organizing this huge graph.

Rigi, University of Victoria

gawk user manual:

All formats: http://www.gnu.org/software/gawk/manual/

HTML format: http://www.gnu.org/software/gawk/manual/gawk.html

Your report should address the following questions:

What are the major static components of this software system? What are the dependencies or relationships among these components?

How do the major components interact?

What are the "concerns that are separated" in this software system? In other words, how is the software engineering principle "separation of concerns" implemented?

How can this software system evolve? Which components are expected to change regularly and which components are expected to be relatively stable over time? Is this system designed for ease of evolution?

The report should include diagrams (e.g., architecture, UML, data flow, or entity relationship diagrams). Deciding what kind and how many diagrams to draw, and at what level of abstraction, is critical for this assignment.

Use the software architecture viewtypes and styles to document your extracted artifacts, components, and architectures. Consult the on-line resources for this course and in particular the SEI Architecture Resources (e.g., Documenting Software Architectures, Software Architecture and Product Quality) as well as UML OMG Resources.

You can use any tools you find out there to extract artifacts and/or to prepare diagrams. Selecting appropriate tools and deciding what kind of diagrams to draw is part of the excercise.

How to run Rigi on a Mac and under Windows 7
by Mackenzie Marshall, SENG 371 student

Create Windows 7 virtual machine (VM)

Dowload Windows XP/2000 version of Rigi:

Add system variables to windows machine.

  • Go to Computer -> System Properties -> Advanced System Settings -> Environment Variables.
  • Click "New" buttonunder the "System variables"
    and add the following variables:
    • RIGI "the path to your extracted rigi folder"\rigi
    • TCL_LIBRARY %RIGI%\lib\tcl8.4
    • TK_LIBRARY %RIGI%\lib\tk8.4
    • path %RIGI%\bin

Installation instructions

Add .rsf files

  • RSF files you wish to parse under "your rigi folder"/rigi/db/gawk

Run Rigi

  • Go to "your rigi folder"/bin
  • Double click "rigiedit.exe"
  • Use "Refresh" from "Windows" menu to redraw the windows.
  • Explore RCL commands to automate tasks.

These same steps work for Windows 7.

 

Important

The work you turn in has to be your own work. You can consult with other students and consult the web, but in the end you have to turn in your own solution in your own words. Write six (6) pages or at most 2500 words.

How to submit

Submit your assignment as follows:

  1. Typeset your submission neatly using Word, Pages, or LaTex and generate pdf documents.

  2. Please use the following naming conventions for your file:

      A2-lastName-UVICID.pdf

      or alternatively

      A2-lastName-UVICID-part1.pdf
      A2-lastName-UVICID-part2.pdf
      A2-lastName-UVICID-part3.pdf

  3. Please mail your documents using the following submission interface (ideally as one .pdf file)
    seng371@uvic.ca



Marking

  • Part I is worth 20%; Part II 20%, and Part III 60%.