CS 325: Software Engineering
April 7, 2015
Software Configuration Management• Task Scheduling & Prioritization• Reporting Project Progress• Configuration Management
CS 325April 7, 2015Page 2
Task SchedulingA general approach to scheduling the tasks for a software project:
1.Schedule up-front tasks (installation, training)
2.Determine dependencies between analysis, design, implementation, and testing
3.Schedule forwards (plan the natural sequence of development) and backwards (work from goals back to how to achieve them)
4.Assign tasks to team members, weighing both skills & motivations and risks & rewards
5.Formulate backup plans based upon perceived risks and their anticipated impact
CS 325April 7, 2015Page 3
Task Prioritization
Task A Task B Task C Task D0
10
20
30
40
50
60
70
As the project exits the planning stage and enters the implementation stage, tasks must be prioritized
Traditional Pareto PrioritizationPrioritize the project tasks with the notion that priorities shall remain basically unchanged
Agile prioritizationRevisit
prioritization often, modifying as
necessary
CS 325April 7, 2015Page 4
Task PrioritizationRecognize that some project tasks are required, while others are discretionary.
In a video game, GUI design would be considered
essential, while completely accurate computation (e.g., collision detection) might
be considered discretionary.
In an industrial CAD/CAM system, however, accurate
collision detection would be required, while an optimally
designed GUI might be considered discretionary.
CS 325April 7, 2015Page 5
Reporting Project Progress:Milestone ChartsMilestone charts are an effective way to present progress to team members and stakeholders at monthly meetings.Key ProjectMilestones
milestoneoriginal date
revised date
actual date
This Month’sMilestones(Accomplished)
This Month’sMilestones(Not Accomplished)
milestoneoriginal date
revised date
actual date
milestoneoriginal date
revised date
actual date
CS 325April 7, 2015Page 6
Reporting Project Progress:Project ScoreboardThis detailed documentation is an effective way to dynamically organize information about progress during a team meeting.
Project
Role
Tasks Under Way
Completed Tasks
Total Task Time
Estimate
Measurements
Dependencies
Commitments
Risks
Comments
It frequently reveals potential problems and their solutions, as well as providing focus and perspective to the team members.
CS 325April 7, 2015Page 7
Configuration ManagementWith multiple developers on a software project, formal revision control becomes essential.
Subversion is a commercial revision control system that tracks integrated “trunk” systems, currently developing “branch” systems”, and milestone snapshots known as “tag” systems.
CS 325April 7, 2015Page 8
Check-Out/Check-InFocusing on version support for individual files, this type of configuration management system consists of two relatively independent tools.
• The repository tool stores versions of files and provides mechanisms for controlling the creation of new versions.• The build tool automates the generation of derived files (e.g., object code, linked executables).
CS 325April 7, 2015Page 9
CompositionDevelopers repeatedly compose a system from its components and by selecting the desired version for each component.
By retaining multiple versions of individual software components, this configuration management model facilitates trying new approaches and reverting to old ones when necessary.
CS 325April 7, 2015Page 10
Change SetAnother approach to configuration management is to keep track of the set of changes that have been made from configuration to configuration.
By focusing on the change sets instead of the overall components, developers are often better able to determine logical dependencies within the system, as well as to ensure the system’s stability.