Wintersoft

Project Atlantis: Postmortem

CPSC 451 W01, Assignment S4
Supplier Group 10 "WinterSoft"
Last Update: 2001-04-12

Contributors:

  • Abu Sesay
  • Ai (Tino) Duong
  • Daisuke Kinjo
  • Saima Makhani
  • Jian Yang
  • Keith Kwong
  • Ian Ko
  • David Hayes
  • David Mitchell
  • Lukasz Galek
  • David Nilson
  • Erin Moeller
  • Trudy Petersen

[EXECUTIVE SUMMARY] [MAIN] [DOCUMENTS] [CONTACTS]


Table Of Contents

Purpose

next previous top

WinterSoft is a learning company; we do not want to make the same mistakes over and over again, and hence this "postmortem". We have set out to evaluate "Project Atlantis", to determine how we can streamline our processes in the future, and to avoid potential pitfalls.

To ensure that this evaluation is as complete as possible, we were given a number of questions by our Consulting Coordinator, Raul Nemes. These questions should cover all aspects of our project, and they gave our team something specific to respond to. We had small teams brainstorm as many answers as possible to the questions, and then those teams asked the rest group for additional input. This should ensure that our postmortem includes complete input from the entire group. Finally, the brainstorming teams wrote up answers to the questions based on their own input, and the input from the rest of the WinterSoft group.

This document is the final result of the evaluation process discussed above. It is WinterSoft's sincere hope that this document represents all of its members' opinions, and that this document will provide a useful "road map" for future software engineering projects we undertake.


If you Took the Course Again, What Would you do Differently?

next previous top

Being a large group with many different individual personalities, it was no surprise that there was a wide range of answers to this question. Most of the issues brought up could be categorized into a few key topics: Organization, communication and comprehension.

Organization

next previous top

We generally felt that strong organization was imperative to the smooth operation of group activities. It was expressed by many members of the group that they would try to find methods to increase the group's organization. One such method is to hold frequent meetings. It is believed that by holding frequent meetings, the group as a whole would be more informed with the overall intricacies of the project. The meetings would give subgroups an opportunity to keep the others informed with their progress as well as raise any questions or concerns.

Another idea was to use an agenda for each meeting. An agenda could prove to be a powerful tool to increase productivity during meetings. With a concrete agenda in place, the group would have a systematic approach to meeting goals and performing necessary tasks.

Communication

next previous top

It is needless to say that strong communication is vital to the success of any organization. Many group members thought that there needed to be more communication not just within the group, but between the customers and suppliers as well. It was thought that the more open communication was between the group the better. In particular, it would prevent a few people from dominating all of the decisions. By having more people express their views and opinions, the whole group would benefit from the wide range of input.

Some suggestions of ways to encourage open dialogue within the group were more frequent meetings (as mentioned above) and asking everyone to provide feedback on their work. It might be worth noting, however, that some group members did ask for feedback on their work, and found that little was offered. One of the more interesting ideas was that each meeting should be facilitated by a different person. Giving everybody a chance to lead a meeting is a good way for people to overcome reservations about speaking aloud within the group. It is also a good way to ensure that everybody gets to know each other.

Comprehension

next previous top

Before anyone starts an assignment or attends a group meeting, it is a good idea to do your homework first. Some people said that it would have been beneficial for them if they had just taken the time to understand the documents before they started to work on them. One suggestion was to simply "go to class". By having a strong understanding of the work you are supposed to be doing, you avoid making many foolish mistakes. This way when you or your subgroup completes an assigned task early, it might be possible to help other group members if they run into any problems.


If This Were a Real Situation, What Would you do Differently?

next previous top

Although this course has given us much insight into a supplier's role in the project development cycle, we realize that this was in a simulated environment and that in the real world, the stakes are much higher. There are many things that we would do differently if this was a real life situation. Nearly everyone in the group agreed that the number of documents to be produced was too many, or the documents themselves were too long. Often we felt that there was a lot of redundancy in our documents because of the sheer quantity of material they presented. Also, customers probably would not want to read through the large documents that we produced every other week; we assume that the customers would be very busy people. One of our members thought that the number of documents to produce was good because it gave several chances for feedback from the customers, but they should be shorter.

