This rant discusses the requirements and characteristics of a software development environment geared toward achieving the benefits of reuseable software.
A good software development environment must:
Secondary requirements include:
Structure (the file namespace)
Component Catalog. Finding /Searching for (Locating) Components.
Bug tracking/inter project communication. The traditional bug tracking system can be enhanced by careful design to be more of a product change tracking system. Such a system would have each change request/bug move through a series of states. In each state, exactly one person/entitiy/role is responsible for moving the change to another state. State changes cause the change request to move towards resolution, but the design must allow for iterative behavior of the system.
- Problem Found
- Solution Pending
- Ready To Test
- Testing Passed / Resolved
- Testing Failed
- NotAProblem - Intended by design
- reproduced - test case available
- desired release date (next,future,next bug-fix)
- type (feature request, bug)
- type of change required (design,implementation)
- estimated time to change ()
General affected area/library/module.
Short notes about the bug.
P4DTI - Defect Tracking Integration
- Red Hat RPM
Change requests should be divisible and mergable. Divisible requests
can be broken into several sub-changes. Mergable change requests are created
when multiple change requests reference the same root change/cause.
Project coupling created at shared repository.
Competition for files. Reason for branching.
Mitigated by small object granularity.
Mitigated by unit testing.
Validated as stable by use in many projects.