|
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)
|