Another thing that we would do differently is cut out some of the design processes and replace them with more useful processes. Most of us thought the pseudocode in the functional design document was not very useful at all. In the end we did not usually follow the pseudocode for the actual coding of the project. Writing pseudocode for programming languages with heavy graphical user interfaces such as Visual Basic was difficult, often we didn't know how to go by doing it. We found that the cons of writing pseudocode by far out weigh the pros.

We would probably also change the diagrams that we used in our documents. They were too complex for a real customer to understand - we ourselves did not even understand them totally. They should be replaced with more simplified diagrams. For example, the scope of the ERD's would be out of the customers' knowledge, we don't think that that they would want to learn something that applies so little to them. In a real life situation, adding more prototyping sessions with the customers would probably help us a great deal. The fact is, the customers don't usually care about the structure of modules or how the database will be designed, they want to know how the system will work for them. Prototyping gives the customers a chance to provide more feedback regarding the system, which will result in a system that better fits their needs.

In a real life situation, resources available to us would be more planned out, whether it be time, hardware/software tools, or team members. We were on a tight time schedule throughout the whole course. If we would change anything at all with the time line, we would have given ourselves more time to code the project. With so little time and documents due around the corner, we rushed through the coding of the project, and in the real world this phase should not be rushed. If we were not on such a tight schedule, more time could be allocated to the coding phase so better code could be produced as opposed to a quick and dirty hack job. Technical constraints were a real problem for us. For example, we were not aware that CGI access was prohibited to us so we had to change our plans many times before settling on Visual Basic. In the real world, we would be working in an environment where we should know what sort of hardware/software tools are available to us.

We also think that managing the group might be a lot easier to do in a real situation. We would be working in a real working environment and that means that we would get paid for our services, so more interest and effort will be put into the work. Free loaders or slackers can be handled easier by by firing them if they don't smarten up, and it should be simpler to coordinate meetings with other team members.


How Well did the Project Satisfy Requirements?

next previous top

We believe that we followed the original customer requirements as closely as possible, satisfying the key requirements specified by the customer. We clearly and effectively covered both Administrator and Student "modes" for the Registration System.

Some of the system requirements include:

  • Allowing administrators and instructors to modify course information
  • Allowing administrators and instructors to input grades for each student in each course
  • Allowing administrators and instructors to modify student information
  • Maintaining class lists that are updated as a student registers in or drops a course
  • Allowing students to add, change, and drop courses
  • Allowing students to check their schedule and marks
  • Taking into account prerequisites and co-requisites for courses
  • Allowing administrators to overload courses and override requirements
  • Allowing students to access calendar information by course name
  • Including a waiting list for students who want to get in to a full course

One requirement which we were unable to satisfy is the requirement that the system be web-based. Due to the environment we were in, it was not possible to properly implement the system because we were not authorized to use CGI scripting. This security issue for the CPSC servers was a major hurdle which our coding group was forced to overcome to build the final system.

Additions and Subtractions

next previous top

There were many functionalities that we felt should be added and others that we felt should be removed. We felt that it was simple and necessary to include the students' names in the system. This allowed the administrator of the system to modify a student (or administrator) based on that individual's ID number or name, hence increasing the efficiency and ease of use of the system. Also, we allowed the administrators have control over assigning class rooms to lectures instead of the "system". Another minor requirement that we removed from the system was the automatic enrollment of a student in a course waiting list when the course becomes available. Instead, we changed this functionality to prompt the user on the waiting list when the course becomes available.

We believed that the adding and removing of the requirements discussed above helped in the creation of a robust and effective registration system.

Bargaining

next previous top

During the bargaining session with the customer, we decided that it was necessary to remove and clarify some requirements. One example is the customer's requirement to implement a student waiting list. We felt this requirement would be difficult to implement and nonessential to the final system. We tried to get this functionality removed. But when talking with the customers, they believed this functionality was extremely important for the student portion of the system, so we implemented a simplified version of it in the system. We were also able to get the requirement of backing up the system information removed, because we believed it was not our responsibility but the customer's to back up this information from the servers running the system. The most important requirement that we were able to negotiate about removing was the requirement that the system must be web-based. Due to the constraints mentioned earlier, we were not able to implement the system this way, and we were successful in getting this requirement removed. All of the requirements that we tried to get removed were based on the time constraints that we were dealing with; if given more time we believe we could have completed all of the requirements that the customers gave to us.


How Useful was the Design Process?

next previous top

