Unit 13 - Process quality management, human resources, quality assurance Flashcards
If you were managing a team of ten people on a late running project and your manager offered you five more people to help get back on track, would you accept? If not, how would you justify your refusal?
Accepting may be unwise as it would create sixty more communication paths which might, in turn, make the project even later. However, the additional resources might be able to contribute effectively to bring the project back on schedule, so a definitive answer to this question is not possible.
60 = (15614)/2 -(1069)/2 If there are 10 people, each of them may communicate with any of the 9 others, giving 1069 = 90 possible communication paths, but we must halve this because each path will have been counted twice, once in each direction.
Suppose you were able to give an accurate estimate of the work content of a project at the start of the project. Give one reason why the project could take more than this estimate. Give one reason why you might be motivated to propose a lower estimate.
A project might take more than the estimate because the requirements might change, creating further work. You might have been tempted to propose a lower estimate in order to secure the business.
When you organise a project team by subsystem, as in Figure 3, what considerations should you take into account in allocating staff to a subteam? Assume that you are working within a matrix organisation.
The primary need is to make sure that each subteam has the skills and knowledge necessary for developing its particular subsystem. The use of a matrix organisation makes this easier.
Consider the waterfall model of the software development process as a quality chain. Who are the customers for the design activity and what must be done to gain their satisfaction?
There are two sets of customers: the requirements engineers, who will be satisfied if the design implements the requirements determined by them, and the programmers, who require a design that is free of defects and is easy to implement. Both sets of customers have a view of what a defect is, and require the design to be defect free, from their point of view, to be satisfied.
What basic problem does configuration management aim to solve?
Configuration management aims to solve the problem of keeping track of all the successive versions each item goes through, as well as the interdependencies between them, avoiding the possibility that developers will waste effort by working with wrong versions, and ensuring that when the product is released only the correct version of each part is included, so that the product will work properly.
What are the primary concerns of the manager of a software development project?
Although management can be divided into project management, people management, and quality management, these are each carried out to ensure that the software is delivered:
- on schedule;
- within budget;
- to specification.
These factors are the critical concerns in managing a software development project.
What skills does a project manager need to possess to carry out the responsibilities set out in our solution to Exercise 1?
Just being a good programmer or analyst is not enough to be a good project manager. The project manager will need to be skilled in the following areas.
- Effective people management The project manager must be able to identify the skills and expertise required to complete the project, and then recruit the staff. And, perhaps more importantly, they must be able to motivate and develop these people, to their full potential, to benefit not only the current development project, but also the whole organisation over the longer term.
- Planning Any kind of construction project always requires careful planning. The project manager needs to plan each activity of the development so that resources can be made available when required, and not too early or too late. The project plan the manager constructs must also give confidence to the client that the project is being properly managed.
- Organisation and monitoring The project manager must organise the human resources available into an effective team or group of teams. Having planned the work, the use of resources with respect to the plan needs to be plotted and any potential problems of slippage or overspend need to be identified early and remedial action taken.
- Customer relations In many projects, liaising with the clients and users is a major activity in itself. Clients will need to be reassured that the money they are investing in a new software system will bring the expected return on investment. Users will want to be reassured that the software will support their needs. On many projects, requirements are constantly being changed and new ones introduced, and managing this is part of the project manager’s job.
- Technical leadership In many smaller projects, the project manager will be the person consulted for advice in devising and selecting solutions to technical problems. The project manager will not be expected to become involved in the details of these solutions, but must be able to spot the winners and losers. Alternatively a different technical leader or ‘authority’ might be appointed, perhaps called the ‘system architect’ or similar.
Suggest a way risks to a software development project might be identified and categorised.
They could be identified by holding a brainstorming session and using some simple categorisation of risk to help focus the search. A suitable categorisation would be: project risks, technical risks and business risks.
A project has identified a number of risks, and is considering the following strategies to contain the risks: (a) to continue developing in Java, despite learning the next release of the Java development environment is quite different from the current version;
(b) to put a penalty clause in a software procurement contract so that a failure by the software supplier to deliver acceptable software leads to complete recovery of all payments made, plus an additional damages payment to cover consequential loss;
(c) to send all software engineers on a UML training course;
(d) to not use Java, because the software engineers have no experience of Java. Say what kind of risk containment strategy is being used (from avoidance, retention, reduction and transfer) in each case, and discuss the appropriateness of the strategy.
(a) Risk retention: either the current development environment can be retained until the project is complete, or if not, the retraining time can be tolerated.
(b) Risk transfer: the supplier now carries the risk.
(c) Risk reduction: using UML will be less risky if everybody has a common understanding of current best practice in using UML.
(d) Risk avoidance. Note that one could have used risk reduction by training the software engineers on Java. In addition, not using Java could bring its own risks, such as using outmoded technology.
A project manager will want to monitor those risks that are of significant concern. Which kinds of risks do you think should be most closely monitored?
At the outset of the project the project manager will be most concerned about those risks identified as high probability and high cost. However, the project manager will also need to monitor not only these significant risks, but also those risks which at the outset seem insignificant but whose probability and costs may change as the project develops, in case these risks become significant. Software development is an extremely dynamic process and situations, especially with regard to risks, can change suddenly.
What are the basic ideas underlying function point estimates, and how are these applied to estimation of object-oriented software development?
Function points are units of functionality of a system such that each function point requires the same quantity of code to be produced. Functionality is known early in development, during requirements analysis. In object-oriented development, functionality is determined by the use cases and classes, so these are used for estimation purposes.
If you have an estimate of the size, in KLOC, of a software system that you intend to develop, why can’t you then simply divide the size in KLOC by a single productivity figure of KLOC written per person-month to obtain the effort?
In developing large software systems, two further factors are involved.
- Complexity: productivity is higher for simple systems such as database systems, and lower for complex systems such as embedded real-time systems.
- Diseconomy of scale: usually larger systems use proportionately more effort due to the need for internal communication between members of the project team. Both of these mean that simply dividing by a single productivity figure will not suffice.
How do we incorporate our judgement of the potential complexity of a system into the process of estimation using Basic COCOMO?
Complexity is first of all used to select the actual parameter set to be used, depending upon type of system — organic, semi-detached or embedded. After this, complexity may also be used to determine a number of effort multipliers, which are used to scale the initial estimate of the effort.
What is a deliverable and what is its importance for project scheduling?
A deliverable is an output, such as a design document or source code, of some software development activity of which the production gives evidence of the completion of the activity.
What are the essential attributes of activities that are needed for project scheduling? How can project schedules be expressed?
The essential information required is the name of the activity, the effort required to complete the activity, and the dependencies upon other activities. The usual way to express the results of scheduling is either as a Gantt chart or as a PERT chart.