Chap 1 ICT
Chap 1 ICT
Software
• Software is the program and all associated documentation and
configuration data which is needed to make these programs operate
correctly.
• Software can be of different types: System software, Application
software, Engineering/Scientific software, Embedded software,
Product-line software, Web-applications, Artificial Intelligence
software, etc.
Project
• A project is a set of related tasks that are coordinated to achieve a
specific objective in a given time limit.
• A Project is a group of activities which has a clearly defined start and
end time, a set of tasks, and a budget, that is developed to solve a well-
defined goal or objective.
Management
• Management is the process of coordinating people and other resources
to achieve the goals of the organization. It is the practice of executing
and controlling the projects.
• Basically, the management involves the following activities:
1.Planning- deciding what is to be done
2.Organizing- making arrangements
3.Staffing- selecting the right people for the job
4.Directing- giving instructions
5.Monitoring- checking on progress
6.Controlling- taking action to remedy hold-ups
7.Innovating- coming up with new solutions
8.Representing- liaising with users, etc.
Project Management
• Project management is the discipline of initiating, planning, executing,
controlling, and closing the work of a team to achieve specific goals and
meet specific success criteria.
• The primary constraints are scope, time, quality and budget (cost).
• The secondary challenge is to optimize the allocation of necessary inputs
and integrate them to meet pre-defined objectives.
Project
Management
Software
Project
Management
Project People
IN THEORY:
In 1970, Winston Royce presented a paper called “Managing the Development of Large Scale Software
Systems” at IEEE WESCON where he made three primary points:
1. There are two essential steps common to the development of computer programs:
- analysis
- coding
Classical Waterfall Model
Waterfall Model
❑ Inflexible partitioning of the project into distinct stages
❑ This makes it difficult to respond to changing customer requirements
❑ This model is only appropriate when:
– The requirements are well-understood and/or
– The level of formality is high (e.g. it is essential to “freeze” the requirement
document)
3. Since the testing phase is at the end of the development cycle in the waterfall model, it may be risky
and invites failure. So we need to do either the requirements must be modified or a substantial design
changes is warranted by breaking the software in to different pieces.
There are five improvements to the basic waterfall model that would
eliminate most of the development risks are as follows:
• Fixing after delivery costs 100 times • Ratio of software to hardware cost is
as much as early fix. 85:15 and still growing.
• You can compress schedule 25%, but • Only about 15% of software
no more. development cost is due to
programming.
• For every $1 spent on development
you will spend $2 on maintenance. • Software systems cost 3 times as much
as software programs. Software system
• Costs are primarily a function of
products cost 9 times as much.
source lines of code.
• Walkthroughs catch 60% of the errors.
• Variations among people account
for the biggest differences in • 80% of the contribution comes from
productivity 20% of the contributors.
The 80/20 Rule
❑ 80% of the engineering is consumed by 20% of the requirements.
❑ 80% of the software cost is consumed by 20% of the components.
❑ 80% of the errors are caused by 20% of the components.
❑ 80% of software scrap and rework is caused by 20% of the errors.
❑ 80% of the resources are consumed by 20% of the components.
❑ 80% of the engineering is accomplished by 20% of the tools.
❑ 80% of the progress is made by 20% of the people.
1.2 Software Economics
and Cost Estimations
Evolution of Software Economics
Evolution of Software Economics
• Most software cost models can be abstracted into a function of five
basic parameters:
• Size: Which is measured in terms of the number of Source Lines Of Code or the
number of function points required to develop the required functionality.
• Process: Used to produce the end product, in particular the ability of the process is to
avoid non value-adding activities (rework, bureaucratic delays, communications
overhead).
• Personnel: The capabilities of software engineering personnel, and particularly their
experience with the computer science issues and the application domain issues of
the project.
• Environment: Which is made up of the tools and techniques available to support
efficient software development and to automate the process.
• Quality: It includes its features, performance, reliability, and flexibility.
• The relationship among these parameters and estimated cost can be calculated by using,
Effort = (Personnel) (Environment) (Quality) (SizeProcess)
• One important aspect of software economics is that the relationship between effort and size
exhibits a diseconomy of scale and is the result of the process exponent being greater than 1.0.
• Converse to most manufacturing processes, the more software you build, the more expensive it
is per unit item.
• There are three generations of basic technology advancement in tools, components, and
processes are available.
1. Conventional: 1960 and 1970, Craftsmanship. Organizations used custom tools, custom
processes, and virtually all custom components built in primitive languages. Project
performance was highly predictable.
2. Transition: 1980 and 1990, software engineering. Organizations used more-repeatable
processes and off-the-shelf tools, and mostly (>70%) custom components built in higher level
languages. Some of the components (<30%) were available as commercial products like, OS,
DBMS, Networking and GUI
3. Modern practices: 2000 and later, software production.
- 70% component-based,
- 30% custom
Conventional Transition Modern Practices
Conventional Transition Modern Practices
Figure:
What Does Return On Investment - ROI Mean?
• A performance measure used to evaluate the efficiency of an investment or to
compare the efficiency of a number of different investments. To calculate ROI, the
benefit (return) of an investment is divided by the cost of the investment; the result
is expressed as a percentage or a ratio.
❑ In order to estimate the cost of a project the following three topics should be considered,
1) Which cost estimation model to use.
2) Whether to measure software size in SLOC or function point.
3) What constitutes a good estimate.
❑ There are a lot of software cost estimation models are available such as: COCOMO,
CHECKPOINT, ESTIMACS, Knowledge Plan, Price-S, ProQMS, SEER, SLIM,
SOFTCOST, and SPQR/20.
❑ Of which COCOMO is one of the most open and well-documented cost estimation models
Pragmatic software cost estimation
• The software size can be measured by using
1) SLOC
2) Function points
• Most software experts argued that the SLOC is a poor measure of size. But it has some value in the software
Industry.
• SLOC worked well in applications that were custom built why because of easy to automate and instrument.
• Now a days there are so many automatic source code generators are available and there are so many advanced
higher-level languages are available. So SLOC is a uncertain measure.
• The main advantage of function points is that this method is independent of the technology and is therefore a
much better primitive unit for comparisons among projects and organizations.
• The main disadvantage of function points is that the primitive definitions are abstract and measurements are
not easily derived directly from the evolving artifacts.
• Function points is more accurate estimator in the early phases of a project life cycle. In later phases, SLOC
becomes a more useful and precise measurement basis of various metrics perspectives.
• The most real-world use of cost models is bottom-up rather than top-down.
• The software project manager defines the target cost of the software, then manipulates the parameters and
sizing until the target cost can be justified.
Pragmatic software cost estimation
❑ A good estimate has the following attributes:
✓ It is conceived and supported by the project manager, architecture
team, development team, and test team accountable for performing the
work.
✓ It is accepted by all stakeholders as ambitious but realizable.
✓ It is based on a well defined software cost model with a credible basis.
✓ It is based on a database of relevant project experience that includes
similar processes, technologies, environments, quality requirements,
and people.
✓ It is defined in enough detail so that its key risk areas are understood
and the probability of success is objectively assessed.
The predominant cost estimation process
Software manager,
software architecture manager,
software development manager,
software assessment manager
Cost
modelers
Risks, options, trade-offs,
alternatives
Cost
estimate
1.3 Improving Software Economics
Parameters of the Software Cost Model
Iterative development
Process Process maturity models
Methods and techniques Architecture-first development
Acquisition reform
C++ 56
Ada 95 55
Java 55
Visual Basic 35
Reducing Software Product Size – Object-Oriented Methods
• “An object-oriented model of the problem and its solution encourages a common
vocabulary between the end users of a system and its developers, thus creating a shared
understanding of the problem being solved.”
• Here is an example of how object-oriented technology permits corresponding
improvements in teamwork and interpersonal communications.
• “The use of continuous integration creates opportunities to recognize risk early and make
incremental corrections without destabilizing the entire development effort.”
• This aspect of object-oriented technology enables an architecture-first process, in which
integration is an early and continuous life-cycle activity.
• “An object-oriented architecture provides a clear separation of concerns among
disparate elements of a system, creating firewalls that prevent a change in one part of the
system from rending the fabric of the entire architecture.”
• This feature of object-oriented technology is crucial to the supporting languages and
environments available to implement object-oriented architectures.
Reducing Software Product Size – Reuse
Reducing Software Product Size – Commercial Components
1.4 Software Process
Improving Software Processes
Concerns Bureaucracy vs. standardization Quality vs. financial performance Content vs. schedule