5. Number of external interfaces: All machine-readable interfaces (e.g., data files on storage media) that are used to transmit information to another system are counted
5.3 Project Planning
For a successful project proper management and technical skilled staff is essential. Lack of only one can cause a project to fail. Proper management control and checkpoints are required for effective monitoring of the project. Controlling over development, ensuring quality, satisfying the needs of the selected process model- all requires careful management of the project.
5.3.1 Objective
Productivity and quality oriented software design cannot be accomplished without adequate project planning. A realistic project plan must be developed at the beginning of a project. It must be monitored during the project and modified, if necessary. Ultimately, a project plan is a vehicle and focal point that enables the project manager to carry out all sorts of project management activities. It provides a roadmap for a successful software project.
During Planning, all activities that management needs to perform are planned, while during Project Control, the plan is executed and updated. Without a proper plan, no real monitoring/controlling over the project is possible. The main goal of planning is to look into the future, identify the activities that need to be done to complete the project successfully and plan the scheduling and resource allocation for these activities.
5.3.2 Software Scope
The very first activity in software project planning is the determination of software scope. Function as well as performance allocated to software during system engineering should be assessed to establish a project scope that is understandable at the technical as well as management levels. A statement of software scope must be bounded. The Software scope describes the data and control to be processed, function, interfaces, reliability, performance and constraints etc. Functions when described in the statement of scope are evaluated and refined to provide more detail information prior to the beginning of estimation. Some degree of decomposition is useful because cost and schedule estimates are functionally oriented. Constraints identify limits placed on the software by external hardware, available memory, or other existing systems.
Project management is an essential part of software development. A large software development project involves many people working together for a long period. To meet the cost, quality, and schedule objectives, resources have to be properly allocated to each activity for the project, and progress of different activities has to be monitored and corrective actions taken, if needed. For a large project, a proper management process is essential for success. The Management Process component specifies all activities that need to be done by the Project Management to ensure low cost and high quality objectives. The Management Process can be grouped into three main categories:
Planning
Metrics Values Management
Control
Monitoring & Control Termination Analysis
Management Process
Development Process
Time
Figure 5.1: Relationship between development process and management process Project management begins with planning. The goal of this phase is to develop a plan for software development, following which the objectives of the project can be met successfully and efficiently. Proper planning is essential for a successful project. The project plan provides the fundamental basis for project management. A software plan is usually produced before the development activity begins and is updated as
development proceeds and data about progress of the project becomes available. During planning, the major activities are ‘cost estimation’, ‘schedule and milestone determination’, ‘staffing’, ‘quality control plans, and 'controlling and monitoring plans'.
In cost and schedule estimation, the total cost and time needed for successfully completing the project are estimated. In addition, cost and schedule for the different activities of the development process to be used are also estimated, as the development process only specifies the activities, not the cost and time requirement for them. A plan also provides methods for handling change and methods for monitoring a project. Project planning is undoubtedly the single most important management activity, and output of this forms the basis of monitoring and control.
The basic template to be used is derived from IEEE Standard 1058-1998, IEEE Standard for Software Project Management Plans. The SPMP begins with a cover page that contains the version control and release information. Each section has a description of the information contained within. The document produced in this phase is the ‘Software Project Management Plan’ (SPMP), which describes the following –
1. Cost Estimation;
2. Schedule Estimation;
3. Personnel/Staff/Manpower Plan;
4. Software Quality Assurance Plan;
5. Configuration Management Plan;
6. Risk Management Plan; and 7. Monitoring Plan, etc.
5.3.3 Resources
The second software planning task is estimation of the resources required to accomplish the software development effort. Figure 5.2 illustrated pyramid shows the Software Development Resources.
Human Resources
(People)
Reusable software Resource
Environmental Resource
Figure 5.2: Software Project Resources
In the Development Environment, the hardware and software tools, sits at the bottom of the resources pyramid and provide the foundation for infrastructure to support the software development effort.
Reusable Software Components are basically software building blocks which can dramatically reduce development costs and accelerate delivery. These Reusable Software Components resides at the middle of the Pyramid.
At the top of the pyramid is the primary resource ‘Human (People)’.
Each resource is specified with four characteristics:
1. Description of the resource, 2. A statement of availability,
3. Time when the resource will be required; and 4. Duration of time that resource will be applied.
The last two characteristics can also be viewed as a time window.
(a) Human Resources
The planner begins by evaluating scope and selecting the skills required to complete development.
Both organizational position (e.g., manager, senior software engineer) and speciality (e.g., telecommunications, database, client/server) are specified. For small projects (one person per year or less), a single individual may perform all software engineering tasks, consulting with specialists as per the requirement of the porject. The number of people required for a software project can be determined only after an estimate of development effort (e.g., person per months) is made.
(b) Reusable Software Resources
‘Reusability’ is the core concept of the Component-based software engineering (CBSE), which means the creation and reuse of software building blocks. Such building blocks, often called components, must be cataloged for easy reference, standardized for easy application, and validated for easy integration.
According to Bennatan, following four software resource categories should be considered as planning proceeds:
(a) Off-the-shelf components: Existing software that can be acquired from a third party or that has been developed internally for 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.
(b) 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 of relatively low-risk.
(c) 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.
(d) New components: Software components that must be built by the software team specifically for the needs of the current project.
The following guidelines should be considered by the software planner when reusable components are specified as a resource:
1. If off-the-shelf components meet project requirements, acquire them. The cost for acquisition and integration of off-the-shelf components will almost always be less than the cost to develop equivalent software. Risk is relatively low.
2. If full-experience components are available, the risks associated with modification and integration is generally acceptable. The project plan should reflect the use of these components.
3. If partial-experience components are available, their use for the current project must be analyzed.
If extensive modification is required before the components can be properly integrated with other
elements of the software, proceed carefully risk is high. The cost to modify partial-experience components can sometimes be greater than the cost to develop new components.
Ironically, reusable software components are often neglected during planning, only to become a paramount concern during the development phase of the software process. It is better to specify software resource requirements early. In this way technical evaluation of the alternatives can be conducted and timely acquisition can occur.
(c) Environmental Resources
The environment that supports the 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. Because most software organizations have multiple constituencies that require access to the SEE, a project planner must prescribe the time window required for hardware and software and verify that these resources will be available.
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 numerical control (NC) used on a class of machine tools may require a specific machine tool (e.g., an NC lathe) as part of the validation test step; a software project for advanced page layout may need a digital-typesetting system at some point during development. Each hardware element must be specified by the software project planner.
5.4 Summary
Planning of the software project includes all aspects related to the Cost, Schedule and Quality of a software system and its development process. Measurements can be categorized in two ways: ‘direct’ and ‘indirect’ measures. Size-oriented software metrics are derived by normalizing quality and productivity measures by considering the size of the software product. Function points are derived using an empirical relationship based on countable (direct) measures of software’s information domain and assessments of software complexity.
Proper management control and checkpoints are required for effective monitoring of the project. Controlling over development, ensuring quality, satisfying the needs of the selected process model- all requires careful management of the project. During Planning, all activities that management needs to perform are planned, while during Project Control, the plan is executed and updated. Component-based software engineering emphasizes reusability that is, the creation and reuse of software building blocks. The environment that supports the software project, often called the Software Engineering Environment (SEE), incorporates hardware and software. 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.
5.5 Self Assessment Questions
1. What do you underst and by the measurement of Software?
2. Differentiate between Direct measures and Indirect measures.
3. Write a short note on Reusable Software Components.
4. What is ‘Function Point’? Discuss with suitable example.
5. Explain ‘Size-Oriented Metrics’ with suitable example.
6. Define Off-the-shelf component and its importance.
7. What are the elements of Software Project Management Plan (SPMP)?
8. Define ‘Software Scope’ in brief.
9. Discuss the role of ‘Planning’ in the Software Project Development.
10. Explain ‘Function Oriented Metrics’ in brief.
5.6 References
Pressman R.S., ‘Software Engineering: A Practitioner’s Approach’, (Fifth Edition), McGraw-Hill, 2001.
Keswani Bright, ‘Software Engineering’, (First Edition), Genius Publications, 2009.
Jalote Pankaj, ‘An Integrated Approach to Software Engineering’, (Second Edition), Narosa Publishing House, 1997.
Puri S. and Singh G., ‘Software Engineering Vol. 1’, (Fourth Edition), Genius Publications, 2008.
Sommerville I., ‘Software Engineering’, (Sixth Edition), Pearson Education, 2002.
Schach S.R., ‘Software Engineering’, (Seventh Edition), Tata McGraw-Hill, New Delhi, 2007.
Mall R., ‘Fundamentals of Software Engineering’, (Sixth Edition), Prentice-Hall of India, 2002.
Gill N.S., ‘Software Engineering: Software Reliability, Testing and Quality Assurance’, Khanna Book Publishing Co (P) Ltd, New Delhi, 2002
Sabharwal S., ‘Software Engineering: Principles, Tools and Techniques’, (Second Edition), Umesh Publications, Delhi, 2005.