Cpen70 Module Unit I
Cpen70 Module Unit I
Although the field of software engineering has gone a long way since its
early conception a few decades ago, much of the mistakes and errors in
software development and management that were committed before are
being repeated today. This is because most of the efforts are done using
trial and error. These so-called mistakes have caused millions of dollars in
loss. There is a need for formal methods and procedures for software
development. Together with this, we also need a wider effort to educate
professionals involved in software development and management.
Aside from monetary constraints, the engineer has to work with the time
element as well. Depending on the agreed upon time of completion between
the team and the client, the team will have to work within the specified
time. A schedule of activities will be useful to help the team meet the
deadline.
A civil engineer does not work alone, and the same is true for a software
engineer. Civil engineers have to work with the owners of the building,
the architects, the carpenters, and others. They will have to coordinate
also with the government engineers, so they can be sure that they comply
with existing government rules and regulations, both locally and
nationally. Likewise, the software engineer will have to work with the
head of the company or the client, other software engineers, computer
programmers, accountants and others. If he has to oversee the work, he
UP Open University
Unit I Module 1 5
What are the resources that the software engineer has to work with? Like
the civil engineer, drafting papers and pencils are needed in the design
phase, and construction materials like cement, sand, wood and others are
necessary in the construction stage. The success of the building construction
also depends on the resources used. The quality of work and the time it
will be completed will depend on the kinds of both the materials and tools
used. For instance, are they going to use high-powered saws? Will these
saws be available? Are the carpenters trained to use them? In the same
way, software tools called Computer-Aided Software Engineering tools (CASE
tools) are some of the existing tools available to aid in the development of
software systems.
Now, I’ve given you an overview of what software engineering is. You
can surely answer the Self-Assessment Question (SAQ) below. Why don’t
you try it now?
SAQ 1-1
Define software engineering in your own words. Try using not
more than 25 words. Write your answer on the space provided
below.
UP Open University
6 CMSC I Software Engineering
By the way, after you’ve answered the SAQs, you may take a look at the
Answer to Self-Assessment Questions (ASAQ) at the end of each module
so that you can check if your answer is correct or not. Remember to try
first to answer the SAQs yourself before looking at the answers.
What I will do here is just give you an overview of these stages. But don’t
worry coz in the succeeding modules, I will go into the details of each of
these stages.
UP Open University
Unit I Module 1 7
The next phase is the analysis phase. Now, we will explain this by using
our previous illustration. Have you ever thought of building a house of
your own? At the beginning, you may have some ideas, made a few
architectural and interior design choices in your mind, and may have
discussed some of these thoughts with your husband or wife. The next
step for you to take is to communicate these initial ideas with your engineer
and architect before they can actually start working on the project.
Similarly, during analysis, the client will identify the requirements of the
system to the developer; this is why this stage is also commonly known as
the requirement analysis phase.
Once the design has been detailed, the next stage is the actual building of
the software which is called implementation. Implementation is the coding
of the software system and constitutes only one stage of the whole
development process. There is a misconception that most of the work in
software development is on the implementation phase. More of these will
be discussed in the next section.
UP Open University
8 CMSC I Software Engineering
SAQ 1-2
Identify the main phases in the software lifecycle and briefly
describe each of them. (Freely use the space provided below.)
UP Open University
Unit I Module 1 9
As a software engineer then, how would you determine the steps in the
development of your own software assignment? You can use one of several
existing software lifecycle paradigms (also called software lifecycle models) to
guide your development. These paradigms serve as models, maps and
guides for the effective development of good quality software. Your choice
of a model will largely depend on the nature of your project and its
appropriateness to the models available.
There are several software lifecycle paradigms that you may find in the
literature. The most common of these is the phased paradigm. This paradigm
is called phased since the stages are distinct from each other; one is
performed after the other. It is also called the waterfall paradigm since it
resembles the series of waterfalls on a river, after one stage is completed,
the next one is started. The phased paradigm follows the main phases
mentioned in the previous section consecutively, one after the other. It
clearly follows the planning, analysis, design, implementation, testing and
verification, and maintenance sequence.
Note that the phased paradigm is a simplistic view of an ideal world. The
reality is known in software development that each phase in the lifecycle
cannot be (at least, at the present time) accomplished clearly and
completely. For example, only a preliminary plan can be devised at the
onset of the project and possibly after analysis, a more detailed plan can
be made. Consequently, during implementation, the client may change or
fine tune some of the requirements of the system, and therefore, the
developer would have to redo some planning, analysis and design. These
events are common in software development; that is why other lifecycle
paradigms are presented in literature. The development of such paradigms
is still a challenging area of research in the field of software engineering.
Note: Use extra sheets if the spaces provided after each activity are not
enough.
UP Open University
10 CMSC I Software Engineering
Activity 1-1
Now, you will have to look for some books on software engineering
and do some research work. Try finding the books listed in the
references at the end of this module. I’m sure you can find them in
any local bookstore and in the library.
UP Open University
Unit I Module 1 11
Activity 1-2
For this activity, you need to talk to three people who have been
members of a software development team. If you have been in
such a team, you may include yourself. Ask them to identify the
software lifecycle paradigm that they used for their project
development, and give some major reasons why they used this
paradigm.
UP Open University
12 CMSC I Software Engineering
Most programmers, like you and me, often associate software development
to sitting in front of a computer and coding a program for a particular
problem at hand. We don’t really feel that we are getting the job done
until we start programming. Much of software development is not
associated with programming alone. The truth is the sooner we begin
writing code, the longer it will take to finish the task. Software
development is not only writing code, it is only one aspect of the whole
process of software engineering. In fact, studies have shown that coding
is only about 10% of the development process.
There are other misconceptions. Can you name and discuss some of these
misconceptions that need to be corrected so we can be more effective in
delivering good quality cost-efficient software?
Well, this does not seem to be a lucky day for the employees of Company
A. They’ve been trying to call Software House Z but all the software
engineers are not available at this time. The manager of Company A is
already frantic. What’s going on? The service section of the company has
a long queue of clients outside. It’s one of those days. The software system
that Software House Z developed for Company A has crashed once again.
UP Open University
Unit I Module 1 13
You may be wondering of the loss this company had during this time.
Errors in software systems can cause real problems for the user. Consider
applications that involve millions of dollars like the rocket carrying Mariner
I. An $18 to $20 million loss was estimated when this rocket had to be
destroyed on July 22, 1962 two hundred ninety seconds after it was launch
because of an error in the computer program.
Now, it is often the case that the members of the maintenance team are
not the same people in the developing team. How can this new set of
people maintain a software system that they are not familiar with in the
first place, since they were not the ones involved in its development? The
maintenance team will rely heavily on the documentation done by the
developing team of the software concerned to carry out maintenance of
the software. Software maintenance will be a nearly impossible task if
good documentation of the software is not available. Did the developing
team provide a precise and detailed documentation of the various stages
of the development of the software? Are the code properly documented
as well? This explains why careful documentation is extremely necessary
during software development. There are cases when it is better to build a
new software rather than try to fix an old one with no documentation.
Let us find out how much time and resources are used for software
maintenance in the past few decades. Studies show that a large portion of
the cost of existing software is on the maintenance of these software, in
contrast to software development. Surveys show that software systems
are usually developed within 1 to 3 years, while software use (and eventual
maintenance) spans from 5 to 15 years (Fairley, 1985). This means that a
shorter span of time is devoted to the development of the software
compared with the time to maintain it, with a ratio of 40/60, 30/70 or as
high as 10/90.
UP Open University
14 CMSC I Software Engineering
SAQ 1-3
Explain how software development affects the software’s use and
maintenance. In this regard, how does it determine the overall
cost of a software system? You may write your answer on the
space provided below.
UP Open University
Unit I Module 1 15
References
Here is a list of possible books that you can read for further research and
more details. The set of books can be used for the whole course.
UP Open University
Module 2
Project Planning
Communication techniques
Where do we begin the planning of the software project? We start the
project by finding out from the client about the system that he wishes to
computerize. If the client wants to computerize an existing manual system
or parts of it, then we investigate how the existing system works. We put
in writing a description of the existing system, the problems being
encountered and the environment domain. Based on these, we establish
the scope of the desired software system, and state objectives of the project.
We develop a definitive statement using the client’s terminology of the
system.
I don’t know if you understand what I think I said when you said what
I thought you said.
UP Open University
Unit I Module 2 19
It is important to know your goal, so that you can work together with
your team towards achieving your goal. Most software teams do not
achieve anything efficiently, simply because the goals are not explicitly
stated at the beginning of the development process. We need to set goals.
A solution strategy
After defining the problem, you propose a computerized system and justify
a computerized solution strategy for the problem. Ask questions such as:
Is it cost-effective, and socially and politically acceptable? Does it provide
the same or more services and information as in the old system using less
time and personnel?
Now, using the suggested solution strategy, identify the necessary resources
to build the software. There are three main resources, namely: hardware,
software and personnel. Identify four characteristics of each resource: a)
description of resource; b) statement of availability; c) chronological time
that the resource will be required; and d) duration of time that the resource
will be applied. These resources are to be used within money and time
constraints. Detailed identification of these resources and their estimated
amount necessary for the completion of the project will help you to
reasonably and accurately estimate the cost of the project and schedule a
workable timetable for the completion of the project.
UP Open University
20 CMSC I Software Engineering
“For which of you, intending to build a tower, does not sit down first
and count the cost, whether he has enough to finish it—lest, after he
has laid the foundation, and is not able to finish it, all who see it begin
to mock him, saying, ‘This man began to build and was not able to
finish.” (Luke, Chapter 14, verses 28 and 29)
So, before we build the software system, we must count the cost, perform
an estimate of all resources involved before even starting to build it. We
must plan and learn that our software system can be accomplished when
we sit down, and carefully and systematically plan and execute every
stage of the development.
Estimation techniques
We need to employ estimation techniques to be able to estimate the needed
resources for the development of the software system. In mathematics,
you solve the unknown variable based on the known. During planning,
you only have a description of the software to be produced and you want
to know the resources needed to develop this software.
You will notice several problem areas here. One is that the two main
constraints, the cost and time frame, are quantitative in nature. You want
to measure this in terms of the software to be produced, which is
qualitative. We need ways to “quantify” software. We are now faced with
the dilemma of estimating a qualitative data using quantitative means.
This is discussed in the next section on Software Metrics.
Some aspects of the quantitative constraints, cost and time, are also
qualitative in nature. For instance, the estimated cost can be computed by
adding together the costs of all the inputs. This may not be as
straightforward as it looks. As an example, the number of programming
hours necessary to achieve the desired software is identified, and then the
number of programmers needed and the corresponding salaries of each
programmer. The estimated cost to be incurred to pay the programmers is
computed. But how do you measure the competency of each programmer
to ensure that the number of programmers is adequate to develop the
desired software on time? Yet again, this is an issue of “quantifying”
qualitative data.
UP Open University
Unit I Module 2 21
Software management
A major component of software development is the management of the
whole process. During planning, estimates of resources to be used are
identified. As you proceed in the development process, close monitoring
of actual resources being used as against the estimates is essential.
Correspondingly, you adjust your estimates and schedule accordingly,
and check whether you are still working within your constraints.
The paper and pen cannot forget, but the mind can.
It is, therefore, essential that all these preliminary planning are written
and organized. They are then collected into one document to be called the
system definition document. The client and the development team agree
with this document which becomes the legal document between the two
parties. After this, you are now ready to embark on the software project
development.
UP Open University
22 CMSC I Software Engineering
SAQ 2-1
Identify the various components of software planning as discussed
in the previous section. Can you tell me other components not
mentioned here?
Software Metrics
Planning the development of a software project entails trying to measure
computer software. How are we going to do this? We will be using what
is commonly called software metrics.
UP Open University
Unit I Module 2 23
Size-oriented metrics
Size-oriented metrics provide direct measures about a software. It includes
quantitative data about the software such as:
1. lines of code (LOC) or its variants (thousand lines of code, KLOC, etc.)
2. number of programmer-months of effort (PM)
3. cost in pesos (C)
4. pages of documentation
5. number of errors
Other software attributes can be computed from the data above as follows:
1. productivity = KLOC/PM
2. quality = number of errors/KLOC
3. cost = cost in pesos/KLOC
4. documentation = pages of documentation/KLOC
Function-oriented metrics
Function-oriented metrics are used to collect indirect measures of software.
In contrast to size-oriented metrics, function-oriented metrics do not use
LOC as a basis for measuring but uses program functionality. It measures
what is called function points (FP) that are computed from countable
measures of the software’s information domain and software complexity.
Information domain values are derived from:
Each of the data representing the above parameters is multiplied with the
corresponding complexity weights and added to come up with the function
point.
UP Open University
24 CMSC I Software Engineering
Other software attributes can be computed from the data above as follows:
1. productivity = FP/PM
2. quality = number of errors/FP
3. cost = cost in pesos/FP*1000
4. documentation = pages of documentation/FP
The inherent difficulty with this approach is the need to know the software
information domains at an early stage in the development of the software,
which may highly be improbable.
SAQ 2-2
Consider a software with 27,200 lines of code, developed by one
programmer in 3 months, with 25 detected errors, at a cost of
P55,000 and 200 pages of documentation; with 9.9 function point.
Compute for the following using size-oriented and function-point
oriented metrics, and write your answers in the table below:
Productivity
Quality
Cost
Documentation
What do you notice with the results that you got? You’re right,
they are just numbers which do not mean anything at this time.
During planning, the software developing team compiles software
metric values from previously developed software and based their
estimates on these experiences. We will discuss how we use these
metrics to do estimation in the next section on Estimation.
UP Open University
Unit I Module 2 25
Estimation
In performing estimates on the software to be developed, several models
can be used together to come up with an accurate cost estimate for the
software. There are two main means to top-down estimation: experiential
models and empirical models. Bottom-up estimation usually involves
defining what is called a work breakdown structure.
Experiential models
Experiential models appeal to experts’ judgment in estimating the cost of
the software to be developed based on previous experience to developing
possibly similar software systems. In a sense, the experts are requested to
make educated guesses about the effort to be used for the project. Usually,
the experts are asked to make three predictions on software characteristics:
optimistic estimate, the most likely estimate and pessimistic estimate. The
final expected estimate is computed from these three predictions using
the following formula:
The problem with the experiential model is the level of confidence that we
have on a computed estimate since this approach is largely influenced by
the subjectivity of the experts invited to do the estimation. The estimate
can be re-enforced and refined using other estimation models.
E = c0 + Σ cixi
UP Open University
26 CMSC I Software Engineering
E = c0 + Σ cixidi
COCOMO
COCOMO is the acryonym for COnstructive COst MOdel. This model is
due to Barry Boehm. He suggested that the effort applied to a software
project in terms of programmer months (E) and the development time in
months (D) are affected by the type of software being developed.
E = a(KLOC)b
D = c * Ed
UP Open University
Unit I Module 2 27
where a, b, c and d are constant based on the type of project with the
following values:
Software a b c d
Project
Organic 2.4 1.05 2.5 0.38
Semidetached 3.0 1.12 2.5 0.35
Embedded 3.6 1.20 2.5 0.32
The basic COCOMO was extended into the intermediate level to include
other software development characteristics into the estimation of effort
such as product, hardware, personnel and project attributes, rather than
estimating based solely on the lines of code.
1. Product attributes
a. Required software reliability
b. Size of the databases
c. Complexity of the system
2. Hardware attributes
a. Execution time constraints
b. Storage constraints
c. Virtual machine volatility
d. Computer response time
3. Personnel attributes
a. Capability of analyst
b. Capability of software engineer
c. Capability of programmer
d. Virtual machine experience
e. Programming language experience
4. Project attributes
a. Use of software development tools
b. Use of software engineering methods
c. Required development schedule
E = a(KLOC)b + EAF
UP Open University
28 CMSC I Software Engineering
where the values of constants a and b are derived from the following
table:
Software project a b
Organic 3.2 1.05
Semidetached 3.0 1.12
Embedded 2.8 1.20
and EAF is the effort adjustment factor which is computed from the software
attributes listed above. Each attribute affects the overall effort of the
development of the software and categorized as either very low, low,
nominal, high or very high using the following multipliers:
Detailed COCOMO
For example, the analysis of the project is more affected by the capability
of the systems analysts than the programmers of the system. The effort
adjustment factor is computed based on the effect of an attribute to the
amount of modification required on the phases of the development process.
UP Open University
Unit I Module 2 29
Putnam model
L = C * E1/3 * T4/3
Effort
Time
Figure 2-1. Rayleigh-Norden curve of effort distribution
Function-point model
UP Open University
30 CMSC I Software Engineering
SAQ 2-3
Using the same software project in SAQ 2-2, estimate the effort
applied in programmer-months (E) and development time (D)
using:
1. Basic COCOMO
Software Project E D
Organic
Semidetached
Embedded
Software Project E D
Organic
Semidetached
Embedded
UP Open University
Unit I Module 2 31
IsaWika!
Cost estimates are made first on the lowest level components sentence
grabber, lexical analyzer, dictionary, syntax analyzer, syntax generator,
post editor and output sentence. Then on the input system, dictionary,
translator and output system, and eventually, on the whole system, IsaWika!
Summary
Planning is necessary for the successful development and proper
management of a software system. It ensures that the goal is realistic and
can be implemented within the constraints of the project. It minimizes
schedule slippage, overextended budgets and high maintenance costs of
the software project. It involves cost estimation, scheduling and
organizational planning.
UP Open University
32 CMSC I Software Engineering
Activity 2-1
For this activity, you need to go again to the library or browse
through your Software Engineering books. (Don’t be surprised if
in every module, I will ask you to do some research. You have
probably noticed now that software engineering is a fast advancing
field, the foundations of which are wide and still evolving.) Study
the different approaches to project planning discussed in the
different references and look into the examples they have described.
How can you apply this to any problem given to you?
Wow, congratulations! This is the end of Module 2. Relax and have a nice
meal. Start with Module 3 later.
UP Open University
Unit I Module 2 33
References
UP Open University
Module 3
Scheduling
Let us say that during the next school break, your family is going for a
summer vacation. First of all, you have to decide at the beginning (at least
just vaguely) the following things:
The first two things above, the money and the duration of the trip, will
determine the other things, the where, who and what questions; or vice
versa. If you don’t have much money and time to spare, you will have to
limit the kind of vacation that you will have. You first check the amount
that you can afford to spend and the time that you can take off from the
office, and then you can decide where you can go based on your money
and the time that you can spare. The process could have been the other
way around. There may be times that you first thought of making a vacation
somewhere, then you calculate the amount that you will spend and the
duration of the trip. Refinements and readjustments will have to be made
on either the nature of the trip or the resources that you have.
In our analogy above, you have two options in scheduling your vacation.
The first option is to determine the duration of your vacation based on
your own availability. Now you clearly identify when you want to go and
when you are coming back from the trip. Then you plan what you want
to do during the trip, the places you want to see, the friends you want to
visit; in general, the events that will take place within the specified time. It
may be that you have to add, delete or replace intended events due to
time and monetary constraints.
The second option is that you just determine roughly each event in your
trip and decide later the specific dates. In software development, it is usually
the case that the client requests for a software package that the company
wishes to use at a specific date. Therefore, the first option is usually
applicable for the development of software projects.
UP Open University
Unit I Module 3 37
Scheduling Methods
Scheduling starts with the identification of the phases involved during
the software development, which can be represented using a work
breakdown structure (WBS). Do you remember this from the previous
module? Let us have a look again at the WBS of our example (IsaWika!)
from the previous module (also given in Figure 3-1).
IsaWika!
Steps are further subdivided into activities. In our example, the design of
the syntax analyzer (Step 3.1) can be subdivided into the following
activities:
UP Open University
38 CMSC I Software Engineering
UP Open University
Unit I Module 3 39
4 3
C D E
3 1
START
5 3 2 7 1
A B H I J K
8 1 FINISH
2
F G
In the example in Figure 3-2, the edges are labeled with the duration of
each activity in days. Thus, the activity represented by the edge CD can
be completed in 4 days. We will follow the convention that the
chronological order of the milestones follows an alphabetical order,
meaning, milestones D, H and G must first happen before I, and milestones
E and I before J. This therefore captures interdependence information
among activities. For instance, activities represented by edges DI, HI and
GI are necessary before milestones I is achieved and before activity IJ can
be accomplished. There are three start-to-finish paths in this example:
ABCDEJK, ABHIJK and ABFGIJK, with durations 17 days, 15 days and
24 days, respectively. Can you try to compute these durations yourself?
UP Open University
40 CMSC I Software Engineering
Path A
Path B
where slack is computed as: TA – TB. The latest finish time of Path B can
also be computed from its earliest finish and slack times, which will yield
the same value:
The critical path is the longest start-to-finish path, which contains the
chain of activities that dictate the duration of the project. The critical path
achieves milestones with no slack times.
UP Open University
Unit I Module 3 41
Consider the activity graph in Figure 3-3. To compute the estimated time
to accomplish the project, we determine first the critical path. We find the
critical path by computing the length of each of the start-to-finish paths.
These paths are:
ABCDHIJ
ABGHIJ
ABEFHIJ
with lengths 28, 33 and 27, respectively. This means that the critical path
is the second one above.
Since the duration of the project is determined by the critical path ABGHIJ,
then we can determine at this point the start and finish times of the
activities on this path, namely: AB, BG, GH, and IJ (shown in Table 3-1).
Since activity AB is the first activity, we set the start time to zero. The
earliest and latest (start or finish) times of each activity on the critical path
are the same and the slack value is always set to zero. The start time of an
activity is the finish time of the previous one in the critical path. The finish
time is computed as the sum of the start time and the duration of the
activity. Fill-in the table in the order of the activities in the critical path.
Make sure that the finish time of the last activity (IJ) is the length of the
critical path. In our example, it should be 33 days.
What is the significance of the length of the critical path? The critical path
is the sequence of events that bottlenecks the schedule of the project. It
identifies the accomplishment of activities that are crucial so project
completion will be within the original schedule. In our example, 33 days
is the duration of the project.
UP Open University
42 CMSC I Software Engineering
Now, we want to know the start and finish times of the other activities
(computed values for our example are shown in Table 3-2). To do this, we
need to consider the paths BCDH and BEFH. These paths have earliest
start times 10 since they commence after activity AB has been
accomplished. It’s easy to fill-in the earliest start times of each milestone
in these paths. For illustration purposes, let us consider path BCDH first,
which has activities, namely: BC, CD and DH. From milestone B, just
compute the earliest start and finish times of BC, CD and DH consecutively.
From the earliest finish time of AB, we compute the earliest start and
finish times of BC as follows:
The earliest time of an activity is the earliest finish time of the previous
activity. Thus, the earliest start and finish times of activities CD and DH
are computed in the same way.
The same procedure is followed to compute for the earliest start and finish
times of the activities in the path BEFH, namely: BE, EF and FH. Table
3-2 shows these values.
UP Open University
Unit I Module 3 43
Now, have a look at the activity graph in Figure 3-3. Notice that milestone
H can only be achieved after we accomplish activities DH, GH and FH.
The earliest and latest finish times of GH (which is an activity in the critical
path) are 25, while the activities DH and FH finish ahead of time,
specifically only after 20 and 19 days, respectively (highlighted in Table
3-2). This shows that activity DH has 5 days in excess and FH has 6 days.
These days are the activities’ slack times. This slack time is also applicable
to the other activities in the concurrent or parallel paths.
latest start time = earliest start time + slack time (of concurrent path)
UP Open University
44 CMSC I Software Engineering
Table 3-3. Computation of latest start and slack times of concurrent activities
Again, the corresponding latest finish times are computed from the sum
of the latest start time of particular activity and the duration of the activity.
The final values are given in Table 3-4.
Note that the latest finish times of the activities DH, GH and FH are the
same, specifically, 25 days. Milestone H is only reached after the three
said activities are accomplished, then activity HI can commence after day
25.
Now, why don’t you take your pencil and try solving the next SAQ?
UP Open University
Unit I Module 3 45
SAQ 3-1
Consider the following activities represented as edges in an activity
graph for a project:
1. Draw the activity graph for this project and label the edges.
2. What is (are) the critical path (or paths) of this project? How
long is the duration of the project?
UP Open University
46 CMSC I Software Engineering
AB 5
BC 3
CD 4
DE 3
DI 1
EJ 2
BH 3
HI 2
BF 8
FG 2
GI 2
IJ 7
JK 1
In PERT, this interval (or call “window”) for each activity can be computed
by identifying the following:
1. expected (or probable) duration of an activity; and
2. variance of the duration.
UP Open University
Unit I Module 3 47
The expected duration is a particular point in the time interval, and the
variance describes the width of this interval. From these values, the critical
path can be calculated and the activities on this critical path are identified.
These activities are probable bottlenecks in the schedule of the project
development.
This is all we want to discuss here. Now, go and read the next activity for
you, then schedule a time to go over your books or a trip to the library.
Activity 3-1
Other planning tools are gantt charts and histograms. Can you
find out what these are and what information about software
planning they capture? You can use the space below to outline
your findings.
UP Open University
48 CMSC I Software Engineering
Risk Analysis
After making our initial schedule for the software project, it will be ideal
to be able to follow such a schedule. But, as we have mentioned earlier,
this is not always the case. There will always be problems during the
software development that will definitely alter our cost estimates and
schedules. We will have to decide at these times, which among alternative
options (or called risks) are we going to choose? How do we manage such
risks during the software development?
During planning, we are already taking some risks that we may not be
aware of. There are several options from which we can go, and we
eventually make some choices that are actually called risks in software
development. For example, are you going to hire new programmers for
the project? If so, how can you assess the adequacy of their level of training
for the nature of the project at hand?
Summary
Scheduling is a very important aspect of project planning. It is setting
goals for the time duration of the project. In every undertaking, we must
set our goals and plan to achieve those goals. If we don’t have a goal for
time completion of our project, the development will not eventually get
completed. Together with cost estimation, the role of scheduling in software
development cannot be overemphasized. You need to do this each time
you embark on developing a software project.
References
UP Open University
Module 4
Software Project
Management
Personnel Management
Another aspect of planning involves organizing and planning personnel.
After outlining the tasks necessary for the project and the time allotment
for each task, we now identify the personnel profile needed to accomplish
these tasks and their organization, which is collectively referred to as
personnel management.
52 CMSC I Software Engineering
1. personality
2. ability to communicate
3. training to perform the work
4. experience in working in a group
The latter two factors, lack of training and experience to perform tasks by
members of the project development team must be a real concern and
must also be studied at the beginning of the development. We identify
possible differences between the expected personnel profile and the actual.
These issues are discussed further in the section Project Roles.
Communication Paths
A very important aspect of the whole development process is the effective
communication of all individuals concerned beginning with the client (see
Module 2 for an introduction), together with the members of the
development team. How can the members be able to communicate
effectively with one another?
UP Open University
Unit I Module 4 53
UP Open University
54 CMSC I Software Engineering
If we form two small teams from these 10 people, with 5 members each,
how many communication paths are we going to have? Using the same
formula above, each team of 5 (with N=5) will have communication paths
computed as follows:
Group 1 Group 2
UP Open University
Unit I Module 4 55
Let us suppose that we are interested to find out the group membership
combinations based on the original number of members and the number
of groups that we want. For example, if we have 6 members and we are
forming 3 groups from these members, find the group membership
combination that will give the least number of communication paths. We
enumerate all the possible combinations for the number of members for
groups 1, 2 and 3, respectively: 1,1,4; 1,2,3; 1,3,2; 1,4,1; 2,1,3; 2,2,2; 2,3,1;
3,1,2; 3,2,1; and 4,1,1.
Notice that some of the combinations are only permutations of each other;
like 1,1,4 is a permutation of 1,4,1 and 4,1,1, meaning, these three will
yield the same group sizes, two teams with one member each and one
team with 4 members. We remove these permutations and compute the
number of communication paths for the rest of the groupings. We derive
the following:
Let us try to answer on SAQ now. Go ahead and try to answer this SAQ.
You can check the procedure that we followed in this section to answer
this one.
By the way, after you’ve answered the SAQ, you may take a look at the
ASAQs at the end of the module so that you can check if your answer is
correct or not. Remember, try to answer the SAQ yourself before looking
at the answers.
UP Open University
56 CMSC I Software Engineering
SAQ 4-1
A software development team has 10 members. Perform the
following:
UP Open University
Unit I Module 4 57
UP Open University
58 CMSC I Software Engineering
Project Roles
In a stage play production, we form different groups to perform different
roles. We have the cast who will act on the stage, the stage and props
committee, the lightsmen, the musicians, scriptwriter, director and others.
Some people can take on two or more roles, depending on the nature of
the roles. For example, one person can be the scriptwriter, director and a
member of the cast. For some obvious reasons through, it will not be possible
for one person to simultaneously take on two roles. For example, one
cannot be both a lightsman and a musician during the play performance
(unless of course, he has three hands and two brains!).
The second step is to identify the members who are taking on the roles in
the development process. This may involve putting these members into
groups to fulfill particular responsibilities during the development. We
will further discuss this in the next section.
Phase roles
The software development process involves several phases of the software
lifecycle. Can you still recall these phases from Module 1? Let me help you
recall them. We have the following phases:
1. planning
2. requirements analysis
3. design
4. implementation
5. testing
6. maintenance
Each of these phases has different tasks that may require various skills
and preparations from the participants involved. Thus, personnel profile
necessary at these various phases of the development will have to be
identified at the beginning of the development process. For example, during
the planning stage, the members will have to be equipped with managerial
skills and trained in using estimation and scheduling techniques (discussed
in Modules 2 and 3). Specific programming environments to be used in
UP Open University
Unit I Module 4 59
Functional roles
Recall that during planning, we identify the different tasks to be performed
based on the phases of the development process. We also determine the
functional tasks or activities that are to be accomplished to obtain the
intended software. Now these tasks and activities will have to be analyzed
against the personnel profile.
Project Organization
Once we establish the project roles and the personnel that we need, it is
also necessary to plan how to put these people together. How do we
organize our personnel so that the work can progress efficiently and
effectively? We need to determine the project structure and team
organization.
Project structure
Project structure determines the who’s who in the development process. It
dictates how a member is to be involved in the development during the
whole process. There are several formats that we can follow, and three
are presented here: project format, functional format and matrix format.
In the project format, all the members of the development team are involved
from the beginning of the development until the end. It appeals to the
advantage of diversity during the different phases of the software lifecycle.
One problem with this format is that fewer people may be necessary at
various phases of the lifecycle. Therefore, we need to carefully plan how
to keep everyone involved and busy at any time during the development.
One option may be to overlap phase implementations.
UP Open University
60 CMSC I Software Engineering
The functional format is based on the fact that various phases in the
development require different skills and knowledge, thus, may require
different sets of personnel. It appeals to the functional tasks to be
accomplished at various phases of the development, thus, assigning a group
of individuals to perform one specific task. In this case, the personnel can
specialize, improve and develop a particular skill or skills in one area or
field of study. For example, a group that performs software testing only
will be able to enhance their craft and improve on their skills, and be used
more effectively in future software projects. It will also be advantageous,
say for instance, to be performing testing on a software that another group
has developed, avoiding partialities.
A disadvantage with this approach is the backlog time (or orientation time)
that is involved in passing on to the next team in the development. We
need to minimize the necessity of passing on large amounts of information
to another group of people, to further minimize possible errors into the
system development. To address this problem, we can form component
teams as follows:
1. analysis
2. design and implementation
3. testing and maintenance
The third format is called matrix format. The matrix format specifically
caters to organizations that are working on several software development
projects at the same time. It uses the functional format but creates subgroups
within component teams, each one handling the component of one
software project. There is one disadvantage with this approach though.
A team working on a component of a software project has two managers,
one is the component team leader and the other is the software project
manager. There may be some confusion as to the line of responsibility and
must be settled early in the development.
We can find out how we can organize these teams in the next section.
Team organization
Individuals are grouped into teams and these teams must be run using
certain standards and protocols. There are two general approaches: the
egoless or democratic team, and the chief programmer team.
UP Open University
Unit I Module 4 61
Egoless team
The egoless (or democratic) team is a team structure where all members of
the team are “equals”, and the team leader is only the first among “equals”.
For example, an egoless team with 5 members follows the management
structure given in Figure 4-2.
This structure implies that decisions are made by team consensus and
leadership is by rotation. Each member of the team can freely communicate
with the other members without feeling intimidated if the member is the
team leader, or has a higher rank or position. This loose structure allows
for creativity, flexibility and dynamism in the development. The problem
with this set-up is the absence of a fixed leader. All members of the team
would have to be highly motivated and directed towards the goal, as
should be provided by a good leader. An alternative structure, the chief
programmer team, addresses this need.
UP Open University
62 CMSC I Software Engineering
Chief Programmer
Try to answer the next SAQ before I give you a summary of the module.
SAQ 4-2
Identify and explain the different project structures and team
organization that can be implemented in a software team.
UP Open University
Unit I Module 4 63
Activity 4-1
Now it’s time for you to do some research work again! Try to find
the other aspects of software project management that we need to
consider. Have fun!
Summary
Effective software project management determines the successful
development of a software project. It largely depends on the project roles
necessary in the development and the corresponding personnel profile to
occupy such roles. Project and organizational structures are also important
for effective performance of functions and communication.
Congratulations! You’ve made it to the end of Module 4, and also the end
of Unit 1. Now, you are advised to review the whole unit so you can
refresh your memory of the initial tasks in project development and
management. Give yourself a treat for completing this unit! Why don’t
you get yourself a nice dinner, seat back and relax. Start with Unit 2
tomorrow!
UP Open University