If there is one thing the group liked about the design process, it was that it forced us to consider the project carefully, and ensure that it was done right. The design process caused us to look carefully at the customer's requirements, and kept us from building the system the way we envisioned it. Instead we were forced to concentrate on the way they envisioned it. In particular, creating prototypes of the system forced us to think about the best way of building it, and allowed the customer to give us feedback on how the system was progressing.

This reveals the basic flaw that most team members identified in the design process: It was great for the customer, but perhaps not quite as important for us. One member of the team wondered how useful some of our diagrams were to the customers. The ERDs and DFDs are simple compared to some other technical diagrams, but they're still rather complicated, and probably didn't give the customers much useful information (unless they were planning to build their own registration system). They were somewhat useful to us, as they allowed us to conceptualize the system, but we could have done without some of them.

Pseudocode is another issue. While this was helpful in ironing out major logic flaws, we have to wonder if it was any better than just writing the code. The editors had to spend a lot of time making sure that the pseudocode was consistent, and while some of it may have been useful, it probably would have been more efficient for people to design their own code, using pseudocode if they felt it was a useful tool for them. Perhaps pseudocode would be useful for complex, logic-based algorithms, but this system did not have very many of those.

All in all, our opinion seems to be that the design process was useful in some respects, especially in ensuring that requirements were met, and the customers got the system they wanted. But there was too much work put into certain parts of the documents, and not enough time to do them properly. Less emphasis on length requirements might have helped to rectify the situation, and a less formal process in general would probably please the team, although we can't say whether or not it would work better, since we haven't tried it.


How Useful was the Test Plan?

next previous top

From our lectures we have learned that testing is one of the most important phases in software engineering. As such, we put careful consideration into the design of our test plan. The answers to this question varied greatly within our group. Some of us believed that the test plan we used proved vital to the successful development of Project Atlantis. Some stated that it offered a pragmatic approach to the testing process, which leaves less room for error. On the other hand, other members believed that the test plan did not play a major role at all.

Effect on the Final Product

next previous top

One of the benefits of the test plan was that, by following it, we ensured that the minimal system requirements were met. This way the customers were guaranteed to receive software that met all of their needs. Several members said the test plan provided a systematic approach to finding bugs within our system. Once the problem areas were found they could be dealt with accordingly. It was also good to have a test plan in use because it allowed members who were not directly involved in the coding a chance to test the system.

One of the problems we found with the test plan was that it was pretty tough to get people to stick to the plan. It was found that an informal method of testing was preferred by a majority of the group. Some found the rigidity of the test plan to be tedious and very time consuming. Another problem is that people who were not involved with the actual coding sometimes did not realize when they had stumbled upon a bug.

Would we Want This as a Job?

next previous top

The tedious nature of testing just didn't appeal to the hearts of many group members. Like Dave Maulsby said in class, "It's difficult to get people interested once the coding is viewed as complete." Many thought that the testing was too time consuming and allowed no room for creative expression.

However, some members stated that they wouldn't mind being a professional tester. They thought that by becoming good testers they would grow in many different areas. They would improve their debugging techniques, they would become better programmers, and they would have a better overall understanding of the systems they were working on.

Others believed that the success of the design an implementation phase can be gauged on how well the testing phase went.


How Were the Group Dynamics?

next previous top

The group started out with a semi-formally chosen leader, and later added a second leader. There was some room left for "emergent leaders", which is good, although in some cases this caused power struggles.

An interesting trend emerges when one looks at the opinions of the "management", and the "workers". Some of the management team felt that the workers were disinterested, and had to be dictated to in order to get the job done. On the other hand, some of the workers felt their opinions were undervalued, and they weren't given respect for their hard work.

A likely source of this problem was the size of the team. It is difficult for everyone to get together in a team as large as this, so few formal meetings were held. The members didn't get to know each other as well as they could have because of this, and communication was not as good as it could have been. The managers found that few people would volunteer for jobs, so the easiest way to get their managing done was to dictate roles to the group. They had to be specific in the jobs being given out, because it was the most efficient way to make sure jobs got done "right" the first time. The workers, on the other hand, were being dictated, and had little room for input.

In the end, things worked out anyway. This is probably because of the quality of the team's individuals - just about everyone ignored their differences and pitched in when things were rough, and some in particular gave up a lot of personal time to ensure the job was done well. There was a lot of skill and hard work displayed by many members of the group.

