The role of software engineering process in research & development and prototyping organizations
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.