Managing Student Software Projects - CCSC

advertisement
Managing Student Software Projects
Eddie Burris
burrise@umkc.edu
University of Missouri—Kansas City
Software—being a one-off product—is almost always developed as a project.
Consequently, project work is an integral part of the undergraduate student experience.
While there is no clear dividing line between a large assignment and a project, work
generally becomes a project when the scope of the work is large enough to require a layer
of organization and planning. Project work may be included in any class but it is
fundamental to the senior-level capstone class that is a part of the degree requirements of
most undergraduate computer science degree programs [SE2004]. A capstone course
provides the opportunity for students to apply what they have learned in previous courses
to the definition, design, construction, verification and validation of a significant realworld software system.
Projects expose students to the practical problems of software development, but the very
nature of projects that provide dynamic and unscripted learning opportunities for students
also creates additional challenges for instructors. Instructors responsible for running a
project class might be tempted to take the easy way out and simply assign a project and
let the students figure it out for themselves. This sink or swim approach requires little
effort and students rarely blame the instructor for any failings. After all, the instructor
didn’t drown the students the water did. If anything the instructor deserves gratitude for
courageously standing on the bank of the water shouting helpful advice like “Swim!
Swim!”
Students are ultimately responsible for their success or failure but instructors supervising
student projects have a special responsibility to create an environment that maximizes the
opportunities for success. Running a project class requires a different approach than what
is used on ordinary teach-and-test type classes. Just as there is no one best way to run a
project, there is no one best way to supervise those who are performing the project. There
is no prescriptive formula that will work in all situations but the following list highlights
the 10 most important issues instructors supervising student projects will need to address.
Issue 1: Should students work on real-world community projects or is it better to give
them artificial problems?
Comment: Working on real-world projects with real customers and users
provides for a richer learning experience but may also be more than what
students are prepared to handle.
There is also more pressure to succeed when doing a community project. Even
when external customers aren’t paying for a system they are investing their time
and expect a product in return. Poor performance on a community project can
tarnish a school’s image.
Real projects have messy details that aren’t easily duplicated in fake projects
(conflicting constraints, uneven customer involvement, ambiguity, changing
requirements, etc). Real projects are generally more motivating for students but
can also be more frustrating when things don’t go well.
Targeted learning objectives are easier to meet with instructor-defined problems.
Issue 2: It’s difficult to complete a sizable project in one term, but keeping a team
together across two terms presents its own challenges.
Comment: The only way a two-term project is feasible is when the courses are
part of the degree requirements. It’s nearly impossible to maintain a stable team
across two courses that are electives.
Issue 3: It’s impossible to fully cover the software development life cycle in one term.
For projects intended to be completed during a single term, what topics should be
given priority? Alternately, when a project class spans two terms, how do you
divide the work between the two terms and manage disruptions to team
composition?
Comment: Single-term projects generally choose to focus on either the technical
or non-technical aspects of performing a project. Multi-term projects typically
focus on the early phases of the software life cycle during the first term, and later
phases during the second.
Issue 4: No matter how the coursework is divided some items will be left for students to
learn on their own. What should students be expected to learn on their own?
Comment: In general, class learning objectives and the unique characteristics of
individual projects along with the background and experience of the instructor
will dictate what topics are emphasized in class.
Here is an abbreviated list of topics for consideration:




Project management topics: organizing, estimation, planning, tracking,
measurement, control, configuration management, risk management, etc.
Software development topics: requirements gathering, requirements
analysis, design, programming, testing, etc.
Software development practices: design patterns, refactoring, test driven
development, etc.
Project tools: modeling and development environments, project planning,
source code control, defect tracking, etc.
Issue 5: Team dynamics and other soft skills are important for project success but not all
computer science instructors are comfortable or qualified to teach these soft
skills.
Comment: Soft skills can be taught on an as needed basis or in anticipation of
problems. The comment to issue #4 may also apply here as well.
Issue 6: Should students be allowed to work alone or required to work in teams?
Comment: Working in teams gives the students the opportunity to experience
team dynamics, organization, coordination and negotiation but leaves less time
for focus on more technical challenges.
Issue 7: When students are working in teams how do you accurately assess individual
performance and structure the assessment in a way that encourages teamwork
and discourages social loafing?
Comment: One way of rewarding both group and individual effort is to assign a
value to the team result and then use peer review to decide what percentage of
this value is owed to each student.
Issue 8: Should instructors enforce process on student projects and if so, what kind of
process and at what level of rigor and formality? Should students be allowed to
define their own process?
Comment: When defining a process it can be difficult to find the right balance
between discipline and agility. Also, students must be sold on the idea of
following a process. Most students haven’t experienced a runaway project so
might not fully appreciate the value of following a defined process. Potential
processes include: IEEE-STD-12207, PSP, XP, Rational, etc.
Issue 9: When grading deliverables what portion of the project grade should be allocated
to intermediate deliverables (requirements, design, test plan, etc.) vs. the final
result?
Comment: Putting more weight on upfront work helps insure a successful result
but can also send the message that paperwork is more important than working
software and a satisfied customer.
Issue 10: Students often need dedicated hardware and software resources to complete a
project. Those responsible for campus computers don’t like to give students
admin authority on public computers. This is especially true with equipment
connected to the Internet. The IS departments at most universities have a
mandate to protect the computing infrastructure which is sometimes at odds with
the teaching mission of the university.
Comment: Special isolated machines may be set up for students to use. Also,
several online ISP’s offer hosting services at reasonable prices.
Download