RAP Software Process Checklist
It is recommended that every RAP project fill out the project checklist on a regular basis to make software process a consciousdecision.
The purpose of this checklist is to ask some software project process and practices questions to stimulate thinking. Much of software process and practice is about making conscious choices. There are no right or wrong answers to the following questions; they are intended to foster discussion by the project team and be a guide for areas to consider. It is entirely expected that different projects will need and use very different levels of software process and practices.
A list of related sources is included at the end of this file for additional information.
Initial project information
1. Project name: __________________________________ 2. Type of project: __ field program __ research __ prototype __ operational
__ other (please describe) 3. Size of project (resources): __ small (1-2 people)
__ medium (2-10 people) __ large (10+)
4. Size of project (scale):
__ small (1000 lines of code or less) __ medium (1000-10,000 lines of code) __ large (10,000-100,000 lines of code) __ really big (>100,000 lines of code) 5. Length of project:
__ short (1 month or less) __ medium (1 month - 1 year) __ long (> 1 year)
__ ongoing
7. Deliverables (check all that apply)? __ documents/reports __ running system __ algorithm descriptions __ user training __ manuals __ none
__ other (please describe) 8. User/customer support? __ 24/7
__ regular business hours only __ none
__ other (please describe)
9. Level of user/customer interaction with project team (check all that apply) __ frequent
__ formal __ infrequent __ informal __ none
__ other (please describe)
10. Level of user/customer training (check all that apply)? __ classes
__ site visits __ manuals __ none
__ other (please describe)
11. List the project's main goals for the year. 1. __________________________________________________________________ 2. __________________________________________________________________ 3. __________________________________________________________________
Overall project process
1. Rank the following 3 items in terms of their importance on this project. You must rank the items, no ties. (1)
__ Minimize defects (e.g., more reliable, fewer bugs) __ Maximize customer satisfaction (e.g., custom software) __ Minimize cost
2. Software life cycle model?
"A software lifecycle is a model that describes all the activities that go into creating a software product. Product development styles vary tremendously among different kinds of projects, requiring different kinds of tasks and different task orderings." (2)
__ waterfall (document driven, linear, defined requirements) __ code-and-fix (informal, no planning or documents)
__ spiral (risk-oriented model, refinement of waterfall model) __ evolutionary (develop prototype and refine until acceptable) __ staged delivery (deliver in successive stages)
__ design-to-schedule (prioritize features, do highest priority first) __ none
__ other (please describe)
3. Software development process model?
__ XP (Extreme Programming, see www.extremeprogramming.org) __ agile (see www.agilemanifesto.org)
__ CMM (see www.sei.cmu.edu/cmm/cmms/transition.html) __ none
__ other (please describe)
4. Are project engineering meetings scheduled on a regular basis? If so, how often are they scheduled?
__ monthly __ biweekly __ weekly __ as necessary
5. Requirements management?
"Requirements management is the process of gathering requirements; recording them in a document, email, UI storyboard, executable prototype or some other form; tracking the design and code against them; and then managing changes to them for the rest of the project" (3)
__ formal (e.g., tracking changes to requirements) __ informal
__ none
__ other (please describe)
6. Some level of risk management?
"The job of software risk management is to identify, address, and eliminate sources of risk before they become threats to successful completion of a software project." (4)
__ crisis management (i.e., firefighting) __ risk mitigation (i.e., plan ahead for risks) __ none
7. Monitor project progress? __ milestones
__ MSProject __ status meetings __ none
__ other (please describe)
8. Will the project undergo an internal periodic assessment (e.g., goals achieved, analysis of past year)?
__ formal __ informal __ none
__ other (please describe)
9. Project measurement/metrics (e.g., estimates vs. actual) __ formal
__ informal __ none
__ other (please describe)
Project practices
1. Will this project use version control? __ CVS
__ none
__ other (please describe)
2. Will this project do bug tracking? __ Bugzilla
__ email __ none
__ other (please describe) 3. Code reuse?
__ minimal, expect to write mostly new code
__ moderate, expect to use existing code for 50% of project __ high, expect to use existing code for 75% of project __ very high, expect to use existing code for >75% of project 4. Will this project do automated builds?
__ yes __ no
5. Will the results of automated builds be communicated automatically to the team?
__ yes __ no
6. Will this project do data archive? __ disk
__ tape
__ optical media
__ NCAR Mass Storage System __ none
__ other (please describe)
7. Will this project use/develop a playback capability? __ use existing (e.g., MDV servers)
__ develop new __ none
__ other (please describe)
8. Will this project do formal testing?
(see http://www.faqs.org/faqs/software-eng/testing- faq/ ) __ unit testing (http://www.xprogramming.com/software.htm) __ regression testing
__ integration testing __ GUI testing __ none
__ other (please describe)
9. Will the project use a design protocol? __ UML
__ design reviews __ formal documents __ none
__ other (please describe)
10. Will this project do releases?
__ formal (e.g., provide CDROM and install scripts) __ informal
__ none
__ other (please describe)
11. Will this project do verification? __ formal
__ informal __ none
__ other (please describe)?
12. Will this project do validation? __ formal
__ informal __ none
Project practice technical details
1. Wha t data formats will the project use? __ MDV __ SPDB __ GRIB __ netCDF __ MB __ MD/MF __ SQL __ ASCII
__ other (please describe)
2. What platforms will the project use? __ Debian Linux
__ RedHat Linux __ Sun Solaris __ SGI
__ Windows
__ other (please describe)
3. What languages will the project use? __ C __ C++ __ FORTRAN __ Java __ Perl __ Python __ Matlab others ____________________________________________________ 4. What infrastructure will the project use?
4a. Process control __ auto_restart __ ctpm __ cron __ none
__ other (please describe) 4b. Configuration file reading __ TDRP
__ CFRD __ XML __ none
4c. Data file distribution __ DsFileDist __ md_rep __ scp __ NFS __ rsync __ none
__ other (please describe) 4d. Logging
__ LE __ LOG __ javalog __ none
__ other (please describe) 4e. Visualization __ CIDD __ NCAR Graphics __ datacanvas __ RDI __ zebra __ VMET
__ web image files __ none
__ other (please describe)
5. What documentation formats will the project use? __ MSWord __ HTML __ DocBook __ javadoc __ pydoc __ PowerPoint __ none
__ other (please describe)
6. What development tools will the project use? __ JBuilder
__ purify __ insure __ none
__ other (please describe)
Footnotes:
(1) "Practical Software Metrics for Project Management and Process Improvement", Robert B. Grady, Prentice-Hall, 1992, p.24
(3) "Rapid Development", Steve McConnell, Microsoft Press, 1996, p.61 (4) "Rapid Development", Steve McConnell, Microsoft Press, 1996, p.84
--- Related sources: URL's: http://orca/cvs/doc/html/projects/etg/internal/sw_process_general.html http://www.levela.com/software_life_cycles_swdoc.htm http://www.rspa.com http://www.spmn.com/16CSP.html http://www.processimapct.com http://www.construx.com/cxone http://www.xprogramming.com/Practices/xpractices.htm http://www.agilemodeling.com/
Video training tapes available at RAP: 1 Software Engineering Overview 2 Software Project Management 3 Information Engineering 4 Reengineering Techniques 5 Object Oriented Methods 6 Software Testing
7 Software Quality Assurance