Project Evaluation
Development Process:
Our product has evolved from it's initial concepts presented to us
by Hotel 451, our customer group, into a full fledged hotel management system.
To implement such a large project we used a modified waterfall development
scheme as described at func/team_structure.html.
During the analysis and specification of the project we were presented
with a complex problem revolving around the proper modeling of the data. To
solve this we developed our model using standard DFDs and ERDs which
allowed us to model the movement and usage of data within the system. Upon
completing the initial design of the data stores we attempted to determine key
algorithmic points within the program. These key points were further studied, in light
of the data model, so that we could determine the most appropriate algorithm
for each case. These included the algorithm used to calculate free rooms for
any given day, and the algorithm for "combing" the database for pending room
service requests. Upon completion of the algorithmic designs we were ready
to develop the screen mockups.
These screeen mockups were of extreme importance, especially
when one considers that the project was evaluated not only by the customers, but
also by an outside group that was not familiar with all the problems and
requests for with the project. Once the screen mockups were completed it
was necessary, Due to the design methodology we were following, to design the
user manual. As specified this was a minimalist manual containing the base
level of information required to effectively operate the software. The next
stage of development evolved to coding of the project.
In the end the programmingof the project took the majority of the last month. To some
degree it was a scramble to successfully complete the requested product. Due to the
major effort required to create the project some portions of testing were
neglected. This neglect was limited to performance testing and implementation of our
correction and monitoring procedures. As it was most important all function level
testing was completed during the later portion of the development phase.
Our reason for not following the testing procedures we originally specified was
our lack of time to follow the detailed levels of management required for
our original procedures. In the end testers reported their bugs directly to
the programming group. We found, however that this did not generally create
any problems. Perhaps our original plan contained too many levels of
management to be practical in this size of project.
Satisfying of Requirements:
Our customers gave us a list of requirements that were lacking several
important details. (please see our customers "Informal Specification of
Requirements" document for list of requirements) Due to this lack of
information several meetings were required to further develop the
conceptual model of the product. One failing that was perceived late in the
development was our lack of any written modifications to the initial design concept.
Although verbal communication did not present any difficulties in the
beginning of the project our attempts to remember what was originally said to us led
us to reconsult the customer group to ensure that we were completing the
project to their satisfaction. We feel that we have met the requirements of the
system with the exception of proven network interoperability. However, we did not
feel that we needed to prove that networking would work in the trial version
since our product was based on an architecture and database that are well known
to support networking.
Features added or removed over time:
We did not feel that the customer group placed any unrealistic problems on
the table before us. Therefor, we did not have a need to remove or add
anything to the program over time. We were primarily required to modify
the functionality of several items, rather than adding or deleting them in
entirety.
Lessons Learned:
-
We originally decided not to use an HTML editor, instead HTML was done by
hand. This proved to be very time expensive, we would therefor recommend
against hand written HTML in future projects. Several other groups appear to have had good success with the Netscape HTML editor. It may be a useful tool in future design work.
-
Initially we found that the programmers did not follow our original color
or interface designs. Other subgroups also did not seem to interact as well as
was expected. We feel that one member from each major team should be placed
on one other team. This would facilitate inter-team communication. Such a
level of interaction would have allowed us to catch and fix our interface
problems at a much earlier stage.
-
Selection of a language that was not freely available to all group members
was probably a bad choice. In a project of this nature, where time is in short
supply it is important that everyone in the group have access to, and be as
proficient in the chosen language as possible. It severely limited who
could write code for our project when we chose a language that only a few of the
group member knew, or owned.
-
Tighter organization of tasks and better enforcement of meeting attendance
is a must for a project of this nature. More often than not portions of the
assignment were left for the clean up crew or were not started until the
day the document was assembled. This prevented a good consistency, spelling,
and grammar checking of the assignment. The quality of the document would be
greatly improved if all the portions were written before assembly of the document's
final draft started.
-
Small problems tended to grow. This ties into point number two as a problem
stays in the project, over time the magnitude of effort required to correct
the change also increases. It is far more important to remove problems at and earlier stage than to attempt to fix them later in order to have greater
progress in the design.
-
Ratification of interface was left far too late in the process. Part of our
difficulties with our interface stem from the fact that the design itself
was in flux through a portion of the coding phase, and throughout the design
phase of the system. Creating the correct interface is easily as important
as creating a good data model; possibly it is more important than creating
a good algorithmic structure with in the program. More attention should
have been paid to the creation and ratification of the design at an earlier
stage because it is very hard for the programmers to hit a moving target, which is was
our interface really was.
-
Lack of detail and misunderstanding of project goals and scope plagued our
initial analysis phase. It would have been far more advantageous to have
spent more time clearly defining the utility of the program than to have
placed more effort into the initial analysis of the system. Ambiguity in the
design goals, caused by an unfocused concept of the problem, led to
fluctuations in the algorithm designs as each person attempted to design
their assigned algorithms within the context of differing interpretations
of the design goals. A written statement of the exact (or more exact) goals of
the consumer would have helped keep a tighter philosophical cohesion during the
analysis and algorithmic design stages.
-
A group must find a group leader as soon as possible with several very
important characteristics. This person must be able to attend all meetings,
so that they can act as a liaison between all the separate subgroups. The
leader requires excellent skills in planning ahead for and remembering the
deadlines within the course. This person must also have an overwhelming
desire to produce the best product they possibly can, any other sort of
person will tend to let things slowly slide into chaos. They are required
to be pushy to an extent; motivation of group members is not an easy task,
especially so for someone who is not forceful in their interactions with
people. Finally they must have the ability to asses the strengths and
weaknesses of each group member, assigning tasks accordingly. We felt that
Clinton performed this role quite well, although at times he was perhaps
not forceful enough in his motivation of the group.
-
Preparation of the presentation far ahead of time seems to have made the
difference between a well polished presentation and an adequate one.
Familiarity with the flow of the presentation, and simple practice has
helped our group and many others to appear as professional as possible.
Early preparation and practice also allows the group to asses the
presentations weak and strong points. Several other groups seemed to lack a
knowledge of their weak points, leading them to either embarrass themselves
when their product failed, or to be so nervous as to show fear to the
audience - a horrible mistake during a presentatoin.
-
We found that customers are not very good at defining their requirements.
More interaction with the customer group is required in order to avoid
costly changes at later stages. To this end we would suggest that groups
schedule extra time outside of class to further define the initial
application.
-
Another lesson dealt with deletion. Many customers don't know what data is
really valuable to them. They are, therefor, often confused as to whether
they should be able to delete data from their database, what types of data
they should be able to delete; and what sort of action should be taken if
true deletion is not advisable. It was late in the development cycle that
our customers decided that they wanted to keep all the possible data in the
system. We were therefor forced to rework our storage schemes for the
product. A group should ensure that they have all the data management
requirements, such as what to keep, when to keep it and so forth, as soon
as possible in a project of this nature.
-
An important lesson that we learned is the problem of the supplier-costumer
interaction. The supplier group always needed more information about the system,
but like in the real world, the costumer group never had a clear idea of their real
needs. We also had time meeting problems, the costumer group wasn't available in
the time in which we wanted to meet them, and as a concequence the supplier team
had few contact with our costumer. But this is the way in which real projects work,
its very hard to find a good costumer who would be always available to answer all
the questions.
Changes for next time:
-
We would wish to enforce much more strict document construction guidelines
within our HTML pages. In the current version of our documents there are
many subtle differences in writing style and layout that destroy the
overall cohesion of the documents. A published guide to page layout and writing
style would have helped to avoid the reformatting headaches that occurred in the
first three documents.
-
Picking a language we all have access to and are proficient in would have
greatly aided our design and coding phases. All members would understand
the limitations of the language and would be able to fix bugs on their own
rather than relying on a select group to do so. These two facts alone
almost offset the time cost involved in picking a language such as C++ over
Microsoft Access. In the future we would recommend an emphasis on a language common
to all members of the group. This is not really necessary in a real business
situation as there would be time for people to learn the new language as they work
with it full time. However, in our time limited situation it is necessary that
all group members are familiar with the language from the outset.
-
Enforcing more stringent time restraints on all aspects of the development
effort. In many instances people did not have their portion of the work
done at the required time thereby delaying and complicating the completion of
that aspect of the project. A method must be found that would encourage timely
completion of work with out the threat of an Iron Ruler. In the real world
this function is played by money. Many students are only concerned with
passing a course, not with the actual grade that they receive.
-
Tighter focus on the final result of the project is also required. Due to
the immense size of some portions of our project and the tight time constraints
that surround them focus was often shifted to a single minded goal of producing
the required volume of documentation. This hurt the overall project by tempting
authors to make certain sacrifices to the overall project for short term
gain within the documentation.
-
Greater detail should have been imposed on the interface at a much earlier
stage in development. The interface should not be fluctuating very much
towards the beginning of the coding phase. It should be firmly fixed by the
time the process of development has progressed past the point of
implementing the code that will underlie the interface.
-
We would like to get far more detailed requirements at an earlier stage, in
writing if possible. As well, we would have preferred that the customer
group submit all the changes they requested in writing. It was often
difficult to remember verbally exchanged changes to the system. More than
once peoples memories differed on certain points, causing us to refer back
to the customer group.
-
Completion of the coding segment at least 3 weeks before the presentation.
This is more of an unattainable goal to shoot for rather than a hard and
fast goal. It would have allowed us more time in debugging than we actually
had. Although our debugging was more or less complete the extra time would
have allowed us to add further enhancements to the product. We would also
have felt more confident at the end if we knew that we had had extra time
to apply to the project. It seemed as if the project expanded to fill all
the time we had available for it.
-
Choice of presenters is especially important in this class as a major
portion of our overall grade depends upon the presentation itself. We would
have preferred to audition our presenters to ensure that they had as good a
public speaking skills as they claimed to have had. On the whole however we
were very lucky with the skills that our presenters had, however, some members of
the group were still nervous about the choice of presenters before seeing
them in action.
-
Change the schedule for the completion of the user Manual. The date for the
completion of the manual should be changed because after the user manual was
completed the coding part of the project continued. As a concequence there were
alot of changes in the way many functions worked in the original system. This
changes caused that the user manual was less then helpful for the use of the final
program.
Suggestions for future course adjustments:
-
We found that there was little extra time to properly change our user
manual as we encountered coding problems and thought of several new improvements to
our algorithms and our interfaces. We were unable to implement them
due to the fact that there was not going to be enough time to ensure that
the user manual was updated properly. Therefor, were forced to use our user manual as
a blue print for the design and implementation of the code; regardless of any
enhancements that could have been added. Perhaps the development of a much
shorter user manual to be accompanied by a more complete final manual later
would allow for more substantial changes to the algorithms and interfaces
as the coding process matures.
-
We found groups with skills in Visual Basic, Delphi, and Powerbuilder had a
distinct advantage. There was little use of C++, Sybase, etc., in any of
the products demonstrated. It seems rather pointless to create groups based on
experience in unusable skills. We would suggest arranging the groups around
knowledge of one of the 3 rapid application development tools listed above.
All the other skills listed at the beginning of the course were essentially
of no relevence during the development of our product.
-
The University of Calgary Computer Science department has few of the main
tools used in development our applications. All the projects revolve around rapid
development of databases. The main industry tools for such tasks are Visual
Basic, Delphi and Powerbuilder, which one would expect to be used in a course
that strives to model the real world. However, we were limited to the use
of tools that we either were willing to purchase or that members of the group
already possessed. This seemed to not only limit our choices for
development tools, but to also give an unfair advantage to groups that happened to
posses Visual Basic or Delphi. The tools used in the class should either be
restricted to tools that are available to all students, or should be provided in some
manner for students of this class. More than likely Microsoft and Borland
would be more than willing to provide their tools at a substantial discount for a
course of this nature.
-
In many real life situations one would not use such a formal presentation
method as was used in the final presentation. It transmits far less useful
information that an small group hands on meeting would. We therefor feel
that too great an emphasis was placed on the final presentation. In its place we
would suggest a smaller hands on meeting involving the professor, the TAs
and the customer group. The product could then be explored in much greater
detail by the customer group.
-
The volume of documentation requested for this course prohibited the
production of any truly high quality documents. We were concentrating so
heavily on producing the required number of pages that often more important
aspects such as grammatical and stylistic construction took a back seat.
Less emphasis on quantity (i.e., remove the 80 page minimum) and a greater
emphasis on a clear, concise, and cohesive documentation seems more appropriate for this course. We are attempting to produce an easy to use product, which by definition
should be simple to understand, and therefor should have very clear documentation to
accompany it.
-
Another suggestion would be to combine the two design documents. This would
allow students to place more time on design refinement. It seemed that there was
almost no changes requested after the Overall design document. One would
also suggest that the combined design document be followed up by a short letter
detailing acknowledgment of changes and requests for clarification. In this
way we could accomplish the same thing as the current two documents with
far less paper work.
-
The course seemed to contradict itself in a very disturbing way. Projects
were constructed following an older waterfall methodology while lectures dealt
almost exclusively with more modern object oriented design philosophies.
It seemed odd that the course should be instructed in one methodology while
being required to implement another. We would suggest a greater consolidation
between the design philosophies of the project and that of the lectures.
Testing:
For the most part our testing procedures were implemented as originally specified.
However, the method of implementation did not entirely follow the scheme we
originally had envisioned. Our function level testing seemed to have been
performed by the group as a whole rather than a specific group of testers.
We also found that it was far too costly in terms of time to add a layer of
management to the bug testing and fixing cycle. To this end, we therefor
reported bugs directly to the coders who then repaired the bugs, often on
the spot and at the time of report. In the future we would like to suggest that
other groups pair a tester or a set of testers with a programmer. In this
fashion one is able to debug and fix in real time, a definitive time saver.
We originally had planed to implement an overall consistency check as a
final test for the product. In the end we abandoned this idea for a couple of
reasons. First of all it would have been very time consuming for someone to
design on pen and paper a set of tests that would exhaustively test the
system. Secondly, we found that function level testing took care of our consistency
check for us. This was especially true when we added screen operations to
our list of functionality to test at the function level. We constructed the
lowest level functionality first, which was then followed by more complex
functionality. For example, the add, modify and delete room functionality
was designed and built before the management screen functionality. Since we were
testing each piece as it was built the lower level functionality was assured to
work while the next level above it was being implemented. It was not
necessary to test anything more complex on the management screen (from our
example above) than the linkage between it and it's lower level functions.
In effect we substituted a bottom up testing approach for a top down
approach. In the end we believe it saved us time because it was easier to
individually organize a small number of tests for a subsection than it would have been
to organize and manage a full system wide top down testing schedule.
Group Structure:
Group structure did not end up anything like we had originally envisioned. Almost everyone, except for Brian and Fan our programmers, ended up working of the documentation.
So we infact needed close to 10 people instead of the six originally decided upon.
This was due to the tight time constraints that surrounded the larger two documents.
Initially our idea of using 5 people to design the software worked well. A group of
three of us created the data flow and algorithm designs. However, when it came time to
create the user interfaces it seemed that everyone wanted to participate in that
portion of the design phase. The old saying too many cooks spoil the brew is very
true in this case. We ended up spending a large portion of the time arguing over less
important details such as coloring of the screens. In an initial model of the system
it is really not worth while to bother with such things. They are better left
to the final release version of the product, as long as you assign someone to take
care of them.
Our original concept of the programming group required for the project was very close
to what we actually implemented. With the exception of having only 2 full time
programmers, and a part time person doing work on interface clean up and redesign it
seems to have followed our team strucutre very closely. Our testing was not as close
to our first model as we would have liked. We ended up having everyone doing some
amount of testing during the final couple of weeks of the project. As mentioned
earlier we also dispensed with the idea of having a buffering layer of management
between the programmers and the testers.
On the whole we do not feel that we had a good enough grasp of what was needed in this
project before we began it to have accurately planed out a strong management or team
structure. In the future we would prefer to have the ability to analyize the requested
for a product for a period of time before having to put a mangement plan in place. It might
also have been easier to create a set of 2-3 person teams that had a good strong cross section of skills so that they could be moved around dynamically as the project changed.
Problems Noted By Individual Group Members:
Note: the quotations expressed below are the sentiments of individual
people and should not be attributed to the group as a whole. Due to the
nature of these quotations names have been removed.
Individuals doing what they wanted and hiding it or not mentioning it to
the group as a whole. Especially individuals who did not follow the
guidelines established for the user manual.
Group members enthusiasm and participation dwindled off near the end. The
majority of the work was left to a small group of people.
Several group members carried more weight.
Visual Basic was not a good language due to the need for all the .dlls. It
therefor didn't run well on several peoples computers.
Customer group feedback was poor. No matter how bad our documents were they
were accepted by the customer group.
Customers changed their minds late in development or forgot what they
originally requested.
Customers never set out a consistent set of requirements. There were many
loop holes and too much guess work as to how they wanted things to work.
William Browning
Last modified: Tue Apr 15 19:28:49 PDT 1997