A potential solution to our communication problems? Create smaller groups in the future, and work hard to ensure the whole group meets and discusses the project regularly. These aren't necessarily mutually exclusive, either; holding more meetings is easier with smaller groups, and communication in general is less complicated. It might also encourage a greater amount of personal respect among group members, although there is the opposite possibility: it could merely allow members with clashing personalities to get on each other's nerves.


Timeline - Did Everything Happen as Planned?

next previous top

Our group followed the timeline fairly closely, all of our documents and reports met the deadlines that were specified by the course. We felt that most things were done according plan and we even found that we got ahead of schedule and some tasks were completed before the deadline. This was due to well a organized team, with leaders guiding us along the way. Hard work among most of the group, and the reliability of group members bothed played a big role in completing tasks on time.

Nothing can happen exactly as planned due to human factors and environment. The coding of our system seemed to have been done well ahead of schedule. This led us to finish some of the assignments ahead of time too. For example, our informal testing was completed before the Test Report, and the User Manual also was completed ahead of schedule. We were glad that our coding team made such a big effort to complete the system, it gave us plenty of time to good job on these other jobs.

Unfortunately, there was one unexpected occurrence that happened which made us miss a deadline. During the publishing of the "Functional Design Document" the testing team found they were doing the wrong type of testing shortly before the deadline, we reassembled as a group and completed the testing document. The testing document however, did meet the extended deadline with no problems.

Although we didn't follow the timeline that closely, we got things completed anyways. The timeline would have been more useful in a "real" situation, because in this class all of the deadlines were set for us. We did finish some things ahead of time, but that was mostly due to hard work, rather than using timelines.


What is your Overall Impression of the Course and Project?

next previous top

Perhaps this course is not the most technically challenging course, but the adversities that a student must overcome are not any less difficult. Throughout the semester students learn many things about themselves and other people in their group. New friendships are made and some old friendships are broken. By the end of the semester everybody has developed strong opinions on the course. As usual the opinions within are varied.

The Course

next previous top

On a positive note, many people thought the course was a valuable learning experience. This class gave us an insightful outlook on how software programs are produced in the real world. We learned a variety of skills relating to not only the software engineering cycle, but also non-technical skills such as time management, organization, people skills, and patience. Some members expressed how much they enjoyed the lectures for the course. They stated how they found them entertaining and informative, "a real break from regular lectures". Certain members thought that the feedback for the assignments was helpful and informative.

For the negative comments, most people thought the course load was a little extreme. There was a definite problem with not only the number of documents we had to produce but with the size of each document. The deadlines were constant and we were often pressed for time. Certain members felt as though they were putting too much time in on documents that were not even being thoroughly read. Often the large size of the documents caused a lot of redundancy. One suggestion to fix this problem was to either reduce the number of documents or reduce the size of each document. Another issue that arose was that some members felt as though there were not enough TA's for the course. At the beginning of the course, there was often a lot of wasted time waiting for the TA to appear. Sometimes, due to the sheer size of the assignments the TA would take considerable time to grade and give feedback for assignments. Many feel as though the future students CPSC 451 would benefit by having more than one TA per lecture.

The Project

next previous top

The overall impression is that the project itself was good. Most people thought the project posed many interesting challenges and learning opportunities. Here are some of the comments: "It was a great change to design a system that somebody might actually use …", "It was exciting to watch the project develop from an idea to something tangible.", and "It's nice to program something that isn't just a simulation …". As we can see from the comments, one of the main attractions to the project was the fact that our group had the opportunity to develop a "real life" system.

There were however some problems that group members had with the project. Some people thought that the inconsistency between the difficulty levels between projects was unfair. It was felt that some projects were much more complex and required more time than others. Most members thought it was unfair that our project had to be Internet based even though the security issues on the computer science server made it very difficult to implement. We thought that the professors should have been aware of this fact and should have warned us about it.


What was our Relationship With the Customer Like?

next previous top

The relationship with our customer group can best be summed-up as a paper relationship with minimal crossover between the few members of our group that were friends with those in the customer group prior to this project. In a real life situation there would be more substance to the relationship because the customers would be more passionate about their role in the project.

Although there was not much of a relationship between our group and the customers, they were crucial in the development of the system. They provided us with the requirements on which to build their system, but there was a problem of response time when it came to questions of clarification. We believe this has a direct relationship to the frequency of customer meetings. It is difficult to get the customer groups to meet when they are busy with supplier documents. In some cases, this resulted in us having to dictate the answers to our own questions if we were to complete our assignments on time.

