Software Development Models U5 PDF
Software Development Models U5 PDF
Unit 5
TCC 125/05
Software Development
Models
Managing Software
Development
COURSE TEAM
Course Team Coordinator: Ms. Azrina P. Jamal Mydin
Content Writer: Ms. Siti Sarah bt. Md. Rahim
Instructional Designer: Mr. Khoo Chiew Keen
Academic Member: Mr. Chandarasegaran Natarajan
COURSE COORDINATOR
Ms. Azrina P. Jamal Mydin
PRODUCTION
In-house Editor: Mr. Khoo Chiew Keen
Graphic Designer: Ms. Valerie Ooi
Wawasan Open University is Malaysias first private not-for-profit tertiary institution dedicated to
adult learners. It is funded by the Wawasan Education Foundation, a tax-exempt entity established
by the Malaysian Peoples Movement Party (Gerakan) and supported by the Yeap Chor Ee Charitable
and Endowment Trusts, other charities, corporations, members of the public and occasional grants
from the Government of Malaysia.
The course material development of the university is funded by Yeap Chor Ee Charitable and
Endowment Trusts.
UNIT 5 D
Managing software development
Contents
Unit 5 Managing Software
Development
Unit overview
Unit objectives
Objectives
Introduction
Plan-driven development
Project plans
The planning process
6
6
7
8
9
Agile planning
12
18
3
5
19
Objectives
19
Introduction
19
19
Managing people
22
Teamwork
Selecting group members
Team organisation
Team communications
Team motivation
24
25
26
27
28
31
33
Objectives
33
Introduction
33
33
34
36
37
40
46
49
52
55
Objectives
55
Introduction
55
55
56
Code of ethics
58
Summary of Unit 5
63
Course summary
65
67
References
69
Glossary
71
UNIT 5 1
Managing software development
Unit Overview
Unit Objectives
By the end of Unit 5, you should be able to:
1. Describe the concept of planning and scheduling in software development.
2. Describe the various aspects of managing people in software development
team.
3. Discuss project estimation in software development.
4. Explain the professional and ethical responsibility in managing software
development.
UNIT 5 3
Managing software development
Introduction
Most system development is organised in terms of project. One of the most important
tasks in software project is planning. In managing the project, the project leader is
responsible for organising the resources to achieve the goals within a given timeline.
The project activities need to be broken down into parts so that it can be managed
easily.
While planning, a project leader also needs to develop a project schedule because
there are several activities that require good scheduling. This section is divided into
four parts:
1. Introduction to software development planning and scheduling.
2. Plan-driven development.
3. Software development scheduling.
4. Agile planning.
While planning is considered important to virtually everything, it will not help you
to solve all your problems. In a software development team, the team leader needs
to break down the work into parts and assign it to team members. The team leader
also needs to predict matters that may arise and allocate alternative settlements to
those matters.
According to Sommerville (2011), there are three phases in developing project
planning: the proposals phase, project start-up phase and throughout the project
phase. Project planning is created at the beginning of the project. The function of
project planning is to interact within project team and also with customers on how
the task will be done. Let us have a look at the activities inside those three phases:
1. The proposal phase
The use of proposal is to educate the customer about the capabilities of the
team in satisfying their needs. Software development team use proposal to
record all the requirements and resources needed to develop the software. It
also helps to work out the price that the team should quote to a customer.
When developing a proposal, the plan is important because it shows the customer
how you will carry out the work. It may not be a complete plan that contains all
requirements but once you get the contract, the plan will be revised to provide
better assessment. The cost can also be estimated from the plan. Cost estimates
allow project leaders to build cash flow requirement while time estimates help create
a project timeline.
UNIT 5 5
Managing software development
Project scheduling
Scheduling is a helpful tool for orchestrating a sequence of events, whether you are
managing a software development project or coordinating your study time. Most of
the schedules involve a start and an end date, the tasks required, the task duration
and the relationship between the tasks.
According to Sommerville (2010), project scheduling is the process of deciding how
the work in a project will be organised as separate tasks and when and how these
tasks will be executed. Using project scheduling, you estimate the calendar time
needed to complete each task. You also estimate the effort required and who will
work on the tasks that have been broken down into parts.
Project scheduling is needed in both plan-based and agile processes. But the level of
detail may be less in an agile project plan. This initial schedule is used to plan how
people will be allocated to the project and to check the progress of the project against
its contractual commitments. In agile processes, an iterative approach to scheduling
is used to plan each phase. According to Pressman (2006), there are a number of
basic principles that can guide you to have a good software project scheduling:
1. Compartmentalisation
This means that the project will be divided into a several activities and tasks
so that it can be easily handled.
2. Interdependency
Every activity and task that has been compartmentalised must have their
interdependency. Certain task must be made in sequence else it will be in
parallel. Some activities can be done independently while some cannot start
until the other tasks related to it are done.
3. Time allocation
Each task must be assigned the start date and the due date and whether the
task is conducted full time or part time.
4. Effort validation
Each task will be assigned to a certain number of staff. The project leader
needs to make sure how much effort is needed to complete one task. Usually,
more effort is required than there are people to do the work.
5. Defining responsibilities
Each task that has been scheduled must be assigned to staff that have
knowledge in that area.
6. Defining outcomes
Every task must have its defined outcome which is normally a work product
or a part of work product for software projects.
7. Defining milestones
A project milestone needs to be associated with every task or group of tasks.
A milestone is accomplished when the quality of one or more work products
has been reviewed and approved.
Plan-driven development
Plan-driven development is a specific approach to develop a software where the plan
is made in detail. The project plan records the work to be done, who will do it, the
development of schedule and the work products. Plan-driven development can be
equated as the traditional way to manage a large software project. This is different
from agile development where changes and updates need to be made simultaneously
during iteration of development.
According to Sommerville (2010), in implementing plan-driven development, many
early decisions have to be revised. When revising the early decisions, you can detect
the potential problems and dependencies before the project starts. As a result, we
can avoid reworking the project since we can detect the problems earlier.
Project plans
Project plan refers to a formal documentation that is used to manage activities that
will be performed and the description of how the activities will be done. It is also a
document that is expected to be changed from time to time. Project planning is used
to define each major task, estimate the time and resources needed, and monitor the
tasks that have been identified. The plans normally include the following sections
as below:
1. Introduction an overview of your project and the goals that you need to
achieve at the end of the project.
UNIT 5 7
Managing software development
Once the project plan has been established and agreed by the stakeholders, the plan
becomes the baseline of your project. Software development team can measure the
progress of the project against the baseline throughout the life of the project.
[Unfinished]
Identify
Constraint
[Start]
Identify
Risks
<<System>>
Project
Planner
Define Project
Schedule
Identify
Milestones
and
Deliverables
Do the Work
Monitor
Progress
against Plan
[Project
finished]
[End]
[No
problems]
[Serious
problems]
Re-plan
Project
Figure 5.1 shows a typical workflow for a project planning process (Sommerville
2010). You must identify any limitation that can cause the failure of the project.
The risks and constraints that are being defined must be clearly stated as well as
the project milestones and deliverables. Deliverables are work products that will be
delivered to the customer such as the requirement document for the software. With
the project milestones you can estimate the delivery date. More accurate delivery
dates will be established during the scheduling phase.
After that, an estimated schedule for the project will be drawn. List the tasks that
need to be created and carried out for each deliverable. You need to identify the
amount of effort (hours or days) required to carry out the tasks. Once you have
established the amount of effort for each task, you can work out the accurate delivery
date depending on the effort required for each deliverable. You should review the
progress and note any discrepancies from the schedule.
The problems are always there during a project and these can lead to project delays.
Therefore, you need to initiate the risk mitigation actions. Risks can be tracked
using a simple risk log. You need to review the log regularly so that the risks would
not occur. If it happens, it might lead to significant delay. Therefore, you need to
re-plan the project and it may involve renegotiating the project limitations and
deliverables with the customer.
UNIT 5 9
Managing software development
You can also allocate resources over the duration of the project. For example, the
time required specialised hardware, the disk space required on a server and what
the travel budget will be.
Whether you are using plan-driven development or agile development, you still
need to have an initial project scheduling to guide your progress. The details in agile
development will be less than in plan-driven development.
Identify
Tasks
Identify Tasks
Dependencies
Estimate
Resources
for Tasks
Allocate
team to
Task
Create
Project
Charts
According to Sommerville (2010), the activities should normally last at least a week
and no longer than 2 months. The maximum amount of time for any activities should
be around 8 to 10 weeks and if it is going to take longer than that, the activities will
be broken down into smaller parts.
Schedule representation
Schedule can be represented in several formats. A simple table can also represent
a project schedule that contains the tasks, effort, expected duration and task
dependencies. But it will be hard to understand. Therefore, there are other compatible
ways to develop a project schedule. Two types of representations that are commonly
used are:
1. Gantt chart
It is a type of bar chart which illustrates who is responsible for which activity,
the elapsed time, the date of beginning and end of the project. It is named
after the inventor, Henry Gantt. It is suitable for small projects.
There are several tools that can support the development of project schedules such
as Microsoft Project. You just need to input project information into a table and it
will generate the schedule automatically from the information given. The project
activities that you usually need to input are such as:
1. Duration in calendar days or months.
2. An effort estimate which reflects the number of person-days or personmonths to complete the work.
3. A deadline by which the activity should be completed.
4. Defined endpoint. It depicts the tangible result of completing the activity
and it could be in form of document, meeting slide shows or others.
Task
Effort (person-days)
Duration (days)
Dependencies
T1
15
10
T2
15
T3
20
15
T4
10
T5
10
T2, T4 (M3)
T6
10
T1, T2 (M4)
T7
25
20
T1 (M1)
T8
75
25
T4(M2)
T9
10
15
T3, T6 (M5)
T10
20
15
T7, T8 (M6)
T11
10
10
T9 (M7)
T12
20
10
T1 (M1)
T = Tasks M = Milestone
Table 5.1 Task, duration and dependencies
Milestones are often represented as the deliverables while the effort to produce the
deliverable is referred to as task. Major project milestones are sometimes represented
as base success of a task. Therefore, it should be documented by a short report
that tells the work progress that has been made. For example, as seen in Table 5.1,
milestone M1 is associated with task T1 and milestone M3 is associated with tasks
T2 and T4.
UNIT 5 11
Managing software development
The team leader of the software development team needs to allocate resources to the
tasks. A resource is any person, item, tool, or service that is needed by the project.
People may be working on more than one task at the same time. There are also times
their resources when not are used at all. They may be on holiday, working on other
projects, involved with some other activities or attending workshops.
Please be reminded that in a software development team, there may be part-time
workers. Therefore, you may not want to assign many tasks to this person. You also
need to be aware when assigning the part-timer to a group task. This is because it
can cause scheduling problems if this person cannot cope with it. If one project is
delayed, this may affect other projects.
This can affect later tasks that are dependent on earlier tasks which have been delayed.
Delays can cause serious problems with staff allocation especially when there are
people who are working on several tasks at the same time.
Activity 5.1
The table below shows the task durations for software project tasks.
Let us assume that a serious problem occurs during the project and
T9 is affected. Instead of taking 15 days, task T9 needs to take 25
days. Draw new activity bar charts showing how to reorganise the
task.
Task
Duration (days)
Dependencies
T1
10
T2
15
T3
15
T4
10
T5
10
T2, T4
T6
T1, T2
T7
20
T1
T8
25
T4
T9
15
T3, T6
T10
15
T7, T8
T11
10
T9
T12
10
T10
T1
Agile planning
Agile planning is very collaborative in nature where not just the project manager
but the whole team is responsible for planning. When implementing agile planning
in your project, you are using iterative approaches. During this iteration process, all
of the necessary work to turn an idea in to a working product is completed without
dependencies. The end result is that parts of the product are delivered on a regular,
frequent basis.
According to Sommerville (2010), these agile approaches have a two-stage approach
to planning, corresponding to the start-up phase in plan-driven development and
development planning:
1. Release planning it looks ahead by several months and decides on the
features that need to be included in a release of a system.
2. Iteration planning it has a shorter-term outlook and focuses on planning
the next increment of a system. This is typically 2 to 4 weeks of work for
the team.
UNIT 5 13
Managing software development
Let us take extreme programming planning for this discussion. Figure 5.3 shows
the stages in extreme programming planning.
Story
Identification
Initial
Estimation
Release
Planning
Interation
Planning
Task
Planning
As an administrator, I want to
perform user management so that I
can maintain the user database.
The user stories will be broken down into smaller pieces. User stories represent the
work the team must accomplish to meet the requirements of the product.
Initial estimation
The next stage is initial estimation whereby the software development team reads and
discusses the stories. The user stories will be assigned as product backlog as shown
in Figure 5.5. The product backlog is meant to be dynamic with items being added,
removed, and reprioritised. After that, the stories need to be ranked in order of the
amount of time the team think will to be needed implement the story. In this way,
it can allow the customer to select the pieces of a requirement that are more critical
to be implemented first.
Release backlog
Product
backlog
Release backlog
Release backlog
Iteration
backlog
Iteration
backlog
Iteration
backlog
Figure 5.5 Flow of product backlog, release backlog and iteration backlog
Once the ranking had been completed, the team then allocates the story points to
the stories. The higher the level of stories, the more story points gained. It will be
challenging to estimate story points because the team has no reference points. As
the team does more and more estimates, those estimates will improve in accuracy.
Once the stories have been estimated, the story point is translated into the first
estimate of the total effort required by using the notion of velocity. The details of
the estimation technique will be discussed in upcoming units.
Release planning
Release planning involves selecting and refining the stories. It will reflect the features
to be implemented in a release of a system. It also reflects the order in which the
stories should be implemented. The development team must now work closely with
the product owner to ensure that the work that was identified looks appropriate for
the size and duration of the release. A release date will be chosen and the stories will
be reviewed to see if the effort estimate is consistent with that date. The stories will
be added or removed from the list if it is not consistent. Once the iteration starts,
the customer can no longer change the work that was selected for the iteration.
UNIT 5 15
Managing software development
Iterative planning
At the start of the iteration, the customer can reprioritise the release backlog so that
the development team knows the items it needs to work on next. The customer and
development team should take a half-day on the first day of the iteration for the
iteration planning meeting. During this meeting, the team should select as many
high-priority items as it can contain from the release backlog and add these to the
iteration backlog. According to Sommerville (2010), stories to be implemented for
that iteration are chosen, with the number of stories reflecting the time to deliver an
iteration (usually 2 or 3 weeks) and the teams velocity. The iteration is consider led
complete when the iteration delivery date is reached even if there are some stories
that not implemented yet.
Task planning
There is a more detailed planning stage at the start of each iteration where the
developers break the stories down into development tasks. A development task
should take 4 to 16 hours. There are two important benefits from this approach to
task allocation:
1. The whole software development team gets a review of the tasks to be
completed in iteration. Therefore, they have a better understanding of what
other team members are doing.
2. For the individual developer, the person chooses the tasks to implement.
Therefore, the person has a sense of ownership in these tasks and this
motivates them to complete the tasks.
The advantages of this planning are the software is always released as planned and
there is no schedule slippage. The extreme programming philosophy is to reduce
the work rather than extend the schedule if the work cannot be completed. A major
difficulty in agile planning is that it requires customer involvement and availability.
Summary
Project planning breaks the project down into structured activities
that will be carried out by the software development team. Project
planning is created at the beginning of the project. The three stages
to complete it are the proposal stage, the project start-up phase and
throughout the project phase.
Project scheduling depicts the process of organising the work and
how the tasks will be executed on time. The time and effort required
to complete each tasks is estimated. Guidance on building the
project schedule has been specified including compartmentalisation,
interdependencies, time allocation, effort validation, defined
responsibilities, defining outcomes and defining the milestones.
Plan-driven development is organised around a complete
development plan that depicts the project tasks, the planned
effort, the activity schedule and who is responsible for each task.
A project plan sets the resources needed for the project, the tasks
involved and a specific schedule for carrying out the work. The
plan should consist of the introduction of the plan, the project
organisation, risk analysis, hardware and software requirements,
the work breakdown structure, project schedule and monitoring
and reporting mechanisms.
Agile planning is a plan that delivers projects without much detail
on how features will be delivered. It is based only on the priority
of user stories and how much functionality the team can deliver
within a given time. Agile planning works well with small and
stable software development teams that can get to discuss the stories
together for the implementation.
Achieving a successful development project planning depends on the
suitability of the project planning that you choose for your project.
Whether using plan-driven development or agile planning, you need
to understand what you really want to get out from the process.
UNIT 5 17
Managing software development
Self-test 5.1
1. Who is responsible for project planning and scheduling?
A. Project leader
B. Programmers
C. Project Design
D. Managers
Feedback
Activity 5.1
Here is an example of the answer that you can use.
UNIT 5 19
Managing software development
Introduction
Project management can be depicted as a system of procedures, technologies and
practices that produces the planning, organising, staffing, directing and controlling
necessary to make a successful software engineering project. Project management
will be conducted by the project leader of a software development team.
The project leader must know how to lead their team members. In project
management, there are many activities that need to be divided among the team
members so that they can achieve a good quality of software development. This
unit is divided into three parts:
1. Overview of project management
2. Managing people
3. Teamwork
There are many related factors that make for successful for project management
and it may vary from one project to another project. For most project management
the important goals are:
1. Deliver the software to the customer in the time given.
2. The cost is within the budget.
3. Customer satisfaction.
4. Maintain the relationship among the software development team members.
These goals are not only for software engineering project, but also for other
engineering projects. The software management in software engineering is
challenging in its own ways. Sommerville (2010) stated that there are differences
between software management in software engineering and other engineering
projects. The differences are:
1. The software is intangible
A development team of an aircraft project can see the product being built. If
the schedule on slips, then the effect the product is visible. You may see the
unfinished structure of the aircraft. This is totally different from developing
software. Software is intangible. It cannot be seen or touched. The software
development team cannot see the progress of the development by simply
looking at the product. It needs to rely on others to produce that data they
can use to review the work.
UNIT 5 21
Managing software development
It is undeniable that some software projects may encounter budget issues that cause
the software projects to fall behind schedule. It is hard to determine the exact job
description of the software development team. The job may vary depending on the
organisation and types of software that is being developed. Most project managers
take responsibility in the following activities:
1. Proposal writing
Proposal writing is needed because it carries the item of work to win the
contract. It must have the objectives of the project and how it will be carried
out. It also includes the cost and estimated schedule, with justification for
why the project proposal is better than other proposals from competitors.
Proposal writing is a skill that the project manager acquires and you can
also achieve it through practice and experience.
2. Project planning
The project managers or team leaders are responsible for planning, estimating
and scheduling project development and assigning task to people. The project
manager needs to supervise the work to ensure that it is up to standard. The
project manager also needs to monitor the progress so that it can be finished
on time and within the budget given.
3. Reporting
It is necessary to report the progress of a development to customers of the
company. Therefore, the project manager will communicate with them
on matters ranging from detailed technical information to management
summaries. The project manager also needs to be able to write a good project
report and present the information during progress review.
4. Risk management
The project managers have to access the risks that may affect a project,
monitor it and take action when the problem occurs. You may refer to
section 2.4 for further information regarding risk management. Assessing
risk management properly may give us enough time to cope with the
unexpected risks.
5. People management
To manage a team of people, a project manager needs to decide and choose
suitable team members according to their capabilities. A project manager
needs to make sure the relationship between team members is close so that
everybody can communicate well. The project manager needs to motivate
them and listen to their problem if occur. For further details on people
management, you may refer to section 5.2.
Managing people
The greatest properties in software organisation are the people who are involved in
the development. It will involve a lot of cost to recruit and retain a good worker. A
company is successful because people in the company have respect for each other
and take responsibility for any tasks that have been assigned using their skills and
experience.
Good software engineers are not necessarily good project leaders. A good project
leader must have soft skills that can motivate and lead a project development team.
A project manager also needs to be aware of the potential problems of people
management. Sommerville (2010) stated that there are four critical factors in people
management:
1. Consistency
All team members need to be treated equally. True teamwork demands that
all employees are held to the same standards.
2. Respect
Project leader needs to build respect among team members by working
in a team towards the goals. Team building activities can also help team
members learn respect for one another. Leading them through a few teambuilding exercises that show respect for each other can help them see past
their differences towards a common goal.
3. Inclusion
A project leader needs to listen to the team members. If one team member
is left out of the loop, he may feel left out, and that will eventually reduce
the teams effectiveness.
4. Honesty
Project leader must be honest about what is going on in the team. If the team
is not performing properly, the project leader needs to tell them as soon as
possible and discuss together to overcome the problem. Any good or bad news
must be shared so that further action can be figured out together as a team.
UNIT 5 23
Managing software development
A good project leader needs to know how to communicate well with the team
members. The team members need to be motivated to avoid the loss of focus and
interest in the work that they are doing. The well-travelled theory by Maslow (1954)
suggests that people are motivated by satisfying their needs. These needs are arranged
in a series of levels. Figure 5.6 shows the human needs hierarchy. There are five
levels in this hierarchy that contains physiological needs, safety needs, social needs,
esteem needs and self-realisation needs.
Self-realisation
Needs
Esteem Needs
Social Needs
Safety Needs
Physiological Needs
The lower levels of this hierarchy represent fundamental needs for food, sleep and
so on and the need to feel secure in an environment. The social needs are concerned
with the need to belong to part of a social grouping. Esteem needs depict the need
to feel respected by others and the last level on the top is concerned with personal
development. People need to satisfy lower level needs like thirst and hunger before
they satisfy more abstract higher level needs.
From the view point of people management related to software engineering, a project
leader needs to make sure that important levels such as social needs, esteem needs
and self-realisation needs are satisfied. Therefore, the way to apply it is to motivate
the team members at the highest level needs.
1. Social needs
Project leader can get the team together to celebrate after each of the project
milestones is achieved. It will be good to give the team members a break
after struggling to complete each task.
2. Esteem needs
Project leader needs to show the team that they are important and valued.
The effective way to do it is by giving public recognition of achievement
to the team members.
3. Self-realisation needs
Project leaders also need to give team members responsibility for their work
and assign them demanding tasks to satisfy the self-realisation needs. Project
leaders can also provide a training programme where people can develop
their skills.
A person can focus on more than one need. For example, a person may be seeking
promotion because it will lead to a higher salary which is considered a physiological
need. But the promotion can also satisfy esteem and self-actualisation needs.
Applications of the human needs are not static even though the needs are described
as hierarchical.
Teamwork
Most professional software is developed by development teams that range in size
from two to several hundred people. Therefore, it is clear that with a large team, it
is impossible to work together on a single problem. Large teams usually split into
a number of small teams. Each team is responsible for developing a part of the
overall system. Communications problem can be reduced when people work in
smaller groups. The smaller team can get around a table to discuss the project and
the software they are developing.
Successful teams are more than simply a collection of individuals with the right
balance of skills such as the technical skills, experience and personality. Good team
members must have team spirit. Members of a well team remain led remain loyal
to the group. They make an effort to protect the team from outside interference.
Good project leaders should always try to encourage their team members to stick
together. Social events can be organised for group members and their families in
order to establish a sense of belonging to the group by naming the group and creating
identity and territory in activities such as games or sports.
Sometimes the team effectiveness depends on the nature of the development and
the organisation doing the work. It is very difficult for the team members to focus
on software development if the software development team is constantly reorganised
and there is job insecurity. Sommerville (2010) states that there are three generic
factors that affect teamwork:
UNIT 5 25
Managing software development
Getting the right team cannot guarantee that the project can be a success. Too many
other things can go wrong including changes in the business and its environment.
But if the project leader does not take note of group composition, organisation and
communications, it is possible that the project will run into difficulties.
Team organisation
The way that a team is formed affects the decisions made by that team. It also affects
the way information is exchanged and the interaction between the development team
and external project stakeholders. Important organisational questions for project
managers include:
1. Should the project leader be the technical leader of the group?
The technical leader is responsible for the critical technical decisions made
during software development. There may be some project leaders that have
experience to take on this role. But when it involves a large project, it is best
to appoint somebody else that also have experience such as senior engineers
who will take responsible for technical leadership.
2. Who will be involved in making critical technical decisions and how will
these be made?
The project leaders may have a meeting and discuss with team members.
For a larger project, it is best to have a meeting with each team leader rather
than involveing all staff.
4. How can teams integrate people who are not working in the same place?
A large project usually involves a lot of team members. It is common to
include members from different software development teams and also
individual freelancer who work from home. This has to be taken into account
in team decision making.
UNIT 5 27
Managing software development
Software development team may be organised into small teams. Usually, small teams
can handle the project very well since they can make decisions easier than large
teams. However, if a group is composed mostly of inexperienced or incompetent
members, it can be a big problem because it can cause lack of coordination between
team members and possibly eventual project failure.
Team communications
Team members should communicate effectively and efficiently with each other and
with other project stakeholders. Team members must exchange information on
the status of their work, the design decisions that have been made and changes to
previous design decisions. Good communication between team members can help
strengthen the teams relationship. Sommerville (2010) states that the effectiveness
and efficiency of communications is influenced by:
1. Group size
It gets harder for team members to communicate effectively as a team
gets bigger. Communications are often one way when it involves status
differences between team members. Managers and experienced engineers
tend to dominate communications with less experienced staff who may be
reluctant to start a conversation.
2. Group structure
People in teams that are structured informally communicate more effectively
than people in teams that have a hierarchical structure. In hierarchical teams,
communication tends to flow up and down the hierarchy. People who are at
the same level may not talk to each other. This is a problem in a large project
with several development teams. If people working on different subsystems
only communicate through their leaders, then there are high chances of
delays and misunderstandings.
3. Group composition
Marshall and Heslin (1975) state that communication is usually better in
mixed-sex groups than in single-sex groups. It provides the best chemistry
for interaction and achievement of task.
Project leaders may try to use communication channels that do not take too much
time since them working in tight deadlines. They may rely on meetings and formal
documents to pass on information to other team members. But this is not usually
effective. There are often good reasons why people cannot attend meetings and miss
the presentation. Documentation also is not too effective since some members will
not read a long document because they do not know if the documents are relevant.
Good communication is achieved when communication is two-way. This means that
the team can discuss issues and information and establish a common understanding
of proposals and problems. This can be done by holding a meeting. It is sometimes
impractical to arrange meetings at short notice.
To prevent these problems, project leaders may use web technologies such as email,
social network such as Facebook or Twitter, instance messaging and others. It allows
team members to exchange information, irrespective of their location. Therefore,
the team members will have leeway and it can be easily arranged to resolve issues
that need discussion.
Team motivation
Project managers need to motivate their team members to make the project a success.
According to Boehm, motivation has been found to be the number one influence
on peoples performance. To motivate the staff is not as easy as it seems. Giving
monetary rewards and bonuses is not the best way. Instead, you may motivate them
by recognition, achievement, the work itself, responsibility, advancement and the
chance to learn a new skill.
If you insist on giving some kind of reward for motivational purposes, you may try
a pizza or free dinner or even a letter of appreciation or award. Some motivational
donts adapted from Rapid Development by Steve McConnell (1996) that a project
leader needs to avoid are:
1. Do not assign unrealistic deadlines This is because few people will work
hard if they realise that a deadline is impossible to meet and can cause tension
in the group.
2. Do not ignore good effort people will work harder if they feel their work
is appreciated.
3. Do not make an important decision without the teams input project
leader needs to discuss and be involved with the team members when making
decisions that can greatly affect the team members.
UNIT 5 29
Managing software development
By avoiding those listed above, we can ensure that motivation for the project is as
high as possible.
Activity 5.2
Briefly define why a project leader who always update all team
members about progress in a project can improve group relationships.
Summary
Software project management that can develop software within
budget and on schedule is considered essential to a software project.
There are some project activities that need to be handled by a project
leader including project planning, reporting, risk management,
people management and proposal writing.
Software management is not similar to other engineering
management. Software is intangible. The software development may
be innovative so we need to have an experienced leader to guide the
management. Software processes are not as mature as traditional
engineering processes.
The effectiveness in a group brings about good results in developing
software. Communication between team members is important to
avoid any misunderstandings. Communication within a group is
influenced by factors such as the status of group members, the size
of the group, the gender composition of the group, personalities
and available communication channels. Motivation is important to
enhance the working spirit of team members.
Self-test 5.2
1. What is the most important goal for project management?
A. Deliver the software to the customer in the time given
B. The cost is out of budget
C. Deliver the software by denying the customer needs
D. A complicated teamwork
UNIT 5 31
Managing software development
6. A project leader does not have to create a team with the right
balance of technical skills and personalities to make the team
work together effectively.
A. True
B. False
Feedback
Activity 5.2
Here is an example of the answer and ideas that you can use.
The reason that the project leaders need to frequently update all
software development team members about progress in a project
is because:
1. The bigger the group, the harder for the information to get
around the group. Therefore, it is the responsibility of the project
leader to inform other team members.
2. There may be disagreement in decision making. Therefore, the
team members may speak out their opinion even though they
are in the lower level management.
3. When project leaders always update the progress, the team
members will be aware of the schedule and can ensure that the
project is completed within the given time.
UNIT 5 33
Managing software development
Introduction
Project estimation can reduce the problem of cost and effort estimation by putting
it into a set of smaller and manageable problems. A cost estimation model is needed
to solve the problem. Many components are involved and this makes the process of
estimation harder since it is unpredictable. Algorithmic cost modelling can be used
to make estimation for software development projects.
We are using COCOMO II model to support modern software development
process and update project database. This model can support modern approaches
and embeds sub-models that produce detailed estimates. For further investigation,
this unit is divided into four sections:
1. Introduction to project estimation.
2. Algorithmic cost modelling.
3. The COCOMO II model.
4. Project duration and staffing.
In most cases, developing a cost and effort estimate for a software project is too
complex to be considered in one part or piece. For this reason, using project
estimation, we can break the problem down into a set of smaller and manageable
problem. After that, we can form a problem solving using project cost estimation
model.
The objective of project cost estimation is to fully quantify the costs of all aspects
of software development throughout the project life cycle. The process to estimate
the cost is unpredictable and difficult to count since it also involves many variables
such as human, technical, environmental and many more. However, software project
estimation can be transformed from scattered information to a series of systematic
steps that provide estimates with acceptable risk.
Pressman (2006) states that there are a number of options to achieve reliable cost
and effort estimates:
1.
Delay estimation until late in the project (it is obvious that we can gain
100% accurate estimation after the project is complete).
2. Doing software project estimation based on similar projects that have already
been completed.
3. Use relatively simple decomposition technique to generate project cost and
effort estimates.
The first option is attractive but not practical. Cost estimation must be provided at
the beginning of project development. However, we should realise that the more we
know about the project, the less likely we are to make a serious error in estimation.
The second option can work well if your project is similar to a completed project.
Unfortunately, past experience has not always been a good indicator of future
results. For option three, it is a practical approach to software project estimation.
The techniques and models will be explained later in this chapter.
UNIT 5 35
Managing software development
The number of lines of source code (SLOC) in the delivered system is the fundamental
size metric that is used in many algorithmic cost models. Size estimation may involve
certain kinds of estimation such as:
1. Estimation by comparison with other projects.
2. Estimation by converting function or application points to code size.
3. Estimation by ranking the sizes of the system components.
4. Using a known reference component to estimate the component size or it
may simply be a question of engineering judgement.
Most models have exponential components (B in the above formula) that are related
to the size and complexity of the system. This reflects the fact that costs do not
usually increase linearly with project size. Extra cost will be required as the size and
complexity of the software increases. This is because of the communication overhead
of larger teams, more difficult system integration and so on. Therefore, the value
B increases with the size and complexity of the system. According to Sommerville
(2010), all algorithmic models have similar process:
1. It is often difficult to estimate Size at an early stage in a project, when only
the specification is available.
2. The estimates of the factors contributing to B and M are subjective. Estimates
vary from one person to another, depending on their background and
experience of the type of software project.
At an early stage, accurate code size estimation is difficult to achieve. This is because
the size of the final program depends on design decisions that may not have been
made when the estimate is required. You may not know how much data management
code will be included in the system.
The same goes with programming language where some languages use more lines
that others. For example, Java might use more lines of code than if C was used.
However, validation costs are likely to be reduced since the extra code allows more
compile time checking. If it is possible to reuse code from previous projects, then
the size estimation has to be adjusted to take this into account.
Even though the algorithmic cost model is a systematic way to estimate effort, it is
complex and difficult to use. Many considerable scopes and attributes for uncertainty
need to be taken into account. This discourages potential users, therefore the practical
application of algorithmic cost modelling has been limited to a small number of
companies. The other difficulty is the need for calibration. Model users need to
calibrate their model and attribute values using their own historical project data as
this reflects their experience and practice.
When using algorithmic cost estimation model, you must develop a range of estimates
for worst, expected and best levels. You must also apply the costing formula to all
of the levels. When you understand the type of software that is being developed,
the estimation is most likely to be accurate. This is because you have calibrated the
costing model using local data and programming language and hardware choices
have been predefined.
UNIT 5 37
Managing software development
Different parts of the system may be developed using different technologies in large
systems. You may not be able to estimate all parts of the system accurately. Therefore,
you may use the suitable sub-model for each part of the system and integrate the
results to create a composite estimate.
Some of the application points in the project will be implemented using reusable
components. Therefore, you need to adjust the estimate to make sure the percentage
of reuse expected. The final formula for effort computation for system prototypes is:
PM = [NAP (1 %reuse / 100] / PROD
1. Assess application count: Estimate the number of screen, reports and 3GL
(third Generation Language) components that will comprise this application.
Total < 8
(2 3 client
3 5 server)
Total 8+
(>3 client
>5 server)
<3
Simple
Simple
Medium
3 7
Simple
Medium
Difficult
>8
Medium
Difficult
Difficult
Number of
view contained
Total < 8
(2 3 client
3 5 server)
Total 8+
(>3 client
>5 server)
0 or 1
Simple
Simple
Medium
2 or 3
Simple
Medium
Difficult
4+
Medium
Difficult
Difficult
3. Assign complexity weight for each application: The weights are used for
three application types. For example, screen, report and 3GL components
using Table 5.4.
Application Type
Medium
Difficult
Screen
Report
3GL Component
10
UNIT 5 39
Managing software development
(application point)*(100%reuse)
100
NAPs are the application points that will need to be developed and they
may differ from the application point count because they may be reused.
Very
low
Low
Normal
High
Very
High
13
25
50
7. Compute the effort in person per month: When PROD is known, you can
estimate effort person per month as:
PM =
NAP
PROD
Activity 5.3
Consider a database application project with the following
characteristics:
1. The application has five screens and five views each and seven
data tables for three servers and four clients.
2. The application may generate two reports of three sections each
from seven data tables for two servers and three clients. There
is 20% reuse of application points.
= Boehm proposed that the coefficient A should be 2.94 based on his own large
data set.
Size = The size of the system is shown in KSLOC which means the number of
thousands of lines of source code. You will calculate KSLOC by estimating the
number of function points in the software. After that, use standard tables
that relate software size to function points for different programming
languages to compute a preliminary estimate of the system size in KSLOC.
Below are several steps to find the size.
UNIT 5 41
Managing software development
Weighting Factors
Low
Average
High
10
15
10
Total
Low
Medium
High
Inputs
_x3
_x 4
_x 6
Outputs
_x4
_x 5
_x 7
Queries
_x3
_x4
_x 6
Files
_x7
_x 10
_x 15
Program Interfaces
_x5
_x 7
_x 10
2. After the TUFP has been defined, you need to calculate the adjustment
factor which is determined by considering 14 aspects of processing complexity
as shown in Table 5.8.
Number of factors considered
1
Is performance critical?
Does the online data entry require the input transaction to be built
over multiple screens or operations?
10
11
12
13
14
No
influence
Incidental
Moderate
Average
Significant
Essential
3. Now you can calculate the function point after TUFP and CAF have been
defined. The calculation is
FP = CAF TUFP
4. Once you have obtained the value of FP, you need to convert the number of
function points into the lines of code that will be required to build the system.
The number of codes depends on the programming languages you choose
to use. Table 5.9 represents a very rough conversion guide for some popular
languages. The table is taken from Caper Jones, Software Productivity
Research.
UNIT 5 43
Managing software development
Language
130
COBOL
110
JAVA
55
C++
50
Visual Basic
30
HTML
15
10 40
For example, a system consists of 224 function points. If you were to develop
the system in COBOL, it would typically require
Size = FP LOC per function point
= 224 110
= 24640
It will require 24,640 lines of codes for programmers to write it. As you
can see, the choice of development language has a significant impact on the
time and cost of projects.
B = The exponent B shows the increased effort required as the size of the
project increases. If B < 1, the rate of increase of effort decreases as the size
of the product increases. If B > 1.0, the rate of increase of effort increases as
the size of the product increases. The value B is computed on the basis of
scaling factors that may cause a drop in productivity with an increase in size.
Scale Factor
Explanation
Precedentedness
Development
flexibility
Architecture/risk
resolution
Team cohesion
Process maturity
Scaling factors
Very
low
Low
Nominal
High
Very
high
Extra
high
Precedentedness
6.20
4.96
3.72
2.48
1.24
0.00
Development
flexibility
5.07
4.05
3.04
2.03
1.01
0.00
Architecture/
risk resolution
7.07
5.65
4.24
2.83
1.41
0.00
Team cohesion
5.48
4.38
3.29
2.19
1.10
0.00
Process Maturity
7.80
6.24
4.68
3.12
1.56
0.00
According to Boehm, when all the scaling factors of a project are rated as
extra high, the best value of B is obtained and is equal to 0.91. When all the
scaling factors are very low, the worst value of B is obtained and is equal to
1.23. Therefore, the value of B may vary from 0.91 to 1.23.
UNIT 5 45
Managing software development
Rating
Extra
Low
Very
Low
Low
Nominal High
0.73
0.81
0.98
1.00
Very
High
Extra
High
1.30
1.74
2.38
RCPX
Product
reliability and
complexity
RUSE
Reuse
required
0.95
1.00
1.07
1.15
1.24
PDIF
Platform
difficulties
0.87
1.00
1.29
1.81
2.61
PERS
Personal
capabilities
2.12
1.62
1.26
1.00
0.83
0.63
0.5
PREX
Personal
experience
1.59
1.33
1.12
1.00
0.87
0.71
0.62
FCIL
Support
facilities
1.43
1.30
1.10
1.00
0.87
0.73
0.62
SCED
Schedule
1.43
1.14
1.00
1.00
1.00
Activity 5.4
A software project of application generator category has to be
developed. Given that the functional units (UFP) for size of the
system are:
1. External Input (EI) = Low (2), Medium (3), High (1)
2. External Output (EO) = Low (4), Medium (4), High (2)
3. External Inquires (EQ) = Low (2), Medium (1), High (1)
4. Internal Logical Files(ILF) = Low (3), Medium (4), High (2)
5. External Interface Files (EIF) = Low (1), Medium (2), High (1)
To generate this code, the reuse model includes a formula to estimate the effort
required:
PM= (ASLOC AT / 100) / ATPROD
ASLOC = total number of lines of reused code including the code that is autogenerated
AT = the percentage of reused code that is automatically generated
ATPROD = the productivity of engineers in integrating the code
PM = effort estimate in person-months
UNIT 5 47
Managing software development
Boehm et al. (2000) has measured ATPROD to be about 2,400 source statements
per month. Therefore, if there are a total of 20,000 lines of reused source code in
a system and 30% of this is automatically generated, then the effort required to
integrate the generated code is:
(20,000 30/100) / 2,400 = 2.5 person-months
The difference between early design and post-architectural formulas is the cost
driver for finding the value M. In early design, only 7 cost drivers were identified.
The post-architectural model has 17 cost drivers mapped from the early design cost
drivers. This mapping is essential because many parameters were not known correctly
in the early design phase. Below are the cost drivers of post- architectural model
with the rating taken from Software Quality Management, Dumke and Guericke
(University Magdeburg).
Cost
Driver
Meaning
RELY
Reliability Required
DATA
Database Size
CPLX
Product Complexity
RUSE
Required
Reusability
DOCU
Documentation
TIME
Ratings
Very
Low
Low
Nominal
High
Very
High
0.75
0.88
1.00
1.15
1.39
0.93
1.00
1.09
1.19
0.88
1.00
1.15
1.0
1.66
0.91
1.00
1.14
1.29
1.49
0.95
1.00
1.06
1.13
Execution Time
Constraint
1.00
1.11
1.31
1.67
STOR
Main Storage
Constraint
1.00
1.06
1.21
1.57
PVOL
Platform Volatility
0.87
1.00
1.15
1.30
ACAP
Analyst Capability
1.50
1.22
1.00
0.83
0.67
PCAP
Programmers
Capability
1.37
1.16
1.00
0.87
0.74
PCON
Personnel
Continuity
1.24
1.10
1.00
0.92
0.84
AEXP
Analyst Experience
1.22
1.10
1.00
0.89
0.81
PEXP
Programmer
Experience
1.25
1.12
1.00
0.88
0.81
LTEX
1.22
1.10
1.00
0.91
0.84
TOOL
Use of Software
Tools
1.24
1.12
1.00
0.86
0.72
SITE
1.25
1.10
1.00
0.92
0.84
SCED
Schedule
1.29
1.10
1.00
1.00
1.00
0.75
0.89
Extra
High
0.78
At this stage, you would be able to make a more accurate estimate of the project size.
Hence, the calculation of PM is a better and fine-tuned value using very specific
cost drivers.
UNIT 5 49
Managing software development
TDEV = the nominal schedule for the project, in calendar months, ignoring any
multiplier that is related to project schedule.
PM = the effort computed by the COCOMO model
B = the complexity-related component
For example, if B = 1.17 and PM = 60, then
TDEV = 3 x (60) 0.36 = 13 months
The schedule required in project planning and the one that has been predicted by the
COCOMO model are not necessarily the same thing. There may be a requirement
that needs to be delivered earlier, therefore this increases the effort required for the
project. This is counted in SCED multiplier in the effort estimation computation.
Let us say that the project estimated TDEV is 13 months such as the above. But
the actual schedule is 11 months. Therefore, the schedule is compressed into
approximately 25%. Using the values for SCED multiplier as derived by Boehms
team, the effort multiplier for such a schedule compression is 1.43. Therefore,
according to the actual schedule, the actual effort required is almost 50% more than
the effort required in acceleration schedule.
Complex relationships arise between the number of people working on the
development, the effort spent and the project delivery schedule. If four people
can complete a project in 13 months which is equivalent to 52 person-months of
effort, then you may add one more person so that you can complete the work in
11 months which is considered as 55 person-months of effort. But the COCOMO
model suggests that you need six people to finish the work in 11 months which is
equivalent to 66 person-months of effort.
You cannot simply estimate the number of people needed in a development team by
dividing it with the total effort. Typically, a small group of people are required at the
start of the project to carry out the initial design. The development team then builds
up to a peak during the development and testing of the system and then declines
in size as the system is prepared for deployment. Project leaders must avoid adding
too many staff to a project early in its lifetime so that it can maintain the expected
level as in project schedule.
Summary
From this section, you have learnt that project cost estimation is
used to fully quantify the costs of all aspects of software development
throughout the project life cycle. Many considerable scope and
attributes for uncertainty need to be taken into account when
applying project estimation to your project. In this section, there
are a number of options available to achieve reliable cost and effort
estimates.
Two kinds of estimation techniques for project estimation have
been introduced. First is the algorithmic cost model. This model
is based on estimates of the project size, the type of software being
developed and other factors. Second is the COCOMO II costing
model which is a mature algorithmic cost model that takes project,
product, hardware and personnel attributes into account when
formulating a cost estimate.
Using COCOMO II formula, you can calculate the estimation for
project duration and staffing. It estimates how long the software will
take to develop and when staff will be needed to work. For staffing, a
small group of people are required to carry out the early design at the
beginning of development. During development, more staff would
be needed. Using estimation technique, the project leader can know
how to estimate when staff is needed the most. For maintaining the
level in project schedule, the project leader must avoid adding too
many staff to the development unless its really necessary.
UNIT 5 51
Managing software development
Self-test 5.3
1. When is the best time to provide cost estimation?
A.
B.
C.
D.
Feedback
Activity 5.3
The project comes under the category of application composition
estimation model.
Number of screens = 5 with 5 views each
Number of reports = 2 with 3 sections each
From Table 5.3, we know that each screen and report will be of
medium complexity.
Using Table 5.4 of complexity weights, we may calculate application
point count = 5 2 + 3 5 = 25
NAP =
25 * (100 20)
= 20
100
seven. Therefore:
PM =
NAP
PROD
PM =
20
= 2.857 PM
7
UNIT 5 53
Managing software development
Activity 5.4
For calculation of size,
1. Define UFP
Description
Total
Number
Complexity
Total
Low
Medium
High
Inputs
2x3
3x4
1x6
24
Outputs
10
4x4
4x 5
2x 7
50
Queries
2x3
1x4
1x 6
16
Files
3x7
4 x 10
2 x 15
91
Program
Interfaces
1x5
2x7
1 x 10
29
210
2. Define CAF
No
Rating
Is performance critical?
10
11
12
13
14
Scale
Precedentedness
4.96
Development Flexibility
2.03
Architecture/Risk Resolution
4.24
Team Cohesion
4.38
Process Maturity
4.68
Total
20.29
UNIT 5 55
Managing software development
Introduction
The activities during the design, analysis, specification, maintenance and evaluation
phases of software development have a significant real-world impact. Software
engineers must pledge to make software engineering a beneficial and respected
profession to ensure that those efforts will be used for the general good. Software
engineers also need to apply an ethical approach to their professional practice.
In this section, you will learn how software engineers gain the ability to make
appropriate decisions based on ethical codes and principles. This section has been
divided into three parts:
1. Understanding professional and ethical responsibilities.
2. Issues of professional responsibilities.
3. Code of Ethics.
ethical principles. But these principles can be applied differently. Based on these
principles, they can come out with ideas and seek something that is acceptable
among them.
According to Software Engineering Code of Ethics and Professional Practice,
engineers have to abide by the Eight Ethics Principles. The principles include the
discussion about the software engineers action that has to be in the best interest of
the public. They need to work in a manner that is good for client and employer.
They need to build software which meets the highest professional standards possible.
They must maintain integrity and independence in professional determinations.
Project leaders also need to promise and support an ethical manner when creating
and maintaining software.
Responsibility and accountability are two important elements that are of concern
to software engineers who are involved in:
1. The development of the projects.
This includes analysing, designing, implementing, testing and support. The
software development team must be responsible for the software development
process. They must ensure that the software is fit for use by others. Fitness
for use is not restricted to functionality but must also give due regard to
security, usability, reliability and privacy concerns.
UNIT 5 57
Managing software development
The software development team should have a list of responsibilities so that it can be
used as a guide to develop software that is safety-critical. This list is also suitable for
those software engineers that require ready-made software for their field of practice.
This list may also be used by those who want to provide the specification for the
software to be developed for them and who would benefit from knowing what to
request from their potential customers. Software development teams involved in
developing software should:
1. Explain the purpose of the software, the methodologies and requirements
as well as the constraint of the software system in the form of a document.
2. Reveal the scope of testing in terms of its functionality and the extent to
which internal testing has provided confirmation of suitability to purpose.
3. Produce a realistic data by making the end users test the reliability, functions,
features and performance of the software for themselves.
4. Supply statements which are considered applicable standards in the software
system.
5. Prepare clear and understandable documentation and procedures for end
users and it must highlight any limitations, risks on the use of the software.
6. Review and directly reveal to the users any constraints of the software and
identify any backup or checking procedures to verify proper operations of
the software.
7. Produce an agreement or timely releases to software users for important bug
fixes or any corrections that may affect the performance of the software.
8. Provide sufficient documentation to allow the client to perform maintenance.
9. Produce a schedule for the users of the software regarding the continuing
educational and training services.
10. Conduct their programming activities according to software industry
standards and guidelines.
11. Ensure there is appropriate action taken by the proper authorities in any
instance where they believe that public safety or the environment is
endangered.
12. Provide a necessary safeguard against software failure such as increasing the
depth of software engineer fundamentals.
The software development teams and customers are free to negotiate the scope of
work through their contractual agreement. The purpose of this list is to emphasise
that there are many duties that the software development team should be prepared
to undertake.
Code of ethics
In setting ethical standards, professional societies and institutions play an important
role. According to Sommerville (2010), there are organisations such as the ACM
(Association for Computing Machinery), the IEEE (Institute of Electrical and
Electronic Engineers) and the British Computer Society which publish a code of
professional conduct or code of ethics. Members of this organisation undertake to
follow that code when they sign up for membership. These codes of conduct are
generally concerned with fundamental ethical behaviour.
Professional associations, notably the ACM and the IEEE have cooperated to produce
a joint code of ethics and professional practice. This code exists in both a short form
such as in Table 5.14, and a longer form (Gotterbarn 1999) that adds detail and
substance to the shorter version.
UNIT 5 59
Managing software development
You will face ethical dilemma when different people have different views and
objectives. For example, how you should react when you disagree, in principle and
with the policies of senior management in the company? This will depend on the
nature of agreements and the individuals. Is it best to argue a case for your position
from within the organisation or to resign in principle? It may be too late to resolve
the problem if a solution is not provided in time. A particularly hard situation for
software engineers arises when the employer acts in an unethical way. You need to
try to resolve the situation to fulfil your social responsibility while respecting the
rights of your employers.
Summary
The software development team needs to commit themselves to
making software beneficial to ensure that those efforts will be for
the general good. They need to be concerned about the safety and
security requirements, human and personal rights and be aware
of and follow the laws and standards. There are areas that are not
tied by laws but by meant for general understanding that includes
confidentiality, competence and intellectual property right and
computer misuse.
The software development team should have a list of responsibilities
so that it can be used as a guide. It may also be used by those who
want to provide the specification for the software to be developed
for them. Code of ethics expresses the majority of opinion about
the profession on ethical issues. It also means educating the general
public about the ethical norms and values of the profession. There
are eight principles which include public, client and employer,
product, judgement, management, profession, colleagues and self.
UNIT 5 61
Managing software development
Self-test 5.4
1. What can we do to achieve better decision?
A. Develop an ethical guideline
B. Defend our opinion
C. Stick to one opinion
D. Take decision from higher level only
UNIT 5 63
Managing software development
Summary of Unit 5
Summary
Software development team will present a project plan that provides
structured activities on how the work will be done. The process of
organising the work can be represented on project scheduling where
it shows how the tasks need to be executed on time. A project plan
sets the resources needed for the project, the tasks involved and a
specific schedule for carrying out the work. Bar chart and activity
diagram are commonly used for schedule representation. Project
scheduling involves the creation of graphical representations for
the different parts of project planning.
The team members in software development should be connected
to each others. Team members must be able to communicate clearly
their feelings, express plans and goals, share ideas and opinions. The
key factor to achieving good results in developing the product is
when the team manages themselves properly.
In project cost estimation, the project leaders need to fully quantify
the costs of all aspects of software development throughout the
project life cycle. Estimation techniques for software may be
experience-based where managers judge the effort required or
algorithmic where the effort required is computed from other
estimated project parameters.
Firm commitment is needed from the software development team
to ensure that those efforts will be for the general good. Software
engineers need to have guidance on their responsibilities so that there
will be positive effect on their profession. Therefore, the eight ethics
principles have been developed by ACM and IEEE which include
public, client and employer, product, judgement, management,
profession, colleagues, and self.
Overall, using a project plan that has the right scheduling is one of
the factors that can make a successful project. With a project plan,
the project leader can produce a cost and effort estimate. Teamwork
is also an important factor in assessing a project. With good
teamwork, it will be easy to make the team comply with the eight
ethics principles which are a guide on responsibilities in their job.
UNIT 5 65
Managing software development
Course Summary
Summary
This course is meant to help you develop an understanding of
software development models. After completing this course, you
should have a good understanding of what software development
models are as explained in Unit 1. You have also learnt about
software process management i.e., process modelling, design
architecture, quality of software and managing risk in Unit 2.
Besides that, Unit 3 dealt with analysis techniques by looking at
problem analysing and solution synthesis as well as requirement
and specification analysis. It also involves some activities using use
cases and objects.
In Unit 4, you have learnt about System Development Life Cycle
(SDLC), Object-oriented Analysis and Design (OOAD), Agile
Distributed Development Model (ADDM), Component-based
Software Engineering (CBSE) and other models. Unit 5 covered
software development management. It dealt with planning and
scheduling, project management, understanding the software life
cycle and the methodologies, and finally the professional and ethical
responsibility in software development. You should be able to apply
the knowledge that you have learnt throughout this course to be an
effective software engineer.
UNIT 5 67
Managing software development
Self-test 5.2
1. A
2. B
3. D
4. C
5. D
6. B
7. B
Self-test 5.3
1. A
2. B
3. D
4. C
5. B
6. A
7. B
Self-test 5.4
1. A
2. B
3. D
4. C
5. D
6. A
UNIT 5 69
Managing software development
References
Boehm, B et al. (2000) Software Cost Estimation with Cocomo II, Boston: AddisonWesley.
Gotterbarn (1999) Not all codes are created equal: The software engineering code
of ethics, a success story. Journal of Business Ethics 22 (1):81 89
Marshall and Heslin (1975) Sexual composition and the effect of density and group
size on cohesiveness, Journal of Personality and Social Psychology PSP , vol. 31:
5, 952 961.
Maslow, A (1954) Motivation and Personality, NY: Harper.
McConnell, S (1996) Rapid Development, WA: Microsoft Press, Redmond, WA.
Pressman R S (2001) Software Engineering: A Practitioners Approach, 5th edn, USA:
Pearson.
Sommerville, I (2010) Software Engineering, 9th edn, USA: Pearson.
UNIT 5 71
Managing software development
Glossary
Compartmentalisation
Discrepancies
Difference, inconsistency.
Empirical model
Interdependency
Milestone
one-shot project
Proposal writing
Social events
Velocity