CPE 309 Job Assignments
These are "jobs" or "roles" that students fulfill for their project
team. A job is a continuous work assignment that has no
particular
start/end date and may not create milestones or deliverables.
Team Manager
The Manager is the administrative coordinator for all project
activities. The manager is responsible for ensuring that the product is
delivered on time, within budget, with the desired features, and with
an agreed upon level of quality.
The Manager administrates the Project Plan.
Assists team members in following all software process definitions in
all project plans; documents compliance failures.
Identify and assign individual action items and track them on the
Current Action Items section of the Web page.
Writes (with assistance from Designer) product size estimates.
Write Budget and Cost Estimate Calculations.
Writes and maintain visibility indicators of project progress
(resources, schedule, and quality) via team Web page.
Create and maintain the detailed schedule of project activities on the
Web page.
Facilitates team status meetings during each laboratory period.
Coordinates recording and publishing of team meeting minutes.
Gathers individual status reports and writes weekly progress reports to
"upper management."
Coordinates creation of Team Expectations and Project Vision statements.
Schedules Acceptance Test Meeting with customer.
Facilitates Project Retrospective meeting and writes summary report.
Creates the Final Submission; a CD-ROM archive of the project
history. The Manager will be assigned an Incomplete until the
Final Submission is accepted.
Webmaster (for Spring 2004, the Team Manager is also
the Webmaster)
All 309 project documentation is maintained on the Web. This person
designs and administers the project web page.
Ensure that all relevant team material (deliverables, processess,
decisions, ...) are on the web page and are kept current.
Quality Assurance (QA)
The QA manager is the person ultimately responsible for ensuring that
the product meets the specifications and satisfies the product's
release
criteria.
Administers QA plan.
Supervise and assist Test Manager in administering all software testing
activities.
Trains developers in required quality standards and acceptance criteria
for all work products.
Evaluates developer work products for conformance to quality standards.
Plans, administers, and monitors informal reviews and gathers
appropriate documentation.
Plans, coordinates and monitors all Software Inspections (code
walkthroughs) and gathers documentation.
Administers defect reporting (Table 9-1) and tracking procedures to
track defects in the sofware using an automated tool. (see fig. 3-5 of
Survival Guide).
Trains developers in Defect Repair Procedure and verifies that
developers follow it correctly.
Verify that System Tests are actually testing the required functions
and quality attributes in the SRS.
Present weekly report on defects reported, open, and fixed. (Archive by
week). Provide visibility to these data on the team Web page.
Supervise Designer in monitoring software design quality.
Cooperates with Team Manager to gather empirical data needed to verify
that Release Criteria(p140, and Ch 16) have been met.
Customizes the Release Checklist as appropriate for the project.
Coordinates completion of activities in the Release Checklist.
Audits developer source code for conformance to class Coding Standard.
Trains developers in LOC Counting Procedure and verifies that LOC
counts are accurate.
Gathers all metrics required by QA plan (see section 5) during the project and submits
a Metrics Summary Report at each release.
Writes the Quality Assurance Retrospective.
Test Manager
Administers the product's Test Plan and supervises all aspects of
software testing.
Select an assertion testing tool for the target language.
Obtain/develop necessary test tools. Primarily we will be using JUnit
for unit and integration testing and GUIRobot for system testing.
However, there are a wide variety of tools available on the WWW. The
Test Group will likely be required to develop or customize some of
their own tools.
Collaborate with QA and Analyst to determine methods to test the
non-functional requirements. Obtain instructor signoff on
non-functional
test plans.
Writes and maintains the System Test Matrix.
Coordinate writing of all system tests and scripts
Coordinate writing of all integration tests.
Write the daily smoke test and cooperate with Implementation Manager to
run the smoke test after each daily build.
Responsible for daily smoke test report (though this may be produced by
an automated script).
Cooperate with customer for acceptance tests.
Perform all integration and system testing (including non-functional
tests) including documentation/demonstration of results.
Designer/Architect
The designer creates and maintains the high-level software design. This
job may be decomposed in some situations (e.g., database, User
Interface, Networking).
Responsible for maintenance of High Level Design (created during 308),
especially javadocs for public interfaces.
Updates the design diagrams and javadocs on the team web site weekly by
reverse engineering the source code.
Participate on Change Control Board regarding design changes.
Monitors the javadocs to ensure no uncontrolled changes to the design
take place.
Under supervision of QA Mgr, monitors design to be sure it meets course
quality criteria.
Assist Project Manager in producing Budget and Cost Estimate
Calculations (based on product size estimates).
Maintains and defends the Design Issues and Rationale.
Writes and maintains the Requirements Traceability matrix (spec to
design).
Assist Implementation Manager in writing Implementation and Integration
Plan.
Assist Programmers in creating detailed designs.
Assist Programmers in creating javadocs for non-public methods.
Implementation Manager
Writes and maintains the Integration and Implementation Plan.
Supervises programmers during implementation and unit testing,
allocating the workload equitably among available staff.
Cooperates with QA Mgr to ensure good detailed designs are written
before coding begins.
Writes or customizes Unit Development Procedure and Integration
Procedure and monitor developer conformance.
With assistance from CM creates developer HOWTO directions for setting
up developer environment.
Writes Daily Build Procedure.
Assist Analyst in writing the Staged Delivery Plan.
Writes the build script and performs all [daily] builds and informs
developers of check-ins that break the build.
Present daily build report during lecture.
Present weekly report on integration status ("code complete").
Cooperates with Test to produce daily smoke test report.
Assigns defect reports to appropriate programmer.
Under supervision of QA Mgr, carries out activities in Release
Checklist (Ch 16).
Writes and executes Software Deployment Plan. Writes Install program
(if needed) and procedures and documentation.
Change Management
Change management takes administrative responsibility for the project's
source code and documentation. The goal is to never hear any team
member say "What version is this?"
Customizes the change control procedures outlined in the Change Control
Plan that govern every document produced by the project.
Administers Change Control Plan and monitors developer
conformance. This may include some kind of automated checking for
instances of uncontrolled changes to documents. The CM is authorized to
assess penalties for non-compliance.
Organizes and leads the Change Control Board meetings.
Provides visibility to changes by posting Submitted Change Requests on
team web page.
Train all team members in the change control procedures to be used.
Install and administer source code repository using SVN.
Train all programmers in SVN commands and proper use.
Provide tech support for SVN. Assist Implementation Manager
in writing developer HOWTO.
Demonstrates to instructor during Stage 2 that repository has separate
branches for maintenance and new development.
Do backups.
Notes: This job has a lot of work early in the quarter but not so much
later on.
Analyst Jobs (Requirements and Prototype)
The analyst maintains the project Specification document (and/or User
Documentation) and serves as the system analyst and customer liaison.
Responsible for ensuring consistency between specification, design, and
implementation. The SRS, design, code, and tests must
match.
This is an ongoing activity, not a once-only task.
Develop or maintain the user interface prototype. This may be
archived once GUI code is implemented.
Negotiates and writes Staged Delivery Plan (in consultation with
team). Obtains customer signoff.
Coordinates production of all end-user documentation (quick reference
guides, online help, tutorial, manuals, etc).
Negotiate with all other team members and customer on product features.
Keeps log of every customer contact.
Training Coordinator
Responsible that all project personnel are trained to a level of
competency that enables them to perform their technical
responsibilities.
Administer Training Plan provided by instructor.
Customizes Training Plan with additional activities and assessments as
appropriate for your specific project.
Completes each training activity one class meeting day before the class
due date.
May be required to facilitate group scoring of training assessments.
Authorizes personnel to proceed with development tasks when they
have completed the required trainings (See Training Plan).
Risk Manager
Write/maintain top 10 risks list (p93-101)
Presents weekly risk status report (table 7-2).
Toolsmith
Coordinates team selection of necessary development tools and completes
Tool List in Project Plan.
Provide training on all development tools. (May cooperate/assist with
CM group about CM tools).
Assist team members in installations on their individual machines.
Provide tech support for the target platform (hardware, o/s, and
language).
Obtain and install time tracking software as appopriate.
Programmer - ALL
Everyone on the team will serve as a developer / programmer.
A programmer does the implementation and unit testing for certain
modules assigned by the Designer.
Maintains the Javadocs (including DBC or Error Checking specs as
appropriate) for one or more system components.
Write the detailed design (pseudocode) for one or more system
components.
Writes the implementation for one or more system components.
Write unit tests and performs unit testing for one or more system
components.
Assists Test Manager in writing integration tests and system tests.
Tracks and reports time spent on all project activities.
Writes weekly status reports.
Reports perceived project risks via appropriate reporting channel.
Responsible for becoming competent with the development tools.
Follows all established processes and adheres to standards.
Will follow the Personal Software Process (PSP) as described in
the QA Plan.
Document History
4/23/08 JD Clarified QA reporting requirements.
3/21/08 JD Minor revisions for Spring 2008.
3/26/04 JD Significant revisions throughout. Added links to
each section at top.
12/31/03 JD Moved some sections around.
4/14/03 JD Updated Integration manager job