Professional Documents
Culture Documents
UNIT-II
The first step in scheduling a software project involves identifying all the
activities necessary to complete the project. A good knowledge of the
details of the project and the development process helps the managers to
effectively identify the important activities of the project. Next, the
activities are broken down into a logical set of smaller
activities(subactivities). The smallest subactivities are called tasks which are
assigned to different developers.
After the project manager has broken down the activities into tasks, he has
to find the dependency among the tasks. Dependency among the different
tasks determines the order in which the different tasks would be carried out.
If a task A requires the results of another task B, then task A must be
scheduled after task B and A is said to be dependent on B.
1
[2]. Project Scheduling Basic Principles
Following basic principles guide software project scheduling:
1. Modularization:
2. Interdependency.
3. Time allocation.
4. Effort validation.
Every project has a defined number of people on the software team. As time
allocation occurs, you must ensure that no more than the allocated number
of people has been scheduled at any given time.
5. Defined responsibilities.
6. Defined outcomes.
Every task that is scheduled should have a defined outcome. For software
projects, the outcome is normally a work product (e.g., the design of a
component) or a part of a work product.
2
7. Defined milestones.
1. When software size is small single person can handle same project.
4. A project can be completed soon if more people are added in early stage
of project development. It also possible to expand the completion date by
reducing number of resources.
3
6. If we want to deliver the software fast (at time t d ), then curve rises very
sharply to left of td. The pnr curve indicates that project delivery time should
not be compressed much behind on td.
L= P × E1/3 T3/4
where E is the effort (in person-years) t is the development time (in years).
4
yields:
This implies that, by extending the end date by 6 months, we can reduce the
number of people from eight to four!
Activity on Edge (AoE): In this representation tasks are associated with the
edges. The edges are also marked with the task duration. The nodes in the
graph represent project milestones.
5
FIGURE: Activity network representation of the MIS problem.
[5]. Scheduling
Project scheduling is used to define start and end dates to individual tasks
and allocating appropriate resources within an estimated budget. It only
focuses on the tasks, their deadlines and project dependencies.
When creating a software project schedule, we begin with a set of tasks (the
work breakdown structure). In addition, tasks may be assigned to specific
individuals. As a consequence of this input, a time-line chart, also called a
Gantt chart, is generated. A time-line chart can be developed for the entire
project. Alternatively, separate charts can be developed for each project
function or for each individual working on the project.
6
Each activity listed on the left-hand side of a Gantt chart has a colored bar
next to it.
The position and length of that bar depends on the activity’s timeline and
duration: when it starts and when it ends.
For example, in the daily project status Gantt chart above, Activity 1 (Task 1) will take place
from March 3 to 7 and then from March 10 to 13. The due date is Thursday of that week.
Each week is color coded.
7
8
[6]. PERT charts
9
PERT Chart Creation Steps
A business case
A communication plan
An initial kickoff meeting
After the step 3, overall project time frame is prepared using the critical
path method (CPM) and the PERT formula. The critical path is the longest
sequence of tasks that must be completed to successfully finish an entire
project.
You can use the PERT formula to calculate the expected duration of a task
and completion time using: (O + (4 × M) + P) ÷ 6. This can be measured by
minutes, hours, days, or even weeks.
10
For example, if the optimistic time is 30 minutes, the pessimistic time is 60
minutes, and the most likely time is 45 minutes, the PERT formula would
be: (30min + (4 × 45min) + 60min) ÷ 6 = 45 minutes.
Once you’ve calculated the expected time per task, you can then add each of
the estimates of your critical path together to get an average project
timeline.
The final step in creating a PERT chart is to manage task progress to project
completion. This can be done by closing dependencies and mitigating issues
along the way until all tasks and project milestones are completed.
Another Example
11
[7]. Staffing
Software project managers select their project team members. Therefore,
they need to identify good software developers for the success of the
project. The worst developers may reduce the overall productivity of the
team. Therefore, choosing good software developers is crucial to the success
of a project. Thus, staffing is the process that includes possession, retention,
promotion, and compensation of the human capital, that is, the most
important resource of the organization.
Staffing Process
1. Manpower Planning
The difference between workload and workforce defines the shortage and
surplus of manpower. Excess workload indicates understaffing, i.e., the
need of appointing more people and excess workforce indicates
overstaffing, i.e., need to remove or transfer some employees to other
places.
12
2. Recruitment
3. Selection
Selection is the process of choosing and appointing the right candidates for
various job positions in the organization. It involves many steps such as
screening, filling-in application, written test, interviews, medical
examination, checking references, and issuing a letter of appointment to the
candidates. The most suitable candidates are selected.
Under this process, every selected candidate is assigned a job most suitable
for him. The purpose of placement is to fit the right person to the right job
so that the efficiency of work is high and the employees get personal
satisfaction.
Every individual must be given a chance to rise to the top. For this,
organizations either provide training themselves within the organization or
through external institutions. This is beneficial for the organization as well.
13
The employees will be able to perform even better for the organization with
greater efficiency and productivity.
6. Performance appraisal
8. Compensation
14
Monitor and control project work: The generic step under which all other
monitoring and controlling activities fall under.
Control scope: Ensuring that the scope of the project does not change and
that unauthorized activities are not performed as part of the plan (scope
creep).
Control schedule: The functions involved with ensuring the project work is
performed according to the schedule, and that project deadlines are met.
Control costs: The tasks involved with ensuring the project costs stay
within the approved budget.
15
The results (deliverables) of a software consist of a large number of objects,
e.g., source code, design document, SRS document, test document, user’s
manual, etc. These objects are modified by a number of software developers
throughout the life cycle of the software. As a software is changed, new
revisions and versions get created.
Configuration identification
Project managers normally classify the objects into three main categories—
controlled, precontrolled, and uncontrolled.
Controlled objects are those that are already under configuration control.
Precontrolled objects are not yet under configuration control, but will
eventually be under configuration control.
16
Configuration control
Importance of SCM
17
1. Better quality control: SCM helps to manage the development process in
a more organized manner. This leads to better quality control and reduces
the risk of errors.
2. Version control: SCM helps to keep track of different versions of the
software. This is particularly useful when working on large projects or
when collaborating with multiple developers.
3. Improved collaboration: SCM tools enable developers to work
collaboratively on projects. They can share code, track changes, and
manage conflicts more effectively.
4. Automated builds and testing: SCM tools can automate the build and
testing process, making it easier to maintain and deploy the software.
5. Faster release cycles: SCM can help to speed up the release cycles of
software products. By automating the build and testing process, developers
can release new features and fixes more quickly.
6. Traceability: SCM provides a complete history of the software
development process, making it easier to track changes and understand the
evolution of the product over time.
Overall, SCM helps to improve the efficiency, quality, and reliability of the
software development process.
Example:
Instead of naming a File login.php its should be named login_v1.2.php where
v1.2 stands for the version number of the file
Instead of naming folder “Code” it should be named “Code_D” where D
represents code should be backed up daily.
A baseline configuration is a known state of configuration that will
successfully operate the dependent software without error.
2. Version control – Creating versions/specifications of the existing product to
build new products with the help of the SCM system. A description of the version is
given below:
18
Suppose after some changes, the version of the configuration object changes from
1.0 to 1.1. Minor corrections and changes result in versions 1.1.1 and 1.1.2, which is
followed by a major update that is object 1.2. The development of object 1.0
continues through 1.3 and 1.4, but finally, a noteworthy change to the object results
in a new evolutionary path, version 2.0. Both versions are currently supported.
3. Change control – Controlling changes to Configuration items (CI). The change
control process is explained in Figure below:
A change request (CR) is submitted and evaluated to assess technical merit, potential
side effects, the overall impact on other configuration objects and system functions,
and the projected cost of the change. The results of the evaluation are presented as a
19
change report, which is used by a change control board (CCB) —a person or group
who makes a final decision on the status and priority of the change. An engineering
change Request (ECR) is generated for each approved change. Also, CCB notifies
the developer in case the change is rejected with proper reason. The ECR describes
the change to be made, the constraints that must be respected, and the criteria for
review and audit. The object to be changed is “checked out” of the project database,
the change is made, and then the object is tested again. The object is then “checked
in” to the database and appropriate version control mechanisms are used to create the
next version of the software.
4. Configuration auditing – A software configuration audit is a technical review
of the process and product. It focuses on the technical correctness of the
configuration object that has been modified. The audit confirms the completeness,
correctness, and consistency of items in the SCM system.
5. Reporting – Providing accurate status and current configuration data to
developers, testers, end users, customers, and stakeholders through admin guides,
user guides, FAQs, Release notes, Memos, Installation Guide, Configuration guides,
etc.
This is the platform where a project will be tested. Here, all modules are
assembled and are checked that whether all modules are working properly
or not. This environment will change frequently, probably daily, and is
subject to being “broken” at any given time due to all the activity. So
developing a test environment helps in successful s/w development.
This will be the environment where the application is “staged” and where
quality assurance testing is done. Project manager will be able to use this
environment to demonstrate the project/ product to stakeholders at various
stages of production.
3. UI environment
To verify that user interface will behave in the desired way, developers may
need to set up an isolated environment for testing the design and interface.
20
When developers add changes to the system, this pipeline will ensure that
the changes initiate an automatic response. The system changes the product,
which triggers a suite of automated tests to detect the errors in the code. The
system then runs a report of which tests passed and failed. After this, the
code will be automatically deployed.
A great way to determine type of training is to get feedback from your team.
They might be able to provide one or more areas where they want more
experience.
After training ends, you can measure its success by evaluating the
performance levels of individual participants.
Bug Fixing: The process of finding and fixing errors and problems in the
software.
22
Enhancements: The process of adding new features or improving existing
features.
23
risks. The goal is to reduce operational costs, enhance system performance,
and optimize resources.
1. Technological Advancements
2. Changing Business Requirements
3. High Maintenance Costs
4. Security Risks
Retirement Process
5. Testing: During system retirement, we must test the migration tools. The
effect of retirement on business is also estimated.
6. Migrate users: We can not turn off access to old system in a day. Users
must be by notified for the upcoming retirement.
24
8. System removal. This is often a complex task. It’s a good idea to take a
complete backup of your system before you begin the system retirement.
Baseline control
Types of interfaces
Hardware interfaces
25
Hardware interfaces help various hardware devices connect and
communicate with each other. Some common hardware interfaces in
computing are:
Serial interfaces (They transmit data as single streams of items and act as
communication interfaces between two digital systems)
Software interfaces
Operating systems
Simple Mail Transfer Protocol (SMTP) email
IP network protocols
Software drivers
User interfaces
26
[19]. Submitting Change Request
A change request is made to change functionality of a project.
27
security checks and other process monitoring tasks to evaluate system
performance and to identify problems.
Here are some of the general types of tools for configuration management:
These tools track software changes, such changes in the source code
and application code.
D. Artifact repositories
This type of software tracks and manages issues, and bugs throughout the
development process.
28