Unit 1. Software Management Practice and Software Economics
Unit 1. Software Management Practice and Software Economics
Unit 1. Software Management Practice and Software Economics
MANAGEMENT
Course Title: Software Project Management
• Evaluation: Sessional + Final
• Marks: 50+50
• Nature of Course: Theory
Course Objectives:
• To provide exposure to the students in the area of SPM as a new
management framework uniquely suited to the complexities of modern
software development process.
• To discuss the software engineering approaches to modern software
development process (Unified Process).
Laboratory Works
Tools Required:
• Microsoft Project (2007 and/or higher versions)
• Microsoft Visio (2007 and/or higher versions)
Pre-requisite Courses
• System Analysis and Design
• Software Engineering
• Principle of Management
• Project Management
Course Contents: (Syllabus)
Unit 1. Software Management Practice and Software
Economics – 12 Hrs.
Unit 2. Software Process, Primitives and Process Management
Framework - 14 Hrs.
Unit 3. Techniques of Planning, Controlling and Automating
Software Process - 15 Hrs.
Unit 4. Modern Approach to Software Project and Economics -
4 Hrs.
Text Book Text Book
Reference Reference
Books Books
Reference Reference
Books Books
Reference Reference
Books Books
Reference Reference
Books Books
Reference Reference
Books Books
Unit 1. Software Management
Practice and Software Economics
Prepared By:
BIJAY MISHRA
(बिजय मिश्र)
[email protected]
@jijibisha
UNIT 1: Software Management Practice and Software
Economics - 12 Hrs.
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.
Return on investment is a very popular metric because of its versatility and simplicity.
That is, if an investment does not have a positive ROI, or if there are other opportunities
with a higher ROI, then the investment should be not be undertaken.
Project Sizes:
• Size as team strength could be :
– Trivial (Minor) Size: 1 person
– Small Size: 5 people
– Moderate Size: 25 people
– Large Size: 125 people
– Huge Size: 625 people
• The more the size, the greater are the costs of management overhead, communication,
synchronizations among various projects or modules, etc.
Reduce Software Size:
The less software we write, the better it is for project management and for product quality
The cost of software is not just in the cost of ‘coding’ alone; it is also in
– Analysis of requirements
– Design
– Review of requirements, design and code
– Test Planning and preparation
– Testing
– Bug fix
– Regression testing
‘Coding’ takes around 15% of development cost
Clearly, if we reduce 15 hrs of coding, we can directly reduce 100 hrs of development effort, and
also reduce the project team size appropriately !
Size reduction is defined in terms of human-generated source code. Most often, this might still
mean that the computer-generated executable code is at least the same or even more
Software Size could be reduced by
– Software Re-use
– Use of COTS (Commercial Off-The Shelf Software)
– Programming Languages
Pragmatic software cost estimation
If there is no proper well-documented case studies then it is difficult to estimate the cost of
the software. It is one of the critical problem in software cost estimation.
But the cost model vendors claim that their tools are well suitable for estimating iterative
development projects.
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
compensate for poor management, and a good manager can produce great results even with
meager resources. Good management motivates people to do their best, but there are no
universal “right” styles of management.
13. People are the key to success. Highly skilled people with appropriate experience, talent, and
training are key. The right people with insufficient tools, languages, and process will succeed.
The wrong people with appropriate tools, languages, and process will probably fail.
14. Follow with care. Just because everybody is doing something does not make it right for you. It
may be right, but you must carefully assess its applicability to your environment. Object
orientation, measurement, reuse, process improvement, CASE, prototyping-all these might
increase quality, decrease cost, and increase user satisfaction. The potential of such techniques
is often oversold, and benefits are by no means guaranteed or universal.
15. Take responsibility. When a bridge collapses we ask, “what did the engineers do wrong?” Even
when software fails, we rarely ask this. The fact is that in any engineering discipline, the best
methods can be used to produce awful designs, and the most antiquated methods to produce
elegant design.
The Principles of Conventional Software Engineering
16. Understand the customer’s priorities. It is possible the customer would tolerate 90%
of the functionality delivered late if they could have 10% of it on time.
17. The more they see, the more they need. The more functionality (or performance) you
provide a user, the more functionality (or performance) the user wants.
18. Plan to throw one away .One of the most important critical success factors is whether
or not a product is entirely new. Such brand-new applications, architectures, interfaces,
or algorithms rarely work the first time.
19. Design for change. The architectures, components, and specification techniques you use
must accommodate change.
20. Design without documentation is not design. I have often heard software engineers
say, “I have finished the design. All that is left is the documentation.”
21. Use tools, but be realistic. Software tools make their users more efficient.
22. Avoid tricks. Many programmers love to create programs with tricks- constructs that
perform a function correctly, but in an obscure way. Show the world how smart you are by
avoiding tricky code.
23. Encapsulate. Information-hiding is a simple, proven concept that results in software that
is easier to test and much easier to maintain.
The Principles of Conventional Software Engineering
24. Use coupling and cohesion. Coupling and cohesion are the best ways to measure
software’s inherent maintainability and adaptability.
25. Use the McCabe complexity measure. Although there are many metrics available to
report the inherent complexity of software, none is as intuitive and easy to use as Tom
McCabe’s.
26. Don’t test your own software. Software developers should never be the primary
testers of their own software.
27. Analyze causes for errors. It is far more cost-effective to reduce the effect of an error
by preventing it than it is to find and fix it. One way to do this is to analyze the causes
of errors as they are detected.
28. Realize that software’s entropy increases. Any software system that undergoes
continuous change will grow in complexity and become more and more disorganized.
29. People and time are not interchangeable. Measuring a project solely by person-
months makes little sense.
30. Expert excellence. Your employees will do much better if you have high expectations
for them.
1.7 Principles of Modern Software
Management
The Principles of Modern Software Management