CPE 309 Job Assignments

[Manager]  [Analyst]  [Designer]  [QA]  [Test Manager]  [CM]  [Implementation Mgr]  [Programmer]  [Training]

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 Trac system.
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.

Webmaster
  (in most cases 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.
Finalizes the web site at the end of the project, ensuring there are no offsite links. E.g., Google docs must be converted to PDF on the wiki, Javadocs must be on the wiki and not a student account, etc.

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.
Writes and maintains the System Test Matrix.
Coordinates developers writing system test case documentation.
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, as appropriate.
Obtain/develop necessary test tools. The instructor will recommend (or require) certain test tools (such as JUnit). 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.
Coordinate writing of any automated 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. On some projects, the UI Prototyper is a separate role.
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.
Facilitates customer acceptance test meeting.

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).

Toolsmith
(Often combined with Training Coordinator)
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).

Risk Manager
Write/maintain top 10 risks list (p93-101)
Presents weekly risk status report (table 7-2).

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.
Writes system test case for one or more use cases (requirements)
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