Software Project Management Notes by softsys

Search   Chat 


Software Project Management


Software maintenance
The typical life span for a software product is 1 to 3 years in development and 5 to 15 years in use (maintenance). The distribution of effort between development and maintenance has been variously reported as 40/60, 30/70 and even 10/90. This is not surprising when it is understood that maintenance comprises all activities following initial release of a software product.
Software maintenance involves three types of activities
1. enhancing the capabilities of the product
2. adapting the product to new processing environments
3. correcting bugs.

Distribution of effort in software life cycle.
Analysis and design 16% Implement 8%
Test 16% Adapt 12%
Enhance 36% Fix 12%

Project size categories
Trivial projects :- A trivial software project involves one programmer working perhaps part time, for a few days or a few weeks and results in paprogram of less than 500 statements, packaged in 10 to 20 subroutines. Such programs are often personal software; they are developed for the exclusive use of the programmer and are usually discarded after a few months.

Small projects :- A small project employs one programmer for 1 to 6 months and results in a product containing 1000 and 2000 lines of source code packaged in perhaps 25 to 50 routines. A small project requires little interaction among programmers or between programmers and customers. Standardized techniques and notations, standardized documents, and systematic project reviews should be used even on small projects, but the degree of formality will be much less than is required on larger projects.

Medium size projects :- A project of medium size requires two to five programmers working for 1 to 2 years and results in 10,000 to 50,000 lines of source code packaged in 250 to 1000 routines. Medium size programs include assemblers, compilers, small management information systems, inventory systems and process control applications. Development of medium size projects required interaction among programmers and communication with customers. Thus, a certain degree of formality is required in planning, documents & project reviews.

Large projects :- A large project requires 5 to 10 programmers for a period of 2 to 3 years and results in a system of 50,000 to 1,00,000 source statements, packaged in several subsystems. It often has significant interactions with other programs and software systems. For example large compilers, small time-sharing systems, database packages, real time control system etc.

Very large projects :- It requires 100 to 1000 programmers for a period of 4 to 5 years and results in software of 1 million source instructions. It normally consists of several sub systems. For example large operating systems, large database systems, military command and control systems.

Extremely Large projects :- 2000 to 5000 programmers for periods of up to 10 years and results in 1 million to 10 million lines. It involves real time processing, telecommunications, multitasking and distributed data processing. For example air traffic control, ballistic missile defense etc.


Factors that influence quality and productivity
1. Individual ability
2. Team communication product complexity
3. Appropriate notations
4. Systematic approaches
5. Change control
6. Level of technology
7. Required reliability
8. Available time
9. Problem understanding
10. Stability of requirements
11. Required skills
12. Facilities and resources
13. Adequacy of training
14. Management skills ( page 23 ) management problems / methods to solve the problems.
15. Appropriate goals
16. Rising expectations

Quality attributes
Portability :- The ease with which software can be transferred from one computer system or environment to other.
Reliability :- The ability of a program to perform a required function under stated conditions for a stated period of time.
Efficiency :- The extent to which software performs its intended functions with minimum consumption of computing resources.
Robustness :- The extent to which software can continue to operate correctly despite the introduction of invalid inputs.

Factors to be considered in project planning
Estimation techniques to be used
Life cycle model, control functions
Organizational structure
Level of formality in specifications, test plans.
Level of verification and validation
Level of quality assurance required
Follow-up of maintenance responsibilities
Tools to be developed and used
Personnel recruitment and training

Outline of user's manual
Product overview and rationale
Terminology and basic features
Summery of display and report formats
Outline of the manual
Getting started
Sign-on
Help mode
Sample run
Modes of operations
Commands / dialogues / reports
Advanced features
Command syntax and system options

Format of project legacy
Project description
Initial expectations
Current status of the project
Remaining areas of concern
Activities / time log
Technical lessons learned
Managerial lessons learned
Recommendations for future projects

SPM for MCM - II
What is Software Engineering?
Software engineering is the technological and managerial discipline concerned with systematic production and maintenance of software products that are developed and modified on time and within cost estimates.

Who is a Programmer?
Programmer is an individual who is concerned with the details of implementing, packaging and modifying algorithms and data structures written in particular programming languages.

Software is
1. Instructions that when executed provide desired function and performance
2. Data structures that enable the programs to adequately manipulate information
3. Documents that describe the operations and use of the programs.

What is a Computer Software?
Computer software includes the source code and all the associated documents and documentation that constitute the software product. Requirements documents, design specifications, source code, test plans, principles of operations, quality assurance procedures, software problem reports, maintenance procedures, user's manuals, installation instructions and training aids are components of computer software.

Software is a logical rather than a physical system element. It has many different characteristics that differ considerably from those of hardware
1. Software is developed or engineered, it is not manufactured in the classical sense.
2. Software doesn't wear out
3. Most software is custom-built, rather than being assembled from existing components.

