J. Software Engineering & Applications, 2010, 3: 495-502
doi:10.4236/jsea.2010.35056 Published Online May 2010 (http://www.SciRP.org/journal/jsea)
Copyright © 2010 SciRes. JSEA
Raising Awareness of the Constituents of Software
Design – The Case of Documentation
Lavy Ilana, Yadin Aharon
Management Information Systems, Emek Yezreel Academic College, Emek Yezreel, Israel.
Email: {ilanal, Aharony}@yvc.ac.il
Received December 6th, 2009; revised December 21st, 2009; accepted December 23rd, 2009.
ABSTRACT
This research was performed within a software engineering workshop for Computer Science students. For addressing the
soft skills issues required by the industry, the course was delivered as a workshop with various (inter and intra) team
based activities. An additional objective of outlining the importance of software maintainability issues was achieved
through team-based role play. There were three assignments in which each team had to continue the work performed by
another team, thus creating a dependency between the teams as might happen during maintenance. The main research
study objective was to examine the effect of employing this kind of a team-based role-play peer-review on the students’
learning process regarding maintainability. Data referring to the students’ perceptions is presented and analyzed in
addition to student reflections on the workshop which demonstrate their expanded understanding of the design and
application process.
Keywords: Team-Based Role Play, Software Engineering, Peer Review, Maintainability
1. Introduction
The term software engineering appeared first at a NATO
conference in 1968 [1] and it was intended to ignite dis-
cussions on the process of developing correct, testable,
and understandable computer programs. At that time, the
“software crisis”, that was partially caused by the rapid
developments in computer technologies combined with
more, complex user requirements, and the lack of “engi-
neering” methodologies for software development [2].
Since then the process of software engineering has ma-
tured and is accepted as a proven learning discipline. The
Software Engineering course is an important part of the
Computer Science (CS) and Information Systems (IS)
curricula, however many students regard it as less appli-
cable in their future careers [3]. Information systems and
software based systems in general, require follow-up
maintenance due to the existence of potential bugs that
will have to be corrected, the high likelihood of functional
enhancements to be introduced to the programs. For
lowering the costs associated with these ever increasing
needs for software maintenance adoption of proper soft-
ware engineering methodologies is required. Thus soft-
ware maintainability plays a critical function in the soft-
ware engineering process, not unlike the role of software
development itself.
Cognizant of the students’ difficulties regarding non-
technical knowledge such as critical thinking, interper-
sonal and team based skills, the Software Engineering
workshop structure employs many inter-team and in-
tra-team activities. Furthermore, to raise the students’
awareness to the importance of documentation and the
role it plays in maintainability, the workshop employs an
incremental life-cycle involving each team in three ac-
tivities: design (including documentation), development,
and testing. However, unlike the ordinary software de-
velopment life-cycle, in which each team performs the
three activities for the same project the workshop struc-
ture employs a team-based role play. By team-based role
play we mean that the design, development and testing is
swapped among the teams. Initially all the teams are given
the same project, and each team prepares his own design.
The second assignment consists of developing the system
according to the design specifications, but each team
develops a system that was designed by a different team
and not the system it has designed. The third assignment
consists of defining the test specifications and testing the
system, however, once again, each team tests a system
designed by one team and developed by another. When
proceeding to the next assignment, the team is required to
ignore their prior knowledge or ideas and to concentrate
only on the system as it has been designed (or developed)
by another team of their peers.
Raising Awareness of the Constituents of Software Design – The Case of Documentation
Copyright © 2010 SciRes. JSEA
496
The main research study objective was to examine the
effect of employing this kind of a team-based peer-review
on the students’ learning process in a software engineer-
ing workshop with special emphasis on their perception
regarding documentation. This paper describes the work-
shop structure and the quantitative and qualitative results
obtained from employing it.
2. Theoretical Background
Software development is a collaborative task that employs
teams of developers working together [4]. To enhance
software readability and maintainability, software engi-
neering practitioners have been striving to improve ex-
isting tools and methodologies. Among these various
practices, documentation - used to describe the required
software, its structure, logic and performance - is high on
the list [5,6]. Without the proper documentation, the fu-
ture maintainer will find it extremely difficult to under-
stand the system or its processes. Poor and missing
documentation is a major contributor to software quality
degradation and aging, compounding an increase in
maintenance costs [7]. In spite of this, many students fail
to recognize the importance of documentation on main-
tainability [3].
Software engineering is an integration of many prac-
tices, methodologies and tools.. One of the initial practices
is software documentation. However, even at present
many systems are still developed and released without
proper documentation [8]. In response, several method-
ologies have been developed to address the unsolved
problem of the documentation lag [9]. The Agile Mani-
festo, for example, puts greater emphasis on the devel-
oped product while ignoring detailed documentation. This
methodology welcomes change and stresses fast delivery
of useful software, based on the close collaboration be-
tween developers and customers.
Software documentation is a general term that refers to
two types of documentation: 1) documenting the user
requirements that provide the basis for designing the
system to be developed, and 2) documenting the software
to be developed, or that was developed, for aiding de-
velopment or future maintenance activities. These main-
tenance activities, according to many studies, are the most
expensive part in the software development life-cycle [10].
The Agile methodology is helpful in reducing the amount
of work needed during the first documentation process
(requirement elicitation and project development). How-
ever, for future maintenance of the developed software,
proper documentation is still required. For that reason, the
documentation required to the Agile methodology is done
at the end of the project and remains inadequate for
maintenance purposes [11]. For years educators and
practitioners have stressed the importance of documenta-
tion (during the design phase or after project completion),
however many projects are still released without proper
maintenance documentation.
2.1 Software Maintenance
A common definition for maintenance is that it is per-
formed after product delivery. Software maintenance, as
well, refers to the activities carried out after the devel-
opment’s completion. However, software maintenance is
very different from “ordinary” equipment maintenance.
While in other engineering disciplines maintenance in
intended to fix a problem [12] and keep the equipment
running so it will continue to provide the original func-
tionality, software maintenance, in many cases is required
to enhance the functionality based on the ever changing
requirements due to the operational environment, the
competition, and the business climate. Meeting these new
and changing requirements is unique and basic software
characteristic, as defined in Lehman’s laws of software
evolution [13,14]. Furthermore, software is constantly
being modified to utilize new hardware equipment and for
integration into new environments.
Introduction of the software development life-cycle has
led several researchers to consider activities related to
software maintenance, which are initialized while the
software is being developed and not only after delivery.
Additionally, some researchers emphasize that starting the
maintenance activities after completing development
leads to an unnecessarily more complex and costly task
[15,16]. Others define software maintenance as a mix of
activities, some performed after delivery and some per-
formed during development. The pre-delivery activities
include the necessary planning for the post-delivery ac-
tivities [17].
2.2 Students’ Perception Regarding Maintenance
There has been a great deal of improvement in software
development over the last decade. Many new techniques,
methodologies, languages and tools have been created to
advance the development processes. Software mainte-
nance, however, lags behind mainly due to its reactive
nature. Introducing systemic approaches to software
maintenance is inherently problematic [18]. The required
software maintenance (error corrections or introductions
of new features) cannot be postponed or circumvented. By
nature software maintenance is a disorganized process
which deteriorates the software’s architecture (Lehman’s
second law of software evolution [13]). This deterioration
is due in part to missing knowledge which is required for
maintenance. In addition, any changes introduced dete-
riorate the system architecture further, making future
maintenance even more difficult. The lack of correct and
updated documentation is one of the main causes for this
missing knowledge.
During their first and second years of study, students
become acquainted with these facts, however in spite of
the lecturers’ efforts; software documentation continues to
Raising Awareness of the Constituents of Software Design – The Case of Documentation
Copyright © 2010 SciRes. JSEA
497
be insufficient. More troubling is the fact that students do
not assimilate the need for, and importance of, proper
documentation [3]. Many students consider the develop-
ment stage as the most important activity in the software
development life cycle, totally ignoring the fact that suc-
cessful software will have to be maintained for a long
time.
2.3 Peer Review in Higher Education
Peer review is a form of external evaluation carried out by
professional colleagues [19]. Peers can be experts in the
field but can also be classmates who poses the same level
of knowledge and assess the work of fellow students. Peer
review is a widely practiced form of certifying quality in
higher education [20], and has been described as a for-
mative evaluation process in which participants work
collaboratively to strengthen a product [21]. Peer review
is generally said to encourage critical examination, pro-
mote the exchange of ideas, reduce non-academic inter-
ference, guide academic discourse, and reinforce aca-
demic values [22]. Peer review assumes the existence of
norms by which a peer’s work may be judged. Through
critical examination, norms are used to compare a peer’s
work to accepted practices. If a peer’s work deviates sig-
nificantly from accepted norms, then an attempt to correct
it will likely occur. Being aware of the advantages of peer
review, it has been incorporated as an integral part of the
workshop. The inter-team and intra-team peer review was
used to enhance the students’ learning abilities and to
enforce critical thinking. However, In addition to the
common peer review, the workshop requires the students
not only to evaluate and assess their peers work, but also
build on it. The students’ success in performing their
assignments depends on their ability to understand the
work or their peers. This elevates the assessment process
to a new and more important level.
3. The Study
In what follows we discuss the study performed while
addressing the participating students’ the workshop’s
structure including the assignments and the grading
scheme.
3.1 About the Study Participants
The workshop is a mandatory course taken during the
second year of study. A total of twenty-six college stu-
dents participated in the present study. In the workshop
the students were divided into seven teams (five teams of
four students and two teams of three students). At this
stage the students have already learned software modeling,
UML usage, etc. In addition to the standard topics of the
software engineering course, one of the workshop’s im-
portant objectives is to prepare the students for their Final
Project and the real world challenges they will face.
3.2 The Course
The systems engineering workshop’s general objectives
are to introduce software development life cycle concepts
to the students while enhancing their understanding of
documentation and product maintainability. Since soft-
ware is considered one of the most complex systems
produced by humans [23], students have to adopt proper
working procedures for lowering the development risks
and the high maintenance barriers. Documenting their
ideas and thoughts during the design phase is crucial for
future understanding of the software to be developed.
Other objectives relate to 1) practical understanding of
the software development stages required for develop-
ment of a modern Information System; 2) implementing
these stages in a small project; 3) understanding the
problems associated and caused by working in teams, and
4) developing the required “soft skills” (critical thinking,
team work, interpersonal relationships, etc). For that
reason, the workshop augments knowledge and under-
standing gained in current and previous courses, and is
practical, “hands-on,” and team-based.
All seven teams received and worked on an identical
project. The project was a general description of a re-
quired system that was to be developed (an Internet based
electronic auctions, or e-bidding system). As part of the
first assignment, the students had to study the existing
systems, address and assess various alternatives, and
suggest ways (and a software based system) of providing
an agreed upon functionality. The workshop structure
followed the software development life-cycle and was
based on three incremental assignments.
Each assignment required personal and individual work
followed by team activities (in person or by using various
collaborative tools).The students had four weeks for each
assignment throughout the process the students consulted
their instructor (via email, the workshop web site, and
personal meetings) on various issues related to their as-
signment. In order to reinforce the importance of docu-
mentation and maintainability, the teams were engaged in
role-based development in which the teams shared all
responsibility for their success. While a specific project
was designed by one team, developed by another team and
tested by a third team, in the end each team had to work
not only on the three stages of the assignment but on each
one of the three design solutions (Figure 1). This way,
each team was involved in developing a system designed
by another team while trying to understand some of the
undocumented intentions expressed in the design. This
forced them to seek help from the designing team. On the
other hand, this developing team had to help another team
that was trying to develop the system based on their de-
sign document. The interdependence of these stages was
stressed and made apparent to all teams. This workshop
structure was designed to enhance the students’ under-
Raising Awareness of the Constituents of Software Design – The Case of Documentation
Copyright © 2010 SciRes. JSEA
498
standing regarding the importance of documentation
through their own experience.
Figure 1 depicts the workshop’s structure. The long
horizontal rectangles represent the seven versions of the
same project, while the three vertical columns represent
the assignments (A1, A2 and A3). As can be seen, each
project consists of the three assignments performed by
three different teams. Each team, on the other hand,
worked on all three assignments, each one belonging to a
different project.
The workshop requirements included two types of de-
liverables: 1) team assignments, and 2) a personal as-
signment.
3.2.1 Team Assignments
The software development life-cycle activities were di-
vided into three team based assignments: 1) project defi-
nition and design; 2) project development, and 3) project
testing.
3.2.1.1 Project Definition and Design
The first assignment started with a very brief description
of the project, the functionality and the required devel-
opment activities. The students studied available e-bid-
ding systems, documenting their functionality, and used
them as a basis for the system they were required to de-
velop. Since such a large project cannot be completed
during the semester, the students had to identify at least
five different users to be supported by the system and for
each user a set of Use-Cases had to be defined. In addition
to the Sequence Diagrams supporting these Use-Cases,
the students had to define the non-functional requirements
associated with these Use-Cases. The system analysis
phase (which is part of this assignment) included a high
level design (System architecture and the Class Diagram)
as well as a detailed design (Activity Diagram followed by
a Program Design Language definition for the described
functionality). All these activities required a great deal of
individual work as well as collaborative work in which
each student assessed and approved the work performed
by other team members.
3.2.1.2 Project Development
The second assignment consisted of the development of
the system according to the Project Definition and design
document (the first assignment). However, instead of
developing the system according to their own design, each
team had to develop the system as it was defined by an-
other team. The developing team had to carefully follow
the document they received, ignoring all their prior
knowledge or ideas they may have expressed in their first
assignment. Small code modifications were permitted,
provided that the definition in the document they received
was erroneous and could not be implemented. After
completing the development, each team had to compile a
‘difference’ document, outlining the changes between the
Figure 1. The Workshop’s Structure
implementation and the document as received, with spe-
cial emphasis placed on the reason behind these changes.
At this stage stress is not placed on enhancing the product
to be developed, but rather on developing it according to
the exact specifications outlined in the definition docu-
ment. An additional document which was part of this as-
signment was a short evaluation of the first assignment’s
quality as it was reflected in the implementation. The last
document to be submitted as part of this assignment was a
Unit Test Plan for each of the methods developed.
3.2.1.3 Project Testing
The third assignment consists mainly of the testing phase.
The students have to implement the Unit Test Plan as was
designed by the previous team. Due to time constraints the
workshop addresses only part of the required project de-
velopment, so for testing the software pieces developed by
the previous team, the testing team had to include addi-
tional developments (a test generator and a stub). These
additional developments were required for building the
testing infrastructure for the developed software pieces.
As part of this assignment the team is required to correct
mistakes that were discovered during the testing. The
corrected code has to be tested once again. This process is
repeated until everything runs according to the specifica-
tions, as outlined in the project definition document (the
first assignment of this project). This third assignment
also includes the testing report that summarizes the
problems discovered and their corrections. In addition,
this assignment includes a system test plan with at least
ten detailed test cases. This plan is for the Quality As-
surance staff, so it has to be detailed and based on the
system functionality as derived from the project definition
document (first assignment). The last part of this assign-
ment is a quality test plan that concentrates on the
non-functional attributes of the system, with a special
Team 6Team 7Team 2
Team 5Team 3Team 7
Team 4Team 6Team 1
Team 7Team 1Team 4
Team 3Team 5Team 6
Project 5
Team 1Team 2Team 3
Team 2Team 4Team 5
Project 3
A1: Project
design
A2:Develop
-ment
A3: Testing
Project 1
Project 2
Project 4
Project 6
Project 7
Raising Awareness of the Constituents of Software Design – The Case of Documentation
Copyright © 2010 SciRes. JSEA
499
emphasis on the metrics to be used or defined.
3.2.2 Personal Assignment
The personal assignment is mainly an activity summary
report, in which each student describes 1) the work done
during every stage of the project; 2) his/her part in these
activities; 3) the problems they (as a team) encountered
during the project and 4) the problems he/she encountered
personally. There is also a short reflection on the work-
shop, as well as a one sentence summary about the
workshop’s results. The last part reflects on the work
distribution among the team members (100 points that the
student divides between the other team members to ex-
press their relative contribution toward each of the three
assignments).
3.3 The Workshop Grading Scheme
Since one of the important workshop goals is to strengthen
team work, most of the grades are based on the team’s
activities. Each of the first two assignments makes up
33% of the grade, while the third, which is simpler, com-
prises 24%. The personal report, including the short re-
flection, contributes an additional 10%.
The grading scheme took into consideration the work
distribution as was described by each team member. Five
points (out of the 90 points allocated for team activities)
were used as floating points among the team members,
based on their average contribution to the team’s success
4. Learning Process Evaluation Methodology
The evaluation method included a comparison between
two questionnaires. The first questionnaire was part of a
survey conducted during the workshop’s first lecture, in
which students were asked to rate their perception re-
garding the relative importance of the three project phases
expressed by the planned assignments. A similar survey
was conducted during the last lecture producing the sec-
ond questionnaire. Since the end of semester question-
naire was identical to the questionnaire used in the first
lecture, its intention was to measure the workshop’s in-
fluence regarding the perceived importance of the three
phases and especially the importance of documentation
and testing on the software engineering activities. In ad-
dition, the evaluation process analyzed the student’s re-
flections on their workshop experiences.
For implementing a successful inter-team role play, the
workshop was highly structured. In addition, pre-defined
templates were used for all the team based assignments.
However, in contrast to these pre-defined templates the
personal reports were composed of free style answers. The
only data provided were the points to be addressed in
these reflections. This open format encouraged students to
concentrate on the issues s/he felt were important and
offered a better understanding of the students’ achieve-
ments during the workshop.
5. Results and Discussion
In what follows we present data and discuss the effect of
the workshop’s structure on the students’ perceptions
regarding the importance of documentation on the pro-
ject’s success, as well as their reflections regarding the
benefits of the workshop.
5.1 The Assignment’s Relative Importance
The first questionnaire results are outlined by Figure 2. It
is no surprise that CS students regarded development as
the most important activity (70% of the project). Testing
was perceived to be of secondary importance (16%) and
documenting the design phase was perceived to be the
least important (14%) in the design and development of
software.
The students explained the relatively low importance of
documentation by citing the fact that the methodology and
the tools used (UML – Unified Modeling Language as
well as the code itself) provide all the necessary docu-
mentation. The results obtained in this survey were no
different when compared to the results from the previous
year. These consistent results were the trigger for the
workshop structure and one of its objectives was to con-
vince students, through their own practical experience
about the importance of documentation.
As was demonstrated by the first questionnaire (Figure
2), most students view development as the most important
activity of a project (70%). However, the second ques-
tionnaire revealed that the students began to realize the
importance of the subsequent components and the role
they play in determining the project’s success. Therefore,
by the semester’s end, development’s perceived impor-
tance was reduced by 31% (to 48% of the project), while
the relative importance of the documentation assignment
increased by 59% (from 14% in the first questionnaire to
23% in the second questionnaire). Testing’s perceived
importance also increased - by 83% (from 16% in first
questionnaire to 29% in the second).
Figure 2. Relative Assignment Importance (1st Lecture)
Ducumentation
Development
Testing
Raising Awareness of the Constituents of Software Design – The Case of Documentation
Copyright © 2010 SciRes. JSEA
500
Figure 3. Relative Assignment Importance (Last Lecture)
There are many factors affecting the relative importance
of the various life cycle stages and the amount of time
required for each one. These factors, for example may
include customer requirements, project type, the software
development life cycle methodology, the programming
languages and CASE tools, etc. In most cases the devel-
opment stage requires less than 30% of the project esti-
mated time. Glass [24] uses 20% for requirements elici-
tation, 20% for design, 20% for coding and 40% for test-
ing. The requirements elicitation is not part of this work-
shop since the project and its general requirements were
predefined and the students had to study available solu-
tions and decide which parts to design and implement. At
the end of the semester, the students still regard coding
(development) as the most important component, but it is
significantly (31%) less than its importance at the begin-
ning of the semester. The end of semester percentages are
closer to the numbers used by researchers and practicing
software engineers.
The change in the students’ perception regarding the
relative importance of the various project components is
directly linked to the workshop’s structure. There were
many instances during the second stage of the workshop,
in which the students were trying to drop the design spe-
cifications they received from the previous team, claiming
these specifications will not produce a viable solution and
the project cannot be developed. In all cases it proved to
be wrong. The solutions described in these design speci-
fications provided a workable solution, however they
were not properly documented, which hampered the stu-
dents understanding. After discussing the design specifi-
cations with the responsible team, the project was devel-
oped as intended, with some minor modifications. This
misunderstanding was repeated on the third stage, in
which students had to design and execute the system
testing. However, for designing the test environment and
the test scenarios a full project understanding was re-
quired. In addition to the extra work needed due to the
missing documentation it also changed the students’ per-
ception regarding the importance of the non-development
activities.
The significant increase in the perceived testing im-
portance (83%) can be explained by the fact that during
the third stage the student had to design and develop the
stub and the scenarios for the system to be checked. In all
cases where the system did not function according to the
specifications, the testing team had to correct the code and
run it once again. This means that the testing team had to
be familiar with the design specifications as well as with
the developed code. The testing students acted as the
“gate-keepers” making sure that only the fully functional
system is released. Performing this task properly, in the
workshop, requires some additional analytical skills for
finding and correcting various bugs which may have been
introduced during the development or the design stages.
Unlike the real world situation, where in case of problems,
Quality Assurance people usually return the system to the
developers, here the testing team had to fix it by them-
selves, which led to their higher appreciation of the testing
task and its elevated importance in the development
process.
5.2 The Student’s Perspective
Analysis of the students’ reflections revealed emphasis of
three main issues: 1) the importance of documentation; 2)
team-based activities and 3) contribution to future voca-
tion.
5.2.1 The Importance of Documenting the
Project
Improving the students’ understanding regarding docu-
mentation and the role it plays in the project and its future
maintainability, was addressed by many of the reflections.
For example:
“I understood (unfortunately through bad ex-
perience) the importance of a development
project’s documentation.”
“It was only during the workshop that I began to
grasp the importance of understanding and
documenting the requirements.”
From the above students’ excerpts we can conclude that
they developed a sense of appreciation for documentation,
mostly arising from the need to spend many more of their
own resources when it was missing. Furthermore, without
proper documentation, the project may not be successful
and might not deliver the expected outcome. The fact that
they realized, for example, that undocumented specifica-
tions are misleading is consistent with Williams [25]
stressing that students no longer view the teaching staff as
their sole conduit of technical information.
5.2.2 Team-Based Activities and Implications
Students pointed out several advantages regarding their
experience of working in teams, as well as what was re-
quired of them. Here are some common reflections:
“Working in a team provided me with many
Ducumentation
Development
Testing
Raising Awareness of the Constituents of Software Design – The Case of Documentation
Copyright © 2010 SciRes. JSEA
501
new views and possibilities for solving the
problem.”
“The most important lesson I learned during the
workshop was to accept my friends’ criticism
and provide constructive feedback.”
“The success and failure of the project de-
pended mainly on the team members’ activities
and not on any single member.”
From these reflections we learn that in general students
found the teamwork method helpful in developing their
critical thinking (receiving and providing constructive
feedback) and in improving their ability to cooperate.
However, in their reflections students also pointed out the
shortcomings they experienced in team-based activities.
For example:
“Team work can be a blessing, but sometimes it
can also be a curse…”
5.2.3 The Workshop’s Contribution to Future
Vocation
Here are some student reflections regarding the contribu-
tion of the workshop’s assignments to their future em-
ployment.
“So far we learned that the most important stage
in the project is the development. Here I un-
derstood that the process is equally important.”
We conclude that the students found the detailed
documentation very helpful. Furthermore, the under-
standing gained by working in teams helped them think as
developers and enhanced the process of reaching the
problem solution.
6. Concluding Remarks
From the students’ reflections and the results received
regarding the differences in their perception as reflected in
the two questionnaires, it can be concluded that the
workshop raised the students’ levels of understanding [26],
and as a result helped them cope successfully with the
given workshop assignments. The role-based develop-
ment, in which the students had to assume responsibility
for activities partially performed by others, exposed them
to ideas which were different from the ones they had
decided to use in their own solutions. Especially, this
workshop structure effected the students’ appreciation of
documentation and the role it played in their own success.
This exposure, in many cases, made them rethink their
task and prompted them to look for better, more efficient
solutions. The collaborative team work exposed each team
member to various ideas expressed by his/her peers and as
a result caused additional thinking about available solu-
tion alternatives.
REFERENCES
[1] P. Naur and B. Randell, “Software Engineering: Report of a
Conference Sponsored by the NATO Science Committee,”
Garmisch, Germany, Scientific Affairs Division, NATO,
1968. http://homepages.cs.ncl.ac.uk/brian.randell/NATO/
nato1968.PDF
[2] R. J. Veldwijk, M. Boogaard and E. R. K. Spoor, “Assess-
ing the Software Crisis-Why Information Systems are
Beyond Control,” Vrije Universiteit, the Netherlands,
1992. ftp://zappa.ubvu.vu.nl/19920006.pdf
[3] J. Burge, “Exploiting Multiplicity to Teach Reliability and
Maintainability in a Capstone Project,” 20th Conference
on Software Engineering Education & Training, Dublin,
2007.
[4] L. T. Cheng, S. Hupper, S. Ross and J. Patterson, “Jazzing
up Eclipse with Collaborative Tools,” Proceedings of the
2003 OOPSLA Workshop on Eclipse Technology eX-
change, Anaheim, October 2003.
[5] S. C. Souza, N. Anquetil and K. M. Oliveira, “Which
Documentation for Software Maintenance,” Journal of the
Brazilian Computer Society, Vol. 13, No. 2, 2007, pp. 31-
44.
[6] S. Das, W. G. Lutters and C. B. Seaman , “Understanding
Documentation Value in Software Maintenance,” Pro-
ceedings of the 2007 Symposium on Computer human
interaction for the management of information technology,
Cambridge, Massachusetts, 30-31 March 2007.
[7] M. K. Mattsson, “Problems in Agile Trenches,” Proceed-
ings of the Second ACM-IEEE international symposium on
Empirical Software Engineering and Measurement, Kai-
serslautern, 09-10 October 2008.
[8] G. T. Daich, “Document Diseases and Software Mal-
practice”. http://www.sstc.online.org/Proceedings/2003/P
DFFiles/p961pap.pdf
[9] P. Clements, “Comparing the SEI’s Views and Beyond
Approach for Documenting Software Architectures with
ANSI-IEEE 1471-2000,” Technical Note CMU/SEI-2005-
TN-017.http://www.sei.cmu.edu/pub/documents/05.eports
/ pdf/05tn017.pdf
[10] R. C. Seacord, D. Plakosh and G. A. Lewis, “Modernizing
Legacy Systems–Software Technologies, Engineering
Processes and Business Practices,” New York, Addison-
Wesley, 2003.
[11] D. Brolund and Ohlrogge, “Streamlining the Agile
Documentation Demonstration for the XP 2006 Confe-
rence,” Lecture Notes in Computer Science, Springer, Vol.
4044, 2006, pp. 215-216.
[12] G. Canfora and A. Cimitile, “Software Maintenance.”
http://www.compaid.com/caiInternet/ezine/maintenance-c
anfora.pdf
[13] M. M. Lehman, “Lifecycles and the Laws of Software
Evolution,” Proceedings of the IEEE, Special Issue on
Software Engineering, Vol. 68, No. 9, 1980, pp. 1060-
1076.
[14] M. M. Lehman, “Program Evolution,” Journal of Info-
rmation Processing Management, Vol. 19, No. 1, 1984,
pp. 19-36.
[15] N. F. Schneidewind, “The State of Software Maintenance,”
IEEE Transactions on Software Engineering, Vol. 13, No.
Raising Awareness of the Constituents of Software Design – The Case of Documentation
Copyright © 2010 SciRes. JSEA
502
3, 1987, pp. 303-310.
[16] W. M. Osborne and E. J. Chikofsky, “Fitting Pieces to the
Maintenance Puzzle,” IEEE Software, Vol. 7, No. 1, 1990
pp. 11-12.
[17] T. M. Pigoski, “Practical Software Maintenance–Best Prac-
tices for Managing Your Software Investment,” Wiley &
Sons, New York, 1997.
[18] M. B. G. Dias, N. Anquetil and K.M. de Oliveira, “Orga-
nizing the Knowledge Used in Software Maintenance,”
Journal of Universal Computer Science, Vol. 9, No. 7,
2003, pp. 641-658.
[19] A. Yadin and I. Lavy, “Integrated Formative Assessment as
a Vehicle towards Meaningful Learning in Systems
Analysis and Design workshop,” Paris, 2008.
[20] C. Herndon, “Peer Review and Organizational Learning:
Improving the Assessment of Student Learning,” Research
& Practice in Assessment, Vol. 1, No. 1, 2006, pp. 1-7.
[21] L. Keig and M. D. Waggoner, “Collaborative Peer Review:
Role of Faculty in Improving College Teaching,” ASHE-
ERIC Higher Education Report, Washington DC, Vol. 23,
No. 2, 1994.
[22] K. Berkencotter, “The Power and Perils of Peer Review,”
Rhetoric Review, Vol. 13, No. 2, 1995, pp. 245-248.
[23] M. Lenic, M. Zorman, P. Povalej and P. Kokol, “Alter-
native Measurement of Software Artifacts,” ICCC 2004
Second IEEE International Conference on Compu-
tational Cybernetics, Wien, 2004, pp. 231-235.
[24] R. Glass, “Facts and Fallacies of Software Engineering,”
Addison-Wesley, New York, 2003.
[25] L. Williams, “In Support of Student Pair-Programming,”
Proceedings of the 32nd SIGCSE technical symposium on
Computer Science Education, Charlotte, 2001.
[26] J. Biggs, “Enhancing Teaching Through Constructive
Alignment,” Higher Education, Vol. 32, No. 3, 1996, pp.
347-364.