Summary: | Software Research and Development Organizations (or SRDs) have unique goals
that differ from the goals of Production Software Organizations. SRDs focus
on exploring the unknown, while Production Software Organizations focus on
implementing solutions to known problems. These unique goals call for
reevaluating the role of Software Engineering Process for SRDs. This paper
presents six common Software Engineering Processes then analyzes their
strengths and weaknesses for SRDs. The processes presented include:
Waterfall, Rational Unified Process (RUP), Evolutionary Delivery Cycle
(EDLC), Team Software Process (TSP), Agile Development and Extreme
Programming (XP). The results indicate that an ideal software process for
SRDs is iterative, emphasizes visual models, uses a simple organization
structure, produces working software (with limited functionality) early in
the lifecycle, exploits individual capabilities, minimizes artifacts, adapts
to new discoveries and requirements, and utilizes collective code ownership
among developers. The results also indicate that an ideal software process
for SRDs does NOT define rigid personnel roles or rigid artifacts, is NOT
metric-driven and does NOT implement pair programming. This paper justifies
why SRDs require a unique software process, outlines the ideal SRD software
process, and shows how to tailor existing software processes to meet the
unique needs of SRDs. === text
|