Normally software is of two types i.e. system software and application software. It is difficult to develop meaningful generic categories for software applications … still
1. System software
2. Real - time software
3. Business software
4. Engineering and scientific software
5. Embedded software
6. Personal computer software
7. Artificial intelligence software

Home Work ( write in details about above categories - Pressman - Page 15 )

What is Management
Planning, Staffing, Co-ordination, Decision Making, Control

System Development life cycle ( Discuss on your own )

Project Management
Project management focuses on project. A project is an undertaking that has beginning and end and is carried out to meet established goals within cost, schedule and quality objectives.

Project life cycle : Each project moves through a predictable life cycle of four phases.
1. Conceiving and defining the project
2. Planning the project
3. Implementing the project
4. Completing and evaluating the project.

Format of a project plan
Life cycle model ( terminologyies / milestones / work products )
Organizational structure ( team structure / work breakdown )
Preliminary staffing and resource requirements
Pert network / Gantt charts
Cost estimate
Project monitoring and control mechanisms
Tools and techniques to be used.
Programming languages
Testing requirements
Supporting documents required
Manner of demonstration and delivery
Trainging schedule and materials
Installation plan
Maintenance considerations
Method and time of delivery and payment
Sources of information

During project's life one must consider following basic parameters
1. Quality (Software quality chapter)
2. Cost (Estimation chapter)
3. Time

Time aspect of project
The objective when planning the time dimension is to determine the shortest time necessary to complete the project. The steps in planning the time aspect are
Begin with work break down structure.
Determine the time required to complete each sub unit.
Determine in what sequence the sub unit must be completed
Which sub units may be under way at the same time.
The above analysis will give you
The duration of each step
The earliest time at which the step may be started and
The latest time at which the step must be started.
A mathematical model can be used to estimate time
Tm : The most probable time
To : The optimistic (shortest) time - within which only 1% of simolar projects are completed.
Tp : The pessimistic (longest) time within which 99% of similar projects are completed.
Te : The calculated time estimate.

Formelae : Te = (To + 4 Tm + Tp) / 6
Till now we talked about general projects. Software Projects are not different from that. Software project revolves around three "P"s
1. People
2. Problem
3. Process

Before going to discuss the three "P"s one by one first let us study the Typical Software Plan
Introduction (Purpose / scope / objectives)
Estimation (Effort / cost / duration)
Risk management
Schedule - Work breakdown
Project resources

People
Considering the overall picture, people involved in software project can be categorized into following groups
1. Senior managers :- who defines the business issues that often have significant influence on the project.
2. Project managers (technical) :- responsible for planning, motivating, organizing and controlling the software practitioners.
3. Practitioners :- who deliver the technical skills.
4. Customers :- who specify the requirements.
5. End users :- who interact with the software once it is released.

Software Project - Team Leader
Motivation Organization Ideas or innovations
Problem solving Managerial identity Influence and team building

The Software Teams
Three generic team organization structures are used in software project such as
Democratic Decentralized (DD)
1. This software team has no permanent leader. Rather, "task co-ordinators are appointed for short duration.
2. Decisions on problems are made by group consensus.
3. Communication among team members is horizontal.
4. Informal atmospheres
5. Problems of complex nature are best handled by such teams.

Controlled Decentralized (CD)
1. It has a specific leader who co-ordinates specific task where secondary leaders are responsible for sub tasks.
2. Problem solving remains a group activity.
3. Communication among subgroups and individuals is horizontal. Vertical communication along the control hierarchy also occurs.
4. This structure is best suited for large projects.

Controlled Centralized (CC)
1. It is also called as Chief Programmer Team
2. This structure is characterized by heavy dependence on Chief Programmer as top level problem solving and internal team coordination are managed by team leader.
3. Vertical communication.
4. This is suited for problems which are well-understood.

Extra related with team building
Following points are taken into consideration at the time of team building
Difficulty of the problem
Size of the programs
Team lifetime (how long members will stay together)
Modularization of the problem
Required quality and reliability of the system
Rigidity of the delivery date
*** Also refer chart - Pressman - Page 63

Size of the Team
Programming team size should be small. It reduces communication problems, leads to egoless programming, and results in close relationships amongst the team members. A typical team should not have more than 8 members. If a large project demands more people, then there can be multiple teams.

Problem (The scope of the problem must be established and bounded. One have to consider following things while solving the problem)

Software scope : It can be defined by answering further questions.
1. Context :- how does the software to be built fit into a larger system, product or business context, and what constraint are imposed as the result of the context.
2. Information objectives :- What customer-visible data objects are produced as output from the software? What data objects are required for input.
3. Function and performance :- What function does the software perform to transform input data into output? Are any special performance characteristic to be addressed?

