Oose CHP 2
Oose CHP 2
A. The People
The people are the primary key factor
for successful organization. For the
successful software production
environment, any organization must
perform the proper staffing,
communication and coordination, work
environment, performance
management, training, compensation
(or reward), competency analysis and
development, career development,
workgroup development, team/culture
development, and others.
People Capability Maturity Model (People-CMM) illustrate that “every organization needs to
continually improve its ability to attract, develop, motivate, organize, and retain the
workforce needed to accomplish its strategic business objectives by improving the quality on
its staff. ”.
B. The Product
Before a project can be planned, product objectives and scope should be established,
alternative solutions should be considered, and technical and management constraints should
be identified, without product information, it is impossible to define reasonable (and
accurate) estimates of the cost, an effective assessment of risk, a realistic breakdown of
project tasks, or a manageable project schedule that provides a meaningful indication of
progress.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 1
C. The Process
A software process provides the framework from which a comprehensive plan for software
development can be established. Although, the detail operation to do for the project
development may be differ from problem to problem but the general framework for software
development remain same.
D. The Project
We conduct planned and controlled software projects for manage complexity of project. To
avoid project failure, a software project manager and the software engineers who build the
product must avoid a set of common warning signs, understand the critical success factors
that lead to good project management, and develop a commonsense approach for planning,
monitoring, and controlling the project.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 2
The estimation attempt to determine how much money, effort, resources, and time it will take to
build a specific software-based system or product. Estimation begins with a description of the
scope of the problem. The problem is then decomposed into a set of smaller problems, and each
of these is estimated using historical data and experience as guides. Problem complexity and risk
are considered before a final estimate is made. After completion of estimation, project
scheduling is started that defines software engineering tasks and milestones, identifies who is
responsible for conducting each task, and specifies the inter-task dependencies that may have a
strong bearing on progress.
2.6 Feasibility
The feasibility explains the acceptance of the software in different condition of technology,
finance, time, resources, and process of operation, which all are explained below:
A. Technical Feasibility
The software product must be technically feasible by the use of present and near future
hardware and techniques. Also, it must be feasible to afford the technical person for new
techniques or features required on the software product.
C. Financial Feasibility
The software product must be cost effective so that its user or users can purchase it. Sometime
the selling of large copy of a software product in low price will be more beneficial than that of
high cost selling in the prospective of popularity and benefit.
D. Operational Feasibility
The user must know about the operation of the software product to use it in efficient way.
Thus, the process of operation must be predefined in many ways such as training, meeting,
presentation demo etc.
E. Resource Feasibility
The software development company must have the software and hardware resources to build
the quality software product as the customer demand. Also, the product must be well operating
on the end user machine after delivery.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 3
2.7 Resources
The three major categories of software
engineering resources are—people,
reusable software components, and the
development environment (hardware and
software tools). Each resource is specified
with four characteristics: description of the
resource, a statement of availability, time
when the resource will be required, and
duration of time that the resource will be
applied.
A. Human Resources
Human are the primary resources that
evaluate software scope and select the
skills required to complete
development. They specify both
organizational position (e.g., manager,
senior software engineer) and specialty
(e.g., telecommunications, database,
and client-server).
The number of people required for a software project can be determined only after an
estimate of development effort (e.g., person-months) is made. For relatively small projects (a
few person-months), a single individual may perform all software engineering tasks,
consulting with specialists as required. For larger projects, the software team may be
geographically dispersed across a number of different locations. Hence, the location of each
human resource is specified.
Bennatan suggests four software resource categories that should be considered as planning
proceeds:
Off-the-shelf components: Existing software that can be acquired from a third party
or from a past project. COTS (commercial off-the-shelf) components are purchased
from a third party, are ready for use on the current project, and have been fully
validated.
Full-experience components: Existing specifications, designs, code, or test data
developed for past projects that are similar to the software to be built for the current
project. Members of the current software team have had full experience in the
application area represented by these components. Therefore, modifications required
for full-experience components will be relatively low risk.
Partial-experience components: Existing specifications, designs, code, or test data
developed for past projects that are related to the software to be built for the current
project but will require substantial modification. Members of the current software
team have only limited experience in the application area represented by these
components. Therefore, modifications required for partial-experience components
have a fair degree of risk.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 4
New components: Software components must be built by the software team
specifically for the needs of the current project.
C. Environmental Resources
The environment that supports a software project, often called the software engineering
environment (SEE), incorporates hardware and software. Hardware provides a platform that
supports the tools (software) required to produce the work products that are an outcome of
good software engineering practice. When a computer-based system (incorporating
specialized hardware and software) is to be engineered, the software team may require access
to hardware elements being developed by other engineering teams. For example, software for
a robotic device may require a specific robot as part of the validation test step.
Software metrics (qualitative measures) can be categorized similarly to real world scenario. But
the result from the software measurement metrics is not sufficient for the overall sizing of
software because some metrics are hidden and appears at the time of software construction. The
software estimation generally done in two levels: Top-down and Bottom-up approach.
Top-down estimation
Top-down estimation start at the system level and assess the overall system functionality and
how this is delivered through sub-systems.
Usable without knowledge of the system architecture and the components that might be part
of the system.
Takes into account costs such as integration, configuration management and documentation.
Can underestimate the cost of solving difficult low-level technical problems.
Bottom-up estimation
It starts at the component level and estimate the effort required for each component. Add these
efforts to reach a final estimate.
Usable when the architecture of the system is known and components identified.
This can be an accurate method if the system has been designed in detail.
It may underestimate the costs of system level activities such as integration and
documentation.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 5
2.9 Decomposition techniques
Software project estimation is a form of problem solving, and in most cases, the problem to be
solved (i.e. developing a cost and effort estimate for a software project) is too complex to be
considered in one piece. For this reason, we should decompose the problem, re-characterizing it
as a set of smaller (and hopefully, more manageable) problems.
The decomposition approach was discussed from two different points of view: decomposition of
the problem and decomposition of the process. Estimation uses one or both forms of
partitioning. But before an estimate can be made, the project planner must understand the scope
of the software to be built and generate an estimate of its “size.”
A. Software Sizing
The accuracy of software project estimation is depends on:
The size of product to be built.
The human effort, calendar time, and availability of reusable software components.
The ability and experience of the software team.
The stability of the product requirements and the supporting environments.
In the context of project planning, size refers to a quantifiable outcome of the software
project. If a direct approach is taken, size can be measured in lines of code (LOC). If an
indirect approach is chosen, size is represented as function points (FP).
B. Problem-Based Estimation
In problem based estimation, productivity metrics can be computed using lines of code and
function points estimation. LOC and FP estimation are distinct estimation techniques. Yet
both have a number of characteristics in common. LOC and FP data are used in two ways
during software project estimation: (1) to “size” each element of the software and (2) as
baseline metrics collected from past projects and used in conjunction with estimation
variables to develop cost and effort projections.
Software measurement
The result from software measurement metric is not sufficient for the overall sizing of
software because some metrics are hidden and appear at the time of software constriction. In
spite of this, the measurement in the physical world can be categorized into two ways: direct
measurements and indirect measurements.
Direct measure: Direct measure of software process includes cost and effort applied
which are easier to measure by person-month analysis. Also, it includes line of code
(LOC) produced, execution speed, memory size and defects reported over some set
period of time.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 6
a. Line of code (LOC) measurement
LOC is simplest way to estimate the project size among all metrics available. The
measure was first proposed when programs were typed on cards with one line per card.
To find the LOC at the beginning of a project, divide module into sub-module and so
on, until size of each module can be predicted. The project size estimation by counting
the number of source instruction is an ambiguous task because there may have multiple
lines of code used for commenting, header lines of codes etc. Thus, a commonly
adopted convention is to count only the lines of codes that are delivered to the
customers as part of the product. The LOC estimation technique has following
limitations:
The LOC will vary according to programming style i.e. complex logic may
reduce some codes by the replacement of the simple logic.
The reuse of codes will vary the program size.
There may not be better quality on large sized programs.
The accurate LOC are only computed after project completion.
On project estimation, the software product not only depends on the LOC but
this may vary due to analysis, design, testing etc.
For example: If
Estimated total LOC on any project = 33,200
Organizational average productivity = 620 LOC/pm
Labor rate per month = $8000
Then,
Cost per LOC = ($8000/m)/(620LOC/pm) = $13
Total project cost = Total LOC x Cost per LOC = 33,200 x $13 = $4,31,600
Estimated effort = Total LOC / Average productivity
= (33,200 LOC) / (620 LOC/person month) = 54 persons
The major limitation of FP based estimation is that the weight of items on metric is
fixed which may not sufficient for all cases. Hence, this problem can be solved by
providing a range of weights for each item based on simple, average or complex
subjective determination.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 7
Function points are derived using an empirical relationship based on countable (direct)
measures of software’s information domain (UFP) and qualitative assessments of
software complexity (TCF). Information domain values are defined in the following
manner:
Number of external inputs (EIs) (weight-4): Each external input originates
from a user or is transmitted from another application and provides distinct
application-oriented data or control information. Inputs are often used to update
internal logical files (ILFs). Inputs should be distinguished from inquiries,
which are counted separately.
Number of external outputs (EOs) (weight-5): Each external output is derived
data within the application that provides information to the user. In this context
external output refers to reports, screens, error messages, etc. Individual data
items within a report are not counted separately.
Number of external inquiries (EQs) (weight-4): An external inquiry is
defined as an online input that results in the generation of some immediate
software response in the form of an online output (often retrieved from an ILF).
Number of internal logical files (ILFs) (weight-10): Each internal logical file
is a logical grouping of data that resides within the application’s boundary and is
maintained via external inputs.
Number of external interface files (EIFs) (weight-10): Each external interface
file is a logical grouping of data that resides external to the application but
provides information that may be of use to the application.
Function point (FP) = Unadjusted function point (UFP) x Technical complexity factor
(TCF)
Where,
UPF = Input x 4 + output x 5 + Inquiries x 4 + Files x 10 + Interface x 10
TCF (varies from 0.65 to 1.35) = 0.65 + 0.01 x Degree of influence (DI)
DI = Number of questions x weight to each question = 14 x (0 to 5) = ∑ (Fi)]
Thus, FP = UFP x [0.65 x 0.01 x ∑ (Fi)]
Each of these questions is answered using a scale that ranges from 0 (not important or
applicable) to 5 (absolutely essential). Note that, if these all 14 technical questions have
given the average value (3), then TCF = 0.65 + 0.01 x (14x3) = 1.07.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 8
For example: If FP =UFP x TCF = 375 FP, average productivity = 6.5 FP/PM and
labor rate = $8000 per month then
Cost per FP = ($8000) / (6.5 FP/PM) = $1230
Total project cost = 375 x $1230 = $461250
Estimated effort = Total FP / Average productivity = 375 FP / (6.5 FP/PM) = 58
persons
The empirical data that support most estimation models are derived from a limited sample of
projects. For this reason, no estimation model is appropriate for all classes of software and in
all development environments. Therefore, if agreement is poor, the model must be tuned and
retested before it can be used.
Thus, COCOMO-II is the successor of COCOMO-81 and is better suited for estimating
software development projects. It provides more support for modern software development
processes and an updated project database. The need for new model came as software
development technology moved from mainframe and overnight batch processing to desktop
development, cost reusability and the use of off-the-self software components.
COCOMO II is actually a hierarchy of estimation models that address the following areas:
Application composition model: Used during the early stages of software engineering,
when prototyping of user interfaces, consideration of software and system interaction,
assessment of performance, and evaluation of technology maturity are paramount.
Early design stage model: Used once requirements have been stabilized and basic
software architecture has been established.
Post-architecture-stage model: Used during the construction of the software.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 9
Basic COCOMO-II Model
COCOMO applies to three classes of software projects:
Organic: Developing well understood application programs, small experienced team
Semi Detached: mix of experienced and non-experienced team, unfamiliar
Embedded: strongly coupled to computer hardware
Basic COCOMO
Effort = a (KLOC)b PM
Time = c (Effort)d Months
Number of people required = (Effort applied) / (Development time)
Example: The size of organic software is estimated to be 32,000 LOC. The average salary
for software engineering is Rs. 15000/- per month. What will be effort and time for the
completion of the project?
Solution:
Effort applied = 2.4 x (32)1.05 PM = 91.33 PM (Since: 32000 LOC = 32KLOC)
Time = 2.5 x (91.33)0.38 Month = 13.899 Months
Cost = Time x Average salary per month = 13.899 x 15000 = Rs. 208480.85
People required = (Effort applied) / (development time) = 6.57 = 7 persons
5. Multiply the total number of classes (key + support) by the average number of work
units per class. Lorenz and Kidd suggest 15 to 20 person-days per class.
6. Cross-check the class-based estimate by multiplying the average number of work
units per use case.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 10
E. The make/Buy decision
In many software application areas,
it is often more cost effective to
acquire rather than develop
computer software. Software
engineering managers are faced
with a make/buy decision that can
be further complicated by a number
of acquisition options:
software may be purchased
(or licensed) off-the-shelf,
“full-experience” or “partial-
experience” software
components may be
acquired and then modified
and integrated to meet
specific needs, or
software may be custom built by an outside contractor to meet the purchaser’s
specifications
Outsourcing
In concept, outsourcing is extremely simple. Software engineering activities are contracted
to a third party who does the work at lower cost and, hopefully, higher quality. Software
work conducted within a company is reduced to a contract management activity.
On the positive side, cost savings can usually be achieved by reducing the number of
software people and the facilities (e.g., computers, infrastructure) that support them.
On the negative side, a company loses some control over the software that it needs.
Since software is a technology that differentiates its systems, services, and products, a
company runs the risk of putting the fate of its competitiveness into the hands of a third
party.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 11
2.10 Project Scheduling
In order to build a complex system, many software engineering tasks occur in parallel, and the
result of work performed during one task may have a profound effect on work to be conducted
in another task. These interdependencies are very difficult to understand without a schedule.
It’s also virtually impossible to assess progress on a moderate or large software project without
a detailed schedule.
Thus, after selection of appropriate process model, identification of the software engineering
tasks that have to be performed, estimation of the amount of work and the number of people,
fixing the deadline, and consideration of the risks, the next process on software engineering is
the project scheduling. Software project scheduling is an action that distributes estimated effort
across the planned project duration by allocating the effort to specific software engineering
tasks. The schedule may evolves over time according to the changes appeared on the project.
Program evaluation and review technique (PERT) and the critical path method (CPM) are two
project scheduling methods that can be applied to software development. Both techniques are
driven by information already developed in earlier project planning activities: estimates of
effort, a decomposition of the product function, the selection of the appropriate process model
and task set, and decomposition of the tasks that are selected. Interdependencies among tasks
may be defined using a task network. Tasks, sometimes called the project work breakdown
structure (WBS), are defined for the product as a whole or for individual functions. Both PERT
and CPM provide quantitative tools that allow us to
1. determine the critical path—the chain of tasks that determines the duration of the
project,
2. establish “most likely” time estimates for individual tasks by applying statistical
models, and
3. calculate “boundary times” that define a time “window” for a particular task.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 12
2.11 Software Risk
Risk analysis and management are actions that help a software team to understand and manage
uncertainty. The risks that are analyzed and managed should be derived from thorough study of
the people, the product, the process, and the project. The risk mitigation, monitoring, and
management (RMMM) should be revisited as the project proceeds to ensure that risks are kept
up to date.
Risk concerns the future happening that always involves two characteristics: (a) uncertainty—
the risk may or may not happen; that is, and (b) loss—if the risk becomes a reality, unwanted
losses will occur. When risks are analyzed, it is important to quantify the level of uncertainty
and the degree of loss associated with each risk. To accomplish this, different categories of risks
are considered.
Project risk: threaten the project plan.
Project risks identify potential budgetary, schedule, personnel (staffing and organization),
resource, stakeholder, and requirements problems and their impact on a software project.
Technical risks: threaten the quality and timeliness
Technical risks identify potential design, implementation, interface, verification, and
maintenance problems. In addition, specification ambiguity, technical uncertainty,
technical obsolescence, and “leading-edge” technology are also risk factors. Technical
risks occur because the problem is harder to solve than expected.
Business risks: threaten the feasibility
It includes the top five business risks which are
o Market risk: system that no one really wants
o Strategic risk: product no longer fits into the overall business strategy
o Sales risk: the sales force doesn’t understand how to sell the product
o Management risk: losing the support of senior management
o Budget risks: losing budgetary or personnel commitment
Known risks
Risk that can be uncovered after careful evaluation of the project plan, the business and
technical environment in which the project is being developed, and other reliable
information sources (e.g., unrealistic delivery date, lack of documented requirements or
software scope, poor development environment).
Predictable risks
These risks are identified from past project experience (e.g., staff turnover, poor
communication with the customer, dilution of staff effort as ongoing maintenance requests
are serviced).
Unpredictable risks
They can and do occur, but they are extremely difficult to identify in advance.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 13
B. Risk Identification
Risk identification is a systematic attempt to specify threats to the project plan (estimates,
schedule, resource loading, etc.). By identifying known and predictable risks, the project
manager takes a first step toward avoiding them when possible and controlling them when
necessary. The different categories of risk (project, technical, business, known, predictable,
and unpredictable) can be further divided as:
Generic risks: They are a potential threat to every software project.
Product-specific risks: They can be identified only by those with a clear understanding
of the technology, the people, and the environment that is specific to the software that
is to be built. To identify product-specific risks, the project plan and the software
statement of scope are examined, and analyze the special characteristics of any product
that may threaten the project plan.
One method for identifying risks is to create a risk item checklist; we need to identify the
following area from where risk will appear:
Product size—risks associated with the overall size of the software to be built or
modified.
Business impact—risks associated with constraints imposed by management or the
marketplace.
Stakeholder characteristics—risks associated with the sophistication of the
stakeholders and the developer’s ability to communicate with stakeholders in a timely
manner.
Process definition—risks associated with the degree to which the software process has
been defined and is followed by the development organization.
Development environment—risks associated with the availability and quality of the
tools to be used to build the product.
Technology to be built—risks associated with the complexity of the system to be built
and the “newness” of the technology that is packaged by the system.
Staff size and experience—risks associated with the overall technical and project
experience of the software engineers who will do the work.
Risk components
The risk components defined by U.S. air force are defined in the following manner:
Performance risk—the degree of uncertainty that the product will meet its
requirements and be fit for its intended use.
Cost risk—the degree of uncertainty that the project budget will be maintained.
Support risk—the degree of uncertainty that the resultant software will be easy to
correct, adapt, and enhance.
Schedule risk—the degree of uncertainty that the project schedule will be maintained
and that the product will be delivered on time.
The impact of each risk component is divided into one of four categories—negligible,
marginal, critical, or catastrophic.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 14
A risk table provides a simple technique for risk projection. The risk table can be
implemented as a spreadsheet model. This enables easy manipulation and sorting of the
entries. Here, at first all risks are listed in the first column of the table. This can be
accomplished with the help of the risk item checklists reference. Each risk is categorized in
the second column. The probability of occurrence of each risk is entered in the next column
of the table. The probability value for each risk can be estimated by team members
individually.
Finally, the table is sorted by probability and by impact. High-probability, high-impact risks
percolate to the top of the table, and low-probability risks drop to the bottom. This
accomplishes first-order risk prioritization. After that the table is sorted and defines a cutoff
line. The cutoff line (drawn horizontally at some point in the table) implies that only risks that
lie above the line will be given further
attention. Risks that fall below the line are
reevaluated to accomplish second-order
prioritization. The column labeled RMMM
contains a pointer into a risk mitigation,
monitoring, and management plan.
D. Risk Refinement
During early stages of project planning, a risk may be stated quite generally. As time passes
and more is learned about the project and the risk, it may be possible to refine the risk into a
set of more detailed risks, each somewhat easier to mitigate, monitor, and manage. One way
to do this is to represent the risk in condition-transition-consequence (CTC) format. That is,
the risk is stated in the following form:
2. Risk Monitoring
As the project proceeds, risk-monitoring activities commence. The project manager
monitors factors that may provide an indication of whether the risk is becoming more or
less likely. In the case of high staff turnover, the following factors must be monitored:
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 16
The general attitude of team members based on project pressures,
The degree to which the team has jelled,
Interpersonal relationships among team members,
Potential problems with compensation and benefits, and
The availability of jobs within the company and outside
3. Risk Management
If assumes that mitigation efforts have failed and that the risk has become a reality, risk
management and contingency planning is conducted. Risk is not limited to the software
project itself. Risks can occur after the software has been successfully developed and
delivered to the customer. These risks are typically associated with the consequences of
software failure in the field.
Continuing the example, the project is well under way and a number of people
announce that they will be leaving. If the mitigation strategy has been followed, backup
is available, information is documented, and knowledge has been dispersed across the
team. In addition, to “get up to speed”, newcomers enabled, and those individuals who
are leaving are asked to stop all work and spend their last weeks in “knowledge transfer
mode.” This might include video-based knowledge capture, the development of
“commentary documents or Wikis,” and/or meeting with other team members who will
remain on the project. The activities in risk management are:
a. Risk assignment: Figuring out what the risks are and what to focus on.
Make the list of affecting factor for the project.
Assign the probability of occurrences and potential loss of each items listed.
Rank the item from most to least dangerous.
b. Risk control
Mitigate (reduce) the highest order risk.
Resolve the high order risk factor.
Monitoring the effectiveness of the strategies and the challenging level of risk
throughout the projects.
Software safety and hazard analysis are software quality assurance activities that
focus on the identification and assessment of potential hazards that may affect software
negatively and cause an entire system to fail. If hazards can be identified early in the
software engineering process, software design features can be specified that will either
eliminate or control potential hazards.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 17
2.12 Software Maintenance
Maintenance corrects defects, adapts the software to meet a changing environment, and
enhances functionality to meet the evolving needs of customers. The software maintenance
begin almost immediately with in a day or week or month to adopt the challenges. At an
organizational level, maintenance is performed by support staff that are part of the software
engineering organization.
Most of software organization spend more money and time for maintaining existing programs.
It is not unusual for a software organization to expend as much as 60 to 70 percent of all
resources on software maintenance. Another software maintenance problem is the mobility of
software people. It is likely that the software team (or person) that did the original work is no
longer around. Worse, other generations of software people have modified the system and
moved on. And today, there may be no one left who has any direct knowledge of the legacy
system.
To reduce the software maintenance problem, we have to use the well-defined coding standards
and conventions, leading to source code that is self-documenting and understandable. A variety
of quality assurance techniques also uncover potential maintenance problems before the
software is released.
Object Oriented Software Engineering-Compiled by Yagya Raj Pandeya, NAST, Dhangadhi ©[email protected] Page 18