Selected topics in software development

Quarter 3, 2008

   Assignments
   Evaluation
   Exam
   Home
   ISIS home
   Pensum
   Plan
   Slides


The CPH STL
The CPH STL project

Review assignment

The purpose of this assignment is to perform a formal inspection of the main components of the CPH STL (www.cphstl.dk). The students will be divided into about 9 groups and each group will inspect a separate component of the library. The inspections are done in two phases. First, the reviewers read the design and the code of the component and write a list of found defects. This list should be committed into the CPH STL CVS repository (module Review, directory Software-development-2008). (This phase is done individually as agreed at our discussion session.) Second, the reviewers meet in a formal inspection meeting on the 19th of February. We have reserved the whole afternoon for these meetings (at 12-14, 14-16, and 16-18; in N014, N018, and N022). One of teachers will be present in these meetings as a moderator. Other roles should be taken by the students.

To get started, read Chapter 21 on Collaborative construction from the book Code Complete [2]. A copy of this chapter is available at the kopirum (in a red box with label Jyrki). To get access to cphstl.dk, visit Jyrki's office and he will open an account for you (with the same name and password as you have in other computers at DIKU). To learn how to use CVS, look at the documentation behind the links given on the CPH STL home page (under Tools).

Before the review you should read the formal specification of the component under inspection. This can be found from Clause 23 of the C++ standard [1]. In the following checklist, some important guidelines for reviewing a CPH STL component are given. See also the checklist given in [2, p. 491].

  • Is commenting done properly?
  • Are all functions defined actually used?
  • Are variable names descriptive?
  • In the case of generic programming are any explicit types used in the code?
  • Is it possible to make the program shorter and easier to maintain?
  • Are the concepts used in the implementation within the bounds specified in the C++ standard? (E.g. a bidirectional iterator does not have operator+, but operator++.)
  • Are the strict running-time requirements specified in the C++ standard fulfilled?
  • Are the iterator-validity requirements specified in the C++ standard fulfilled?
  • Are the exception-safety requirements specified in the C++ standard fulfilled?
  • Are allocators used adequately?
  • Are there any memory leaks?

Groups

Meeting Group Component CPH STL reports Code
19/2 at 12-14 in N018 Daniel, Filip, Christian vector 2001-7; 2004-2 Program/Deque (tree vector); Program/Vector (doubling tree)
19/2 at 12-14 in N022 Claus U., Tina vector 2004-2 Program/Vector (doubling array)
19/2 at 14-16 in N018 Jon, Johannes S., Martin D. unordered_set unordered_multiset unordered_map unordered_multimap (linear hashing) 2001-5, 2005-4 Program/ Hash_table
19/2 at 14-16 in N022 Bo, Ulrik, Iman meldable_priority_ queue (binomial queue) Dirk's & Sune's progress report Report/ Meldable-priority- queues
19/2 at 16-18 in N022 Adam, Simon meldable_priority_ queue (maxiphobic heaps) Kean's progress report Report/ Meldable-priority- queues
20/2 at 13-15 in Jyrki's office Frej set multiset map multimap (red-black trees) Martin's & Johannes' progress report Report/ Search-trees

References

[1]
American National Standards Institute: International standard: Programming languages---C++, 2nd edition, ISO/IEC (2003) [pdf]
[2]
Steve McConnell, Code complete: A practical handbook of software construction, 2nd edition, Microsoft Press (2004)
This page was last modified by Jyrki Katajainen on 19.04.2008.