Problem decomposition or Work Break down : It is also called as partitioning , it an activity that sits at the core of software requirements analysis. During the scoping activity there is no attempt to fully decompose the problem. Rather, decomposition is applied in two major areas i.e functionality that must be delivered and the process that will be used to deliver it.
It means breaking the project into smaller manageable activities. The structure is a typical tree structure. The decomposition is done until each leaf-node in the tree is small enough to allow the manager to estimate the size, difficulty and resource requirements. It also helps in preparing schedules through Gantt and PERT effort, Time and ultimately Cost estimation are facilitated by work breakdown structure.

Milestones : Important events in the project development are the initiation and termination of certain sub tasks, are called as milestones. A good milestone is characterized by finished documentation of that stage. A milestone may be "High level design complete" or "Preparation of test plan" etc. Milestones help in clearly identifying the stages of a project. A new concept is creeping called as inch-pebbles.

Charting techniques : Two commonly used methods for charting the project.
Gantt Chart : Introduced by henry Gantt, industrial engineer, in early 1900's. It is a horizontal bar chart that graphically displays the time relationship of the steps in a project. Each step of a project is represented by a line placed on the chart in the time period when it is to be undertaken. When completed, Gantt chart shows the flow of activities in sequence as well as those that can be under the way at the same time. Gantt charts are limited in their ability to show the interdependencies of activities. They are more useful in projects where the steps flow in simple sequence. (Refer Diagram - Mulay - page 17)

PERT & CPM : These techniques are useful in basic managerial functions of planning, scheduling and control.

Process
SDLC Approaches
Linear approach
Spiral model
Prototyping
4GT
RAD
Component assembly model
Concurrent development model

Project Estimation
Estimating the cost of a software product is one of the most difficult and error-prone tasks in software engineering. It is difficult to make an accurate cost estimate during the planning phase of software development because of large number of unknown factors.

Factors to be considered while estimating
Programmer Ability :
Time spend by programmers in the organization
Writing programs 13 % Reading programs and manuals 16%
Job communication 32% Personal 13 %
Miscellaneous 15 % Training 6% Mail 5%

Project Complexity (Relative term)
Project Size
The degree of uncertainty (Situational)
Availability of historical information (Situational)
Risk involved (by experience)
Required Quality aspects (Refer quality chapter)
Time available (Refer - Time aspect of project - Formula)
Level of technology

Project Size
Software sizing is project planners first major challenge. In the context of the project planning, size refers to a quantifiable outcome of the software project. Size can be measured in LOC (Lines Of Code)

Size categories for software products

Category Programmers Duration Product Size
Trivial 1 1-4 weeks 500 loc
Small 1 1-6 months 1k - 2k
Medium 2-5 1-2 years 5k - 50k
Large 5-20 2-3 years 50k - 100k
Very large 100-1000 4-5 years 1M
Extremely large 2000-5000 5-10 years 1M - 10 M

Cost estimation techniques
All these estimations techniques are having certain advangates and disadvantages. These techniques are normally selected depending upon the size of the project.

1. Estimation by analogy : This model uses historical data ( history and experience of previously developed software) to achieve some real figures to estimate.
2. Experts judgement : based on past experience or intution of experts in the field.
3. Delphi technique
4. Provide system definition to expert panel
5. Allow question form panelist
6. Do not allow discussions amongst panelist
7. Collect individual estimates
8. Find out average and deviation
9. If too much variation found amongst panelists restart from the first step of the technique by them the details about average opinion. This cycle is processed until the group reaches an agreement.
10. Pricing to win : Depends upon customers budget.
11. Top down estimation
12. Bottom up estimation


Four different approaches of sizing the project
Fuzzy logic sizing : use historical data and experience to size the project.
Function point sizing : Analyse the project - break down the project in modules - estimate function points for various modules.
Standard component sizing : Standard components such as files, screens, reports, validations, GUI standards are calculated - depend upon that LOC is calculated.
Change sizing : in case of reuse software components, the amount of change required in the code is calculated.

COCOMO

Chapter 4
Software Maintenance

There is only one thing, which is stable and that is "Change"

Changes in the existing system may be required because
Dynamism of the environment
Changes in the management
Technological factors
To remove deficiencies
To improve

Definition : Using today's technology for yesterday's programs for tomorrows success.

Maintenance is normally a problematic aspect as
Turnover
Documentation
Design ( as original design is not designed for maintenance )
Ignored tasks

Effects of maintenance is on :- data - code - documents.

Stages of Change
Un-freeze Change Freeze
Struggle - understand entire concept. - Design reviews - identify problem

The term maintenance or maintainability means
Understood - Correct - Adapt - Enhance

It is very difficult to quantify maintenance. Generally following things are taken into consideration at the time of calculating maintenance.
Problem recognition time Administration delay time
Maintenance tool arrangement time Problem analysis time
Change specification time Modification time
Local testing time Global testing time
Maintenance review time Total recovery time

Maintenance Plan - Steps
Request for change - request logs
Evaluate design
Plan for effective change
Assign responsibilities
Modify design
Recode
Review
Test and release