Software Engineering
Software Engineering
Software Engineering
Software pricing
Plan-driven development
Project scheduling
Agile planning
Estimation techniques
Project planning
Project planning involves breaking down the work into parts and assign these to
project team members, anticipate problems that might arise and prepare
tentative solutions to those problems.
Planning stages
At the proposal stage, when you are bidding for a contract to develop or provide
a software system.
During the project startup phase, when you have to plan who will work on the
project, how the project will be broken down into increments, how resources will
be allocated across your company, etc.
Periodically throughout the project, when you modify your plan in the light of
experience gained and information from monitoring the progress of the work.
Proposal planning
The aim of planning at this stage is to provide information that will be used in
setting a price for the system to customers.
Software pricing
You take into account, hardware, software, travel, training and effort
costs.
There is not a simple relationship between the development cost and the price
charged to the customer.
Factor Description
Market opportunity A development organization may quote a low price because it wishes to
move into a new segment of the software market. Accepting a low profit
on one project may give the organization the opportunity to make a
greater profit later. The experience gained may also help it develop new
products.
Cost estimate If an organization is unsure of its cost estimate, it may increase its price
uncertainty by a contingency over and above its normal profit.
Contractual terms A customer may be willing to allow the developer to retain ownership of
the source code and reuse it in other projects. The price charged may
then be less than if the software source code is handed over to the
customer.
Plan-driven development
Plan-driven or plan-based development is an approach to software engineering
where the development process is planned in detail.
A project plan is created that records the work to be done, who will do it, the
development schedule and the work products.
Managers use the plan to support project decision making and as a way of
measuring progress.
The arguments in favor of a plan-driven approach are that early planning allows
organizational issues (availability of staff, other projects, etc.) to be closely taken
into account, and that potential problems and dependencies are discovered
before the project starts, rather than once the project is underway.
Project plans
Plan sections
Introduction
Project organization
Risk analysis
Hardware and software resource requirements
Work breakdown
Project schedule
Monitoring and reporting mechanisms
Plan Description
Staff development plan Describes how the skills and experience of the project
team members will be developed.
Project scheduling
Project scheduling is the process of deciding how the work in a project will be
organized as separate tasks, and when and how these tasks will be executed.
You estimate the calendar time needed to complete each task, the effort
required and who will work on the tasks that have been identified.
You also have to estimate the resources needed to complete each task, such as
the disk space required on a server, the time required on specialized hardware,
such as a simulator, and what the travel budget will be.
Project scheduling activities
Split project into tasks and estimate time and resources required to complete
each task.
Milestones are points in the schedule against which you can assess progress, for
example, the handover of the system for testing.
Deliverables are work products that are delivered to the customer, e.g. a requirements
document for the system
Scheduling problems
Estimating the difficulty of problems and hence the cost of developing a solution
is hard.
Schedule representation
These show the project breakdown into tasks. Tasks should not be too small.
They should take about a week or two.
Bar charts are the most commonly used representation for project schedules.
They show the schedule as activities or resources against time.
T1 15 10
T2 8 15
T3 20 15 T1 (M1)
T4 5 10
T5 5 10 T2, T4 (M3)
T6 10 5 T1, T2 (M4)
T7 25 20 T1 (M1)
T8 75 25 T4 (M2)
T9 10 15 T3, T6 (M5)
Estimation techniques
Organizations need to make software effort and cost estimates. There are two
types of technique that can be used to do this:
It usually helps to get a group of people involved in the effort estimation and to
ask each member of the group to explain their estimate.
Effort = A ´ SizeB ´ M
Most models are similar but they use different values for A, B and M.
Estimation accuracy
The size of a software system can only be known accurately when it is finished.
Distribution of system.
As the development process progresses then the size estimate becomes more
accurate.
The estimates of the factors contributing to B and M are subjective and vary
according to the judgment of the estimator.
Long history from initial version published in 1981 (COCOMO-81) through various
instantiations to COCOMO 2.
COCOMO 2 models
Early design model. Used when requirements are available but design has
not yet started.
Formula is
PROD 4 7 13 25 50
(NAP/month)
PM = A ´ SizeB ´ M where
A = 2.94 in initial calibration, Size in KLOC, B varies from 1.1 to 1.24 depending on
novelty of the project, development flexibility, risk management approaches and the
process maturity
Multipliers
Takes into account black-box code that is reused without change and code that
has to be adapted to integrate it with new code.
PM = (ASLOC * AT/100)/ATPROD
Post-architecture level
Uses the same formula as the early design model but with 17 rather than 7
associated multipliers.
This depends on 5 scale factors (see next slide). Their sum/100 is added to 1.01
A company takes on a project in a new domain. The client has not defined the
process to be used and has not allowed time for risk analysis. The company has a
CMM level 2 rating.
Architecture/risk Reflects the extent of risk analysis carried out. Very low means
resolution little analysis; extra-high means a complete and thorough risk
analysis.
Team cohesion Reflects how well the development team knows each other
and work together. Very low means very difficult interactions;
extra-high means an integrated and effective team with no
communication problems.
Multipliers
Product attributes
Computer attributes
Constraints imposed on the software by the hardware platform.
Personnel attributes
Multipliers that take the experience and capabilities of the people working
on the project into account.
Project attributes
Exponent value
Exponent value 1.17
As well as effort estimation, managers must estimate the calendar time required
to complete a project and when staff will be required.
TDEV = 3 ´ (PM)(0.33+0.2*(B-1.01))
Staffing requirements
Staff required can’t be computed by diving the development time by the required
schedule.
The number of people working on a project varies depending on the phase of the
project.
The more people who work on the project, the more total effort is usually
required.
Key points
The COCOMO II costing model is an algorithmic cost model that uses project,
product, hardware and personnel attributes as well as product size and
complexity attributes to derive a cost estimate.
Software standards
The quality management process checks the project deliverables to ensure that
they are consistent with organizational standards and goals
The quality team should be independent from the development team so that
they can take an objective view of the software. This allows them to report on
software quality without being influenced by software development issues.
Quality planning
A quality plan sets out the desired product qualities and how these are assessed
and defines the most significant quality attributes.
The quality plan should define the quality assessment process.
It should set out which organisational standards should be applied and, where
necessary, define new standards to be used.
Quality plans
Product introduction;
Product plans;
Process descriptions;
Quality goals;
For smaller systems, quality management needs less documentation and should
focus on establishing a quality culture.
Software quality
The focus may be ‘fitness for purpose’ rather than specification conformance.
Quality conflicts
It is not possible for any system to be optimized for all of these attributes – for
example, improving robustness may lead to loss of performance.
The quality plan should therefore define the most important quality attributes for
the software that is being developed.
The plan should also include a definition of the quality assessment process, an
agreed way of assessing whether some quality, such as maintainability or
robustness, is present in the product.
Process-based quality
Software standards
Importance of standards
They are a framework for defining what quality means in a particular setting i.e.
that organization’s view of quality.
If they are unsupported by software tools, tedious form filling work is often
involved to maintain the documentation associated with the standards.
Standards development
ISO 9001, the most general of these standards, applies to organizations that
design, develop and maintain products, including software.
A group examines part or all of a process or system and its documentation to find
potential problems.
Quality reviews
A group of people carefully examine part or all
of a software system and its associated
documentation.
Software metric
In many companies, software processes are not standardized and are poorly
defined and controlled.
Product metrics
Length of code This is a measure of the size of a program. Generally, the larger the
size of the code of a component, the more complex and error-
prone that component is likely to be. Length of code has been
shown to be one of the most reliable metrics for predicting error-
proneness in components.
Static software product metrics
Fog index This is a measure of the average length of words and sentences in
documents. The higher the value of a document’s Fog index, the
more difficult the document is to understand.
Object-oriented Description
metric
Weighted This is the number of methods in each class, weighted by the complexity of
methods per class each method. Therefore, a simple method may have a complexity of 1, and
(WMC) a large and complex method a much higher value. The larger the value for
this metric, the more complex the object class. Complex objects are more
likely to be difficult to understand. They may not be logically cohesive, so
cannot be reused effectively as superclasses in an inheritance tree.
Depth of This represents the number of discrete levels in the inheritance tree where
inheritance tree subclasses inherit attributes and operations (methods) from superclasses.
(DIT) The deeper the inheritance tree, the more complex the design. Many
object classes may have to be understood to understand the object classes
at the leaves of the tree.