COMPUTER SYSTEMS RESEARCH
Program Iteration Report 2006-2007
Running version, planning, testing, and analysis of your program
Lifecycle Planning
Name: __________________________________, Period: _____, Date: ______________
Project title or subject: _______________________________
Language(s) and other software tool(s): ______________________
Iteration #3 - October 16-31, 2006
- Choosing a lifecycle model for your project. (Rapid Development, p. 154) Different projects have different needs, even if they all need to be developed as fast as possible. To choose the most effective lifecycle model for your project think about your answer to these questions:
- How well do I understand the requirements at the beginning of the project? Is my understanding likely to change significantly as we move through the project?
- How well do I understand the architecture of my program? Am I likely to need to make major architectural changes midway through my project?
- How much reliability do I need?
- How much do I need to plan ahead and design ahead during this project for future versions?
- How much risk does this project entail?
- Am I constrained to a predefined schedule?
- Do I need to be able to make midcourse corrections?
- Do I need to provide my customers or management (or teacher) with visible progress throughout the project?
- How much sophistication do I need to use this lifecycle model successfully?
- Although "Code-and-fix" may be an appealing model, choose one these lifecycle models that you feel best fit your project.
- Identify a lifecycle model that's a good fit for your project + any comments you may have as to why:
- You are commencing upon a research project. What is research? The following "answers" are from Rising Above the Gathering Storm and Pasteur's Quadrant by D. Stokes.
- Answer, part 1:
- Basic research - pursued for the sake of fundamental understanding but without thought of use.
- Applied research - pursued to convert basic understanding into practical use.
- These two classifications above can break down in the real world because "basic" discoveries often emerge from "applied" or "developmental" activities:
which leads to...
- Answer, part 2. In Pasteur's Quadrant (1997) Donald Stokes distinguishes four types of research:
- Pure basic research, performed with the goal of fundamental understanding (such as Bohr's work on atomic structure)
- Use-inspired basic research, to pursue fundamental understanding but motivated by a question of use (Pasteur's work on biologic bases of fermentation and disease)
- Pure applied research, motivated by use but not seeking fundamental understanding (such as that leading to Edison's inventions)
- Applied research that is not motivated by a practical goal (such as plant taxonomy or cladistics and computational paleontology - Latimer)
- What type of research do you think characterizes your own project? Also give a brief explanation or discussion why. Also, check out the new research tool named
Zotero.
Your research project should, in general, reflect four habits of inquiry (from the Draft TJHSST Research Definitions document)
- Posing a testable question that reasonably attempts to add new knowledge or a new application of existing knowledge to a field.
- Using a specific test design* to systematically collect data.
- Analyzing data by employing appropriate mathematical or algorithmic tools to reach objective and verifiable conclusions.
- Communicating findings logically, clearly, and thoroughly in appropriate venues.
*The test design should clearly attempt to either
(a) reduce alternative explanations/variables or
(b) assess the relative performance of the product or technique under conditions of use. Performance testing is often informal, reiterative, and embedded in the development process.
- Outline your organization for this iteration of your project. For example, what types of inputs does your program expect, what algorithms and processing the program is doing, and what output(s) do you expect.
- Input(s) - try to test a variety of kinds of inputs:
- Algorithms/routines you're using and learning (you can paste in code and explain):
- Types of output you expect, what do you expect the program to do for this iteration?
- Tests - how are you validating the success or failure of this iteration. What pieces of code, functions, classes, algorithms are you checking and what specific tests are you doing? How are you analyzing your results at this point?
- What do you think your next step will be for the next iteration of your program? Try to be as specific as possible.