computer programming computer software configuration management contract framework functional requirements integration testing international standard layout negotiation process project initiation document project plan software development system requirements system testing unified modeling language