We all agree that this was a much better situation than CPSC 333 where the customers were the professors of the class. Professors are too busy to effectively play this role and they do not have the time to keep up with all projects. In certain situations, this prevents them from being as sympathetic to supplier issues. Having students as customers made it easier to have requirements waived or changed.

At the same time, the customer group tended to be very picky when dissecting our documents. This applies to all groups and we feel there is less of a concentration on the major ideas because we are forced to find all errors, regardless of importance, in order to fill the size requirement for the customer documents. Our group generally ignored this nit-picking and it did not affect the relationship. We knew why they were making those comments because of our own experience as customers.

This project would have been more difficult if there had not been a few members in our group that had friends in the customer group. This allowed us to communicate as humans as opposed to business associates. This direct contact aided in the development of the relationship and was crucial in the development of the final product.

We are thankful that the customer group understood our problems because this course offers enough work without the added problem of having a strict customer group. They understood that our major issue, the online requirement, was beyond our control and they were willing not to call us on it. When they agreed to waive this requirement we made an effort to include other things they had asked for. Two examples of this are the student name and the professors being able to select a room for a class, as opposed to the system selecting the room. We felt that we owed them at least that, and I think that best displays our relationship with the customer group.


What Lessons Did we Learn?

next previous top

During the course of our software engineering project we learned a great deal of lessons pertaining to both interpersonal relationships, and the software engineering cycle itself. In the following section we will discuss the lessons that we learned from this software engineering course in terms of individual and group perspectives.

Individual Lessons

next previous top

What many of us discovered, quite surprisingly, was the importance that communicating and relating with the other members played a role in the success and experience of not only individuals, but also the group as a whole. Whenever a large group of people comes together to collaborate or discuss certain issues it is always the case that conflicts will occur. In our group there were a wide array of personalities, resulting in an interesting group dynamic. Each of us learned to achieve (to some degree) a better understanding of the personalities and motives backing the other individuals within the group. The biggest setback to the success of the group was the size itself. What we found was that we didn't have much opportunity to work with every member to a degree that would facilitate strong relationships.

Another aspect of the group project that we were able to learn from was that of time management. We all agree that the workload of this course was considerably higher than most other courses. It was something that many of us were unprepared for especially when our time was divided amongst other courses. In the beginning we were able to set up meetings with large groups of members to discuss issues and work on the early phases of our project. This approach we learned was quite beneficial as it allowed us to help each other out and understand the project itself to a greater degree. As the project progressed, the assignments became more separated to the point that individuals would be given a deadline to finish one part of the assignment. Communication at this point was based mainly on e-mails between members of the group. Whether it was the nature of the assignments, individual responsibilities, or a basic breakdown in group relations, the result was less than positive.

Group Lessons

next previous top

One of the biggest concerns we had with the group itself was with the issue of respect for other's work and/or effort. We learned that for all types of individuals, offering positive comments or criticism only furthers their need to do a better job the next time around. This in no way means that a person should not express their honest opinions, but should strive to express them in a constructive manner.

On the technical side we discovered some deficiencies of the Visual Basic language itself. Not to say that Visual Basic is a bad language as it has the major advantage of being a rapid software prototyping tool. The issues that did arise however, introduced many problems that were beyond our control.

Another major aspect of a group's success deals with the amount of preparation that they are able to perform before starting an assignment. What we discovered was that the preparation that we were able to perform really helped us to understand the requirements of the system.


Summary

next previous top

Once again, the purpose of this document was to learn about the project, and to determine how it might be done "better" in the future. To that end, here are a few key points:

  • Because of the size of the group, communication was an issue. It is important to communicate with the whole group, and this would likely be easier to accomplish with a smaller group.
  • We ran into trouble with the online requirement. In future projects, it would be a good idea to find out what technical constraints we are working with earlier in the project.
  • We had some established links with the customer group. If this had not been the case, it would have been wise to establish those links during the early part of the project.
  • The design process is useful for getting feedback from the customer, and conceptualizing the system, but it's important to decide how much of it is of use to anyone. We found some of our documents (or some parts of our documents) seemed to be wasted effort, and much of the work could have been done in a less formal manner.

This has been an interesting learning experience for WinterSoft, and we hope that it will help to ensure the success of our future projects.


[EXECUTIVE SUMMARY] [MAIN] [DOCUMENTS] [CONTACTS]