SOFTWARE ENGINEERING AND PROJECT
UNIT - 1
INTRODUCTION TO SOFTWARE ENGINEERING
✓ Software Engineering Definition
✓ Importance of Software Engineering
✓ Applications of Software Engineering
What is software?
➢ Software is a set of a program associated with documentation and configuration data that is
needed to make these programs operate correctly.
➢ A software system usually consists: of a number of separate programs, configuration files, which are
used to set up these programs, system documentation, which describes thestructure of the system, and
user documentation, which explains how to use the system and web sites or users to download recent
product information.
➢ Software products may be
Generic - developed to be sold to a range of different customers
Bespoke (custom) developed for a single customer according to their specification
Definition of Software Engineering
IEEE Definition:
The application of a systematic, disciplined, quantifiable approach to the development, operation,
and maintenance of software.
OR
The practical application of scientific knowledge in the design and construction of computer
programs and the associated documentation required to develop, operate, and maintain them.
(Boehm).
Software Engineering is the process of designing, developing, testing, and maintaining software. It is a
systematic and disciplined approach to software development that aims to create high-quality, reliable, and
maintainable software. Software engineering includes a variety of techniques, tools, and methodologies,
including requirements analysis, design, testing, and maintenance.
Key Principles of Software Engineering
• Modularity: Breaking the software into smaller, reusable components that can be developed and tested
independently.
• Abstraction: Hiding the implementation details of a component and exposing only the necessary
functionality to other parts of the software.
• Encapsulation: Wrapping up the data and functions of an object into a single unit, and protecting the
internal state of an object from external modifications.
• Reusability: Creating components that can be used in multiple projects, which can save time and resources.
Er. Uday Adhikari 1
SOFTWARE ENGINEERING AND PROJECT
• Maintenance: Regularly updating and improving the software to fix bugs, add new features, and address
security vulnerabilities.
• Testing: Verifying that the software meets its requirements and is free of bugs.
• Design Patterns: Solving recurring problems in software design by providing templates for solving them.
• Agile methodologies: Using iterative and incremental development processes that focus on customer
satisfaction, rapid delivery, and flexibility.
• Continuous Integration & Deployment: Continuously integrating the code changes and deploying them
into the production environment.
Software engineering is a rapidly evolving field, and new tools and technologies are constantly being developed to
improve the software development process. By following the principles of software engineering and using the
appropriate tools and methodologies, software developers can create high-quality, reliable, and maintainable
software that meets the needs of its users.
Software Engineering is mainly used for large projects based on software systems rather than single programs or
applications. The main goal of Software Engineering is to develop software applications for improving
quality, budget, and time efficiency. Software Engineering ensures that the software that has to be built should be
consistent, correct, also on budget, on time, and within the required requirements.
Objectives of Software Engineering
• To improve quality of software products
• To increase customer satisfaction
• To increase productivity
• To increase job satisfaction
Software engineering is not programming. Programming is an important part of software engineering. “This is not
a programming course”
Historical Background
• Early days of computing, programs were written to make hardware work
• Programming was not a discipline, more like a hobby or “art form”
• However, computer developments require larger programs to be developed e.g. compilers and operating
systems
• Programming becomes a profession.
• The term 'software engineering' was suggested at conferences organized by NATO in 1968 and 1969 to
discuss the 'software crisis'.
• The software crisis was the name given to the difficulties encountered in developing large, complex systems
in the 1960s. It was proposed that the adoption of an engineering approach to software development would
reduce the costs of software development and lead to more reliable software.
Software Crisis
• The large programming projects required many programmers working together
• The projects were not delivered on time and costs more than initial budget
• software crisis-the problem associated with software development
• The software crisis means problem encountered during the software development.
Er. Uday Adhikari 2
SOFTWARE ENGINEERING AND PROJECT
The software crisis has the following characteristic:
1. Expensive delivery
2. Extremely late.
3. Unsatisfactory software system.
4. Viability to complete.
5. Over budget
6. Not according to the requirements of the user.
Reason for software Crisis:
There are three main reasons occurs for the software crises. These are written below as
1. Cost of software is more than hardware.
2. Lack of communication between software engineer and user
3. Growing size and complexity of the programs.
Need for Software Engineering
The need of software engineering arises because of higher rate of change in user requirements
and environment on which the software is working.
1. Large software - It is easier to build a wall than to a house or building, likewise, as the size of software
become large engineering has to step to give it a scientific process.
2. Scalability- If the software processes were not based on scientific and engineering concepts, it would
be easier to re-create new software than to scale an existing one.
3. Cost- As hardware industry has shown its skills and huge manufacturing has lower down theprice of
computer and electronic hardware. But the cost of software remains high if properprocess is not adapted.
4. Dynamic Nature- The always growing and adapting nature of software hugely depends upon the
environment in which user works. If the nature of software is always changing, new enhancements
need to be done in the existing one. This is where software engineering plays a good role.
5. Quality Management- Better process of software development provides better and qualitysoftware
product.
What is the difference between software engineering and computer science?
Computer science is concerned with theory and fundamentals; software engineering is concerned with the
practicalities of developing and delivering useful software.
Computer science theories are currently insufficient to act as a complete underpinning for softwareengineering
What is the difference between System engineering and Software engineering?
➢ System engineering is concerned with all aspects of computer-based systems
development including hardware, software and process engineering.
➢ System engineers are involved in system specification, architectural design, integration and
deployment.
➢ Software engineering is part of this process concerned with developing the software
infrastructure, control, applications and databases in the system.
Er. Uday Adhikari 3
SOFTWARE ENGINEERING AND PROJECT
S.No. SYSTEM ENGINEER SOFTWARE ENGINEER
A System Engineer is a person who deals with A Software Engineer is a person who deals
the overall management of engineering projects with the designing and developing good
01.
during their life cycle (focusing more on quality of software applications/software
physical aspects). products.
System Engineers follow an interdisciplinary Software Engineers follow a systematic and
approach governing the total technical and disciplined approach for software design,
02.
managerial effort required to transform development, deployment and maintenance
requirements into solutions. of software applications.
In general they are concerned with all
In general they are concerned with all aspects of
aspects of software development,
03. computer based system development including
infrastructure, control, applications and
hardware, software and process engineering.
databases in the system.
One thing software engineering can learn from One thing system engineering can learn from
04. system engineering i.e Consideration of trade- software engineering i.e Disciplined
offs and use of framework methods. approach to cost estimation.
System engineers mostly focus on users and Software engineers mostly focus on
05.
domains. developing good software.
Systems Engineering Methods are Stakeholder Software Engineering Methods are
Analysis, Interface Specification, Design Modeling, Incremental Verification and
06. Tradeoffs, Configuration Management, Validation, Process Improvement, Model-
Systematic Verification and Validation, Driven Development, Agile Methods,
Requirements Engineering etc. Continuous Integration etc.
It ensures correct external interfaces, interfaces It makes interfaces among software module,
07.
among subsystems and software. data and communication path work.
System Engineers requires a broader education While Software Engineers requires
08. background like Engineering, Mathematics and Computer Science or Computer Engineering
Computer science etc. background.
Er. Uday Adhikari 4
SOFTWARE ENGINEERING AND PROJECT
Main Attributes of Software Engineering - Software Engineering is a systematic, disciplined, quantifiable study
and approach to the design, development, operation, and maintenance of a software system. There are Four main
Attributes of Software Engineering.
• Efficiency
• Reliability
• Robustness
• Maintainability
Advantages of Software Engineering
There are several advantages to using a systematic and disciplined approach to software development, such as:
• Improved Quality: By following established software engineering principles and techniques, the software
can be developed with fewer bugs and higher reliability.
• Increased Productivity: Using modern tools and methodologies can streamline the development process,
allowing developers to be more productive and complete projects faster.
• Better Maintainability: Software that is designed and developed using sound software engineering
practices is easier to maintain and update over time.
• Reduced Costs: By identifying and addressing potential problems early in the development process,
software engineering can help to reduce the cost of fixing bugs and adding new features later on.
• Increased Customer Satisfaction: By involving customers in the development process and developing
software that meets their needs, software engineering can help to increase customer satisfaction.
• Better Team Collaboration: By using Agile methodologies and continuous integration, software
engineering allows for better collaboration among development teams.
• Better Scalability: By designing software with scalability in mind, software engineering can help to ensure
that software can handle an increasing number of users and transactions.
• Better Security: By following the Software Development Life Cycle (SDLC) and performing security
testing, software engineering can help to prevent security breaches and protect sensitive data.
Disadvantages of Software Engineering
While Software Engineering offers many advantages, there are also some potential disadvantages to consider:
• High upfront costs: Implementing a systematic and disciplined approach to software development can be
resource-intensive and require a significant investment in tools and training.
• Limited flexibility: Following established software engineering principles and methodologies can be rigid
and may limit the ability to quickly adapt to changing requirements.
• Complexity: With the increase in the number of tools and methodologies, software engineering can be
complex and difficult to navigate.
• Limited creativity: The focus on structure and process can stifle creativity and innovation among
developers.
• High learning curve: The development process can be complex, and it requires a lot of learning and
training, which can be challenging for new developers.
• High dependence on tools: Software engineering heavily depends on the tools, and if the tools are not
properly configured or are not compatible with the software, it can cause issues.
• High maintenance: The software engineering process requires regular maintenance to ensure that the
software is running efficiently, which can be costly and time-consuming.
Er. Uday Adhikari 5
SOFTWARE ENGINEERING AND PROJECT
What are the attributes of good software?
➢ The software should deliver the required functionality and performance to the user andshould be
maintainable, dependable and acceptable.
➢ Maintainability: Software must evolve to meet changing needs;
➢ Dependability: Software must be trustworthy; (it has a range of characteristic, including
reliability, security and safety).
➢ Efficiency: Software should not make wasteful use of system resources;
➢ Acceptability/Usability: Software must accept by the users for which it was designed. This means it
must be understandable, usable and compatible with other systems.
What are the key challenges facing software engineering?
• Heterogeneity: Developing techniques for building software that can cope withheterogeneous
platforms and execution environments;
• Delivery: Developing techniques that lead to faster delivery of software;
• Trust: Developing techniques that demonstrate that software can betrusted by its users.
Types of Software Engineering Application:
1. Stand-alone applications:
Stand-alone applications in software engineering are often tools or utilities that help developers with specific
tasks. For example, an integrated development environment (IDE) like Visual Studio or IntelliJ IDEA is a
stand-alone application used for writing, testing, and debugging code. These applications are typically
installed on a developer's local machine and provide all the necessary tools and functionality for software
development.
2. Interactive transaction-based applications:
Interactive transaction-based applications can be used in software engineering for collaborative
development and project management. For instance, web-based project management tools like JIRA or
Trello allow developers to access and update project information from their own PCs or terminals. These
tools facilitate real-time collaboration and issue tracking among development teams.
3. Embedded control systems:
Software engineers play a crucial role in developing the software components of embedded control systems.
They design, program, and test the software that controls hardware devices such as microcontrollers in IoT
devices, automotive engine control units (ECUs), and industrial automation systems. The software is
typically written in low-level languages like C or C++ to ensure precise control.
4. Batch processing systems:
In software engineering, batch processing systems are often used for tasks such as data extraction,
transformation. Engineers create software to automate these processes, allowing for the efficient processing
of large datasets. Tools like Apache Spark and Hadoop are commonly used for batch data processing in big
data applications.
Er. Uday Adhikari 6
SOFTWARE ENGINEERING AND PROJECT
5. Entertainment systems:
Entertainment systems developed by software engineers can include video games, multimedia applications,
and virtual reality experiences. Engineers are responsible for designing and implementing the software that
powers these systems, including graphics rendering, physics engines, and user interfaces.
6. Systems for modeling and simulation:
Software engineers collaborate with scientists and engineers in various fields to develop modeling and
simulation software. This software is used to simulate and analyze complex systems or phenomena. For
example, engineers may create simulation software for testing the aerodynamics of a new aircraft design or
modeling the behavior of financial markets.
7. Data collection systems:
Software engineers design and build data collection systems for various purposes. For example, in
environmental monitoring, engineers develop software to collect data from sensors deployed in remote
locations and transmit it to central servers for analysis. This software ensures the reliable capture and
transmission of data.
8. Systems of systems:
In large-scale software engineering projects, especially those in domains like aerospace or defense, systems
of systems are common. Software engineers work on integrating and coordinating multiple software systems
to ensure they work together seamlessly. This involves designing communication protocols, interfaces, and
data exchange mechanisms between these systems.
Application of software Engineering.
1. Web Development:
• Building websites and web applications for businesses, organizations, and individuals.
• Developing e-commerce platforms for online shopping and transactions.
• Creating content management systems (CMS) for managing website content.
2. Mobile App Development:
• Designing and developing mobile applications for iOS, Android, and other mobile platforms.
• Building mobile games and entertainment apps.
• Developing utility apps for tasks like communication, navigation, and productivity.
3. Embedded Systems:
• Designing software for embedded systems in devices like IoT devices, medical equipment,
automotive control units, and home automation systems.
• Writing firmware to control and manage hardware components in embedded systems.
4. Enterprise Software:
• Developing software for businesses and organizations to manage various functions such as customer
relationship management (CRM), enterprise resource planning (ERP), and human resources
management (HRM).
Er. Uday Adhikari 7
SOFTWARE ENGINEERING AND PROJECT
•Creating database management systems (DBMS) and data analysis tools for enterprises.
5. Gaming Industry:
• Creating video games for various platforms, including consoles, PC, mobile, and virtual reality (VR).
• Designing game engines, graphics, physics, and AI for interactive gaming experiences.
6. Scientific and Research Applications:
• Building software for scientific modeling and simulations in fields like physics, chemistry, biology,
and climate science.
• Developing research tools and data analysis software for scientific research.
7. Healthcare and Medical Software:
• Creating electronic health record (EHR) systems for healthcare institutions.
• Developing medical imaging and diagnostic software.
• Designing health and wellness mobile apps and wearable technology.
8. Aerospace and Defense:
• Developing software for aircraft control systems, navigation, and communication.
• Building simulation software for training pilots and military personnel.
• Creating software for defense systems and cybersecurity.
9. Automotive Industry:
• Designing software for vehicle control systems, including engine management, safety systems, and
infotainment.
• Developing autonomous driving software for self-driving cars.
10. Financial Services:
• Creating software for banking systems, online trading platforms, and financial analytics.
• Designing software for risk assessment, fraud detection, and algorithmic trading.
11. Entertainment and Media:
• Building multimedia and streaming applications for audio and video content delivery.
• Developing content creation and editing software for the entertainment industry.
12. Education and E-Learning:
• Creating e-learning platforms, online courses, and educational apps.
• Developing software for virtual classrooms and interactive educational content.
Er. Uday Adhikari 8
SOFTWARE ENGINEERING AND PROJECT
UNIT - 2
PROJECT MANAGEMENT TECHNIQUES
✓ Introduce project development techniques.
✓ Introduce PERT and its implementation.
✓ Introduce CPM and its implementation.
✓ Demonstrate the implementation of project management techniques in real world.
WHAT IS A PROJECT?
A project is an activity that :
• is temporary having a start and end date
• is unique
• brings about change
• has unknown elements, which
therefore, create risk
Generally, projects are formed to solve a problem or take advantage of an opportunity.
A project contains a well-defined objective. The project objective is defined in terms of scope ( or requirements),
schedule, and cost.
• A project is carried out via a set of interdependent tasks.
• A project uses various resources to carry out these tasks.
CHARACTERISTICS OF PROJECTS
• A project has a definite start date and an expected completion date. The actual completion date may not
always be the same as the expected date.
• A project is a one time or unique endeavor. ( i.e. goal )
• A project has a customer.
COMMON PROJECT TERMS
• Deliverables: Tangible ‘things’ that the project produces
• Milestones: Dates by which major activities are performed.
• Tasks: Also called Actions. Activities undertaken during the project
• Risks: Potential problems that may arise
• Issues: Risks that have happened
• Gantt Chart: A specific type of chart showing time and tasks. Usually created by a Project Management
program like MS Project.
• Stakeholder: Any person or group of people who may be affected by your project
Project management is the process of planning, organizing, and overseeing the execution of a project from
start to finish. It involves defining the project's goals, scope, timeline, and resources, as well as managing
risks and ensuring that the project is completed within budget and on schedule.
Er. Uday Adhikari 9
SOFTWARE ENGINEERING AND PROJECT
Key components of project management include:
Project Initiation: Identifying the need for the project, defining its objectives, and conducting a feasibility
study to determine whether the project is viable.
Project Planning: Developing a detailed project plan, including defining tasks, setting deadlines, allocating
resources, and creating a budget.
Project Execution: Putting the plan into action by assigning tasks to team members, managing resources,
and ensuring that the project progresses according to the schedule.
Project Monitoring and Control: Keeping track of the project's progress, identifying and addressing
issues, and making necessary adjustments to stay on track.
Project Closure: Finalizing all activities, evaluating the project's success, and documenting lessons learned
for future projects.
Project management methodologies like Agile, Scrum, Waterfall, and PRINCE2 provide different
frameworks and approaches to managing projects.
Project management techniques refer to the various methodologies, tools, and practices used to plan, execute,
and control projects effectively. These techniques help project managers and teams achieve their project goals
efficiently and within specified constraints, such as time, budget, and resources. Below are some commonly used
project management techniques:
1. Work Breakdown Structure (WBS): This technique involves breaking down the project into smaller,
manageable tasks and sub-tasks. It helps in organizing the work and understanding the project's scope better.
2. Gantt Chart: A Gantt chart is a visual representation of a project schedule, showing tasks, their durations,
dependencies, and milestones. It helps in tracking progress and identifying critical paths.
3. Critical Path Method (CPM): CPM is used to identify the longest sequence of dependent tasks in a project.
It helps in determining the minimum time needed to complete the project and identifies tasks that must be
completed on time to avoid delays.
4. PERT (Program Evaluation and Review Technique): PERT is a statistical tool used to analyze the time
needed to complete a project. It considers uncertainty and variations in task durations to create a more
realistic schedule.
5. Agile Methodology: Agile is an iterative and incremental approach to project management, commonly used
in software development. It emphasizes collaboration, flexibility, and adaptability to changing requirements.
6. Scrum: A specific Agile framework, Scrum involves short, time-boxed iterations called sprints. It promotes
daily stand-up meetings, regular retrospectives, and continuous improvement.
Er. Uday Adhikari 10
SOFTWARE ENGINEERING AND PROJECT
7. Kanban: Another Agile technique, Kanban uses visual boards to manage tasks and workflow. It helps teams
visualize work in progress, identify bottlenecks, and optimize the flow of work.
8. Risk Management: This involves identifying potential risks that may impact the project's success and
developing strategies to mitigate or respond to these risks.
9. Earned Value Management (EVM): EVM is a project performance measurement technique that helps
assess a project's progress by comparing planned work, actual work, and budget.
10. Stakeholder Analysis: Understanding and managing stakeholders' interests, expectations, and influence on
the project is critical for success.
Needs of Project Management Techniques:
Project management techniques address several critical needs:
• Efficient Resource Utilization: Techniques help allocate resources effectively, preventing overallocation
or underutilization.
• Risk Management: Identification and mitigation of risks to minimize their impact on project outcomes.
• Communication: Clear and structured communication among team members, stakeholders, and clients.
• Quality Control: Ensuring that project deliverables meet quality standards.
• Cost Control: Monitoring and managing project costs to stay within budget.
• Schedule Management: Keeping projects on track and meeting deadlines.
• Scope Management: Defining and controlling the project's scope to prevent scope creep.
Objectives of Project Management Techniques:
The primary objectives of using project management techniques include:
• Delivering projects on time and within budget.
• Achieving project goals and objectives.
• Minimizing risks and addressing issues promptly.
• Efficiently utilizing resources.
• Enhancing communication and collaboration among project stakeholders.
• Ensuring the quality of project deliverables.
• Adapting to changes in project scope or requirements.
Advantages of Project Management Techniques:
• Improved Efficiency: Project management techniques help streamline workflows and resource allocation,
leading to higher productivity.
• Enhanced Communication: Techniques facilitate clear and effective communication among project team
members and stakeholders.
• Effective Risk Management: Identifying and addressing risks early reduces the likelihood of project
disruptions.
• Better Quality Control: Techniques ensure that project deliverables meet specified quality standards.
Er. Uday Adhikari 11
SOFTWARE ENGINEERING AND PROJECT
• Predictable Outcomes: With proper planning and monitoring, project managers can predict project
outcomes and make informed decisions.
• Client Satisfaction: Meeting project objectives on time and within budget leads to satisfied clients and
stakeholders.
Disadvantages of Project Management Techniques:
• Complexity: Some techniques can be complex and require training and expertise to use effectively.
• Overhead: Implementing project management techniques can introduce administrative overhead and
paperwork.
• Resistance to Change: Team members may resist adopting new processes and techniques.
• Not One-Size-Fits-All: Not all techniques are suitable for every project. Choosing the wrong approach
can lead to inefficiencies.
• Rigidity: Over-reliance on rigid project management methodologies can hinder adaptability in rapidly
changing environments.
Remember that the choice of project management techniques depends on the nature and complexity of the project,
the team's preferences, and the organization's culture. It's common to tailor and combine different techniques to
suit specific project requirements. We will discuss -
1. Project Evaluation and Review Technique (PERT) :
PERT is appropriate technique which is used for the projects where the time required or needed to complete
different activities are not known. PERT is majorly applied for scheduling, organization and integration of
different tasks within a project. It provides the blueprint of project and is efficient technique for project
evaluation.
2. Critical Path Method (CPM) :
CPM is a technique which is used for the projects where the time needed for completion of project
is already known. It is majorly used for determining the approximate time within which a project can be
completed. Critical path is the largest path in project management which always provide minimum time
taken for completion of project.
PERT (Program Evaluation and Review Technique) and its implementation.
The program evaluation and review technique (PERT) is a statistical tool used in project management, which was
designed to analyze and represent the tasks involved in completing a given project.
PERT is a method of analyzing the tasks involved in completing a given project, especially the time needed to
complete each task, and to identify the minimum time needed to complete the total project. It incorporates
uncertainty by making it possible to schedule a project while not knowing precisely the details and durations of all
the activities. It is more of an event-oriented technique rather than start- and completion-oriented, and is used more
in those projects where time is the major factor rather than cost. It is applied on very large-scale, one-time, complex,
non-routine infrastructure and on Research and Development projects.
Er. Uday Adhikari 12
SOFTWARE ENGINEERING AND PROJECT
History
PERT was developed in the late 1950s by the Navy Special Projects Office in cooperation with the management
consulting firm of Booz, Allen, and Hamilton. The technique received substantial favorable publicity for its use
in the engineering and development program of the Polaris missile, a complicated project that had 250 prime
contractors and over 9,000 subcontractors. Since that time, it has been widely adopted in other branches of
government and in industry and has been applied to such diverse projects as construction of factories, buildings,
and highways, research management, product development, the installation of new computer systems, and so on.
Today, many firms and government agencies require all contractors to use PERT.
PERT offers a management tool, which relies "on arrow and node diagrams of activities and events: arrows
represent the activities or work necessary to reach the events or nodes that indicate each completed phase of the
total project."
Fig. Network diagram or PERT Chart
What is a PERT chart?
PERT (program evaluation and review technique) charts are a graphical representation of a project’s timeline,
tasks, and the dependencies between those tasks.
PERT network charts are used during the planning phase of your project to map out your project and understand
the process for completion, typically as part of a feasibility study.
A PERT chart will show how long it will take to deliver a project down to the individual task completion times,
which tasks are connected to which, and who is responsible for those tasks. These charts are an essential
ingredient for nailing down your project scope.
How to develop a PERT chart
Step 1: List out your project milestones and tasks.
Milestones, or deliverables, are kind of like the checkpoints in a racing video game, and every
turn, pass, or straightaway you drive are the tasks you perform to complete those checkpoints.
Er. Uday Adhikari 13
SOFTWARE ENGINEERING AND PROJECT
Step 2: Identify the sequence of those tasks.
Milestones and tasks necessary to complete your project, so now it’s time to put those tasks into
the correct sequence for completion.
Step 3: Determine the time criteria for your tasks.
This is the most technical step of the PERT diagram creation process there are three specific time
criteria we have to figure out for each task:
1. Earliest start date/time (ESD/EST)
2. Earliest finish date/time (EFD/EFT)
3. Time to complete
Step 4: Draw up your PERT diagram.
We can create a PERT chart either by drawing one up our self or by generating one using PERT
software.
Step 5: Draw out your critical path.
We can use this chart to identify the critical path of our project. Our critical path is the identification
of the most important steps necessary that’ll help us to determine the minimal duration of our project.
Step 6: Update your PERT chart as needed.
Our PERT chart is a planning tool that is not set in stone. This diagram can be changed whenever
circumstances are altered during the project execution phase.
PERT is a probabilistic method, where the activity times are represented by a probability distribution. This
distribution of activity times is based on three different time estimates made for each activity, which as follows are:
1. Optimistic time estimate. (to or a)
2. Most likely time estimates. (tm or m)
3. Pessimistic time estimate. (tp or p)
For these three estimates, we have to calculate the expected time of an activity.
𝒕𝟎 + 𝟒𝒕𝒎 + 𝒕𝒑
(𝑬𝒔𝒕𝒊𝒎𝒂𝒕𝒆 𝒕𝒊𝒎𝒆 𝒅𝒖𝒓𝒂𝒕𝒊𝒐𝒏) 𝒕𝒆 =
𝟔
Variance of an activity is given by,
𝒕𝒑 − 𝒕𝟎 𝟐
𝝈𝟐 = ( )
𝟔
Er. Uday Adhikari 14
SOFTWARE ENGINEERING AND PROJECT
Q. The following table shows the Jobs of a network along with their time estimates.
Estimated duration ( weeks )
Activity optimistic ( to ) Most likely ( tm ) Pessimistic ( tp )
1-2 1 7 13
1-6 2 5 14
2-3 2 14 26
2-4 2 5 8
3-5 7 10 19
4-5 5 5 17
6-7 5 8 29
5-8 3 3 9
7-8 8 17 32
You are required to:
1. Draw the project network diagram.
2. Find the expected duration and variance of each activity.
3. Calculate the earliest and Latest occurrence for each event.
4. Calculate expected project length.
5. Calculate the variance and standard deviations of project length.
Solution:
1. Draw the project network diagram.
Er. Uday Adhikari 15
SOFTWARE ENGINEERING AND PROJECT
2. Find the expected duration and variance of each activity.
Estimated duration ( weeks ) 𝒕𝒑 − 𝒕𝟎 𝟐
𝒕𝟎 + 𝟒𝒕𝒎 + 𝒕𝒑 𝝈𝟐 = ( )
𝒕𝒆 = 𝟔
𝟔
Activity optimistic ( to ) Most likely ( tm ) Pessimistic ( tp ) Expected duration variance
1-2 1 7 13 7 4
1-6 2 5 14 6 4
2-3 2 14 26 14 16
2-4 2 5 8 5 1
3-5 7 10 19 11 4
4-5 5 5 17 7 4
6-7 5 8 29 11 16
5-8 3 3 9 4 1
7-8 8 17 32 18 16
3. Calculate the Earliest and Latest occurrence for each event.
To calculate the Earliest occurrence for each event, we have to perform the Forward Pass where
The earliest start time for the first event will always be 0. Then,
Earliest Start Time:
It is a forward pass which begins with event 1.
Formula:
Where,
• ESj is the Earliest Start Time of Ending Node;
• ESi is the Earliest Start Time of Starting Node and;
• Dij is the Estimated Duration of Concerned Activity.
• Also, max_i denotes that when an ending node consists of more than one starting nodes, the
highest ESj out of all the values is considered.
Er. Uday Adhikari 16
SOFTWARE ENGINEERING AND PROJECT
To calculate the Latest occurrence for each event, we have to perform the Backward Pass where
The Latest Completion time for the last event will always be last earliest start time. Then,
Latest Completion Time:
It is a backward pass which starts in the reverse order from the last node or event.
Formula:
Where,
• LCi is the Latest Completion Time of Starting Node;
• LCj is the Latest Completion Time of Ending Node and;
• Dij is the Estimated Duration of Concerned Activity.
• Also, min_j signifies that in case of two or more ending nodes for a particular starting node, the least
LCi value is taken into consideration.
Er. Uday Adhikari 17
SOFTWARE ENGINEERING AND PROJECT
4. Calculate expected project length.
Critical Activity: An activity is said to be critical, if the total folat (TFij) for any activity (i,j) is zero.
Critical path conditions:
1) ESi = LFi
2) ESj = LFj
3) ESj - ESi = LFj – LFi = tij
[ 1 – 2 – 3 – 5 – 8 ] is the critical path according to the critical path condition. So, the expected project
length is calculated as:
Expected Project Length = 7 + 14 + 11 + 4 = 36 weeks
5. Calculate the variance and standard deviations of project length.
Look in the Table [2] , [ 1 – 2 – 3 – 5 – 8 ] is the critical path, the variance is underlined ,So,
The Project length Variance (𝝈𝟐 ) = 𝟒 + 𝟏𝟔 + 𝟒 + 𝟏 = 𝟐𝟓
The Project Standard Deviations (𝜎) = 𝟓
Advantages of PERT
The following is a list of PERT's benefits:
1. PERT helps in planning for big projects
The project manager may easily schedule project activities with the aid of the PERT system. This method is used
more frequently in complex, large-scale project work.
2. Critical path visibility in PERT
The critical path will be clearly displayed using the PERT approach. The crucial path is the path that contains tasks
that cannot, under any circumstances, be put off. The project manager will be able to make quick, effective decisions
that will improve the performance of the project with the aid of proper knowledge of the stack values and minimal
dependency circumstances.
Er. Uday Adhikari 18
SOFTWARE ENGINEERING AND PROJECT
3. Analysis of activity in PERT
The PERT networks' activity and events are examined. Both of these are examined separately and jointly. This will
paint a picture of the project's likely completion and the budget.
4. Coordination of PERT
The several construction organization departments will supply the data for the PERT operations. The departments
are well integrated, which will aid in enhancing the project team's capacity for planning and decision-making. The
management of the project's activities will be improved by combining quantitative and qualitative values from a lot
of data. Additionally, this will enhance communication within the organization's various departments.
5. The what-if analysis
By appropriately assessing the critical path, it is possible to learn about the potential outcomes and the various
levels of uncertainty from the project activities. What-if analysis is the term for this kind of analysis. Permutation
and combination operations are carried out for these different sets. The most advantageous mix of them is
considered. The set that is selected will have the lowest cost, most economical operation, and best outcome. The
risk connected to any activity can be determined with the use of this analysis.
Disadvantages of PERT
The following list of PERT's drawbacks includes:
1. Time-oriented method
PERT is a time-focused methodology, so completing tasks or projects by the deadline is crucial. If it doesn't, an
issue might develop.
2. Subjective analysis
In this case, the project tasks are identified in accordance with the information at hand. It is challenging in PERT
projects since it applies to the lone new project area that is not recurring in nature, making the information collection
subjective in nature.
3. Inaccuracy in prediction
Since PERT lacks historical data for a project's framework, prediction is necessary. In the event that the prediction
is incorrect, the project could be ruined.
4. Costly process
In terms of the amount of time, study, forecast, and resources used, it is too expensive.
5. Labour intensive
PERT analysis is labour-intensive in nature. Large and complex networks form as a result of the possibility of a
rise in project activities and the emergence of various task dependencies. This method won't work well for the
project if two tasks share resources.
Er. Uday Adhikari 19
SOFTWARE ENGINEERING AND PROJECT
CPM (Critical Path Method) and its implementation.
The critical path method (CPM), or critical path analysis (CPA), is an algorithm for scheduling a set of project
activities. A critical path is determined by identifying the longest stretch of dependent activities and measuring the
time required to complete them from start to finish. It is commonly used in conjunction with the program evaluation
and review technique (PERT).
History
The CPM is a project-modeling technique developed in the late 1950s by Morgan R. Walker of DuPont and
James E. Kelley Jr. of Remington Rand. Kelley and Walker related their memories of the development of CPM
in 1989. Kelley attributed the term "critical path" to the developers of the PERT, which was developed at about the
same time by Booz Allen Hamilton and the U.S. Navy. The precursors of what came to be known as critical path
were developed and put into practice by DuPont between 1940 and 1943 and contributed to the success of the
Manhattan Project.
Critical path analysis is commonly used with all forms of projects, including construction, aerospace and defense,
software development, research projects, product development, engineering, and plant maintenance, among others.
Any project with interdependent activities can apply this method of mathematical analysis. CPM was used for the
first time in 1966 for the major skyscraper development of constructing the former World Trade Center
Twin Towers in New York City. Although the original CPM program and approach is no longer used, the term is
generally applied to any approach used to analyze a project network logic diagram.
Components
The essential technique for using CPM is to construct a model of the project that includes:
1. A list of all activities required to complete the project (typically categorized within a work breakdown
structure)
2. The time (duration) that each activity will take to complete
3. The dependencies between the activities
4. Logical end points such as milestones or deliverable items
Steps to Finding the Critical Path.
Step 1 - List Project tasks and details
Use a work breakdown structure to list all the project activities or tasks required to produce the
deliverables. The list of activities in the work breakdown structure serves as the foundation for the
rest of the CPM.
Step 2 - Identify task dependencies for the project
Based on your work breakdown structure, determine the tasks that are dependent on one another.
This will also help you identify any work that can be done in parallel with other tasks.
Er. Uday Adhikari 20
SOFTWARE ENGINEERING AND PROJECT
Step 3 - Create a network diagram of task
The next step is to turn the work breakdown structure into a network diagram, which is a flowchart
displaying the chronology of activities. Create a box for each task and use arrows to depict task
dependencies.
Step 4 - Estimate each task duration
To calculate the critical path, the longest sequence of critical tasks, you first need to estimate the
duration of each activity. Try using the forward pass and backward pass technique
Step 5 - Find the critical path based on longest sequence
Calculating the critical path can be done manually, but you can save time by using a critical path
algorithm instead.
Step 6 - Calculate the total float and Free Float
This is the amount of time that an activity can be delayed from the early start date without delaying
the project finish date or violating a schedule constraint. Total float = LS - ES or LF – EF.
There can only be free float when two or more activities share a common successor. On a network
diagram, this is where activities converge. Free float = ES (next task) - EF (current task)
To Finding the Critical Path:
To calculate the Earliest occurrence for each event, we have to perform the Forward Pass where
The earliest start time for the first event will always be 0. Then,
Earliest Event Time:
It is a forward pass which begins with event 1.
Formula:
Where,
• ESj is the Earliest Start Time of Ending Node;
• ESi is the Earliest Start Time of Starting Node and;
• Dij is the Estimated Duration of Concerned Activity.
• Also, max_i denotes that when an ending node consists of more than one starting nodes, the
highest ESj out of all the values is considered.
To calculate the Latest occurrence for each event, we have to perform the Backward Pass where
The Latest Completion time for the last event will always be last earliest start time. Then,
Er. Uday Adhikari 21
SOFTWARE ENGINEERING AND PROJECT
Latest Event Time:
It is a backward pass which starts in the reverse order from the last node or event.
Formula:
Where,
• LCi is the Latest Completion Time of Starting Node;
• LCj is the Latest Completion Time of Ending Node and;
• Dij is the Estimated Duration of Concerned Activity.
• Also, min_j signifies that in case of two or more ending nodes for a particular starting node, the least
LCi value is taken into consideration.
Then,
Critical Activity: An activity is said to be critical, if the total folat (TFij) for any activity (i,j) is zero.
Critical path conditions:
1) ESi = LFi
2) ESj = LFj
3) ESj - ESi = LFj – LFi = tij
Q. A project schedule has the following characteristics.
Activity Time (days)
1-2 4
1-3 1
2-4 1
3-4 1
3-5 6
4-9 5
5-6 4
5-7 8
6-8 1
7-8 2
8 - 10 5
9 - 10 7
You are required to:
1. Construct Network Diagram
2. Compute the earliest event time and Latest event time.
3. Determine the critical path and total project duration.
4. Compute total and free float for each activity.
Er. Uday Adhikari 22
SOFTWARE ENGINEERING AND PROJECT
Solution:
1. Construct Network Diagram
2. Compute the earliest event time and Latest event time.
To calculate the Earliest occurrence for each event, we have to perform the Forward Pass where
The earliest start time for the first event will always be 0. Then,
Earliest Event Time:
It is a forward pass which begins with event 1
Er. Uday Adhikari 23
SOFTWARE ENGINEERING AND PROJECT
Latest Event Time:
It is a backward pass which starts in the reverse order from the last node or event.
Show in the table:
i (tail) ---→ j (head)
Activity Time Earliest Latest
(days) (tij) Start (ES) Finish (EF) Start (LS) Finish (LF)
(Ei) (Ei + tij) (Lj - tij) (Lj)
1-2 4 0 4 5 9
1-3 1 0 1 0 1
2-4 1 4 5 9 10
3-4 1 1 2 9 10
3-5 6 1 7 1 7
4-9 5 5 10 10 15
5-6 4 7 11 12 16
5-7 8 7 15 7 15
6-8 1 11 12 16 17
7-8 2 15 17 15 17
8 - 10 5 17 22 17 22
9 - 10 7 10 17 15 22
Er. Uday Adhikari 24
SOFTWARE ENGINEERING AND PROJECT
3. Determine the critical path and total project duration.
[ 1 – 3 – 5 – 7 – 8 – 10 ] is the critical path according to the critical path condition. So, the expected
project length is calculated as:
Expected Project Length = 1 + 6 + 8 + 2 + 5 = 22 days
4. Compute total and free float for each activity.
Activity Time Earliest Latest Total Float Free
(days) Start Finish Start Start Finish [LS – ES] Float
(tij) (ES) (EF) (Ej) (LS) (LF) Ej - Ei - tij
(Ei) (Ei + tij) (Lj - tij) (Lj)
1-2 4 0 4 4 5 9 5 0
1-3 1 0 1 1 0 1 0 0
2-4 1 4 5 5 9 10 5 0
3-4 1 1 2 5 9 10 8 3
3-5 6 1 7 7 1 7 0 0
4-9 5 5 10 10 10 15 5 0
5-6 4 7 11 11 12 16 5 0
5-7 8 7 15 15 7 15 0 0
6-8 1 11 12 17 16 17 5 5
7-8 2 15 17 17 15 17 0 0
8 - 10 5 17 22 22 17 22 0 0
9 - 10 7 10 17 22 15 22 5 5
Er. Uday Adhikari 25
SOFTWARE ENGINEERING AND PROJECT
Advantages of CPM
1. Better communication
Critical route method schedules call for feedback from important parties at every stage of the project's lifespan. The
timeline becomes more realistic and solid from the outset when the skills of diverse team members &
subcontractors, such as architects, electricians, and construction managers, are combined.
2. Ease in prioritization
Prioritization is made simpler since project managers may more easily define priorities and calculate the float of
each work by identifying the critical path. Slack or float measures how much time a task may be put off before it
affects when it will be finished. The float of non-critical activities is positive, whereas the float of critical path tasks
is zero. Teams can determine the priority of each work by calculating its float. The priority increases as the float
decreases.
3. Improved scheduling accuracy
The critical path approach is a well-liked and dependable tool for enhancing project schedule accuracy. The PERT
analysis helps teams in estimating overall project time and is often used alongside CPM. PERT considers
unpredictable events, while CPM concentrates on predictable activities, resulting in three potential timelines: the
most optimistic, the most pessimistic, and the most realistic. Project managers can produce the most precise
forecasts by combining PERT and CPM.
4. Better risk detection
Due to critical route schedules clearly showing the dependencies between jobs, project managers are better able to
anticipate the ripple effects of a delay. Compared to alternative systems that do not manage dependencies, CPM
offers earlier opportunities for corrections and prevents more surprises.
5. Greater flexibility
Project managers have the capabilities to quickly adjust the timetable when things don't go as planned, thanks to
CPM network diagrams. To compare results and choose the best alternative, project managers might use software
that can even simulate the consequences of various adjustments.
6. More visual impact
Project managers may quickly comprehend the timing and status of a project by using Gantt charts and CPM
network diagrams to illustrate critical path schedules. Team members and project managers can have a more
intuitive sense of a project's trajectory using these visual tools than they might be able to use a less visually
stimulating option.
Disadvantages of CPM
1. Increased complexity
CPM drawbacks include increased complexity and using a method with numerous moving elements called the
critical path. Although the computations can be automated using software, accurate data entry involves extensive
investigation and still carries the danger of human error.
Er. Uday Adhikari 26
SOFTWARE ENGINEERING AND PROJECT
2. Reduced applicability
Not all projects can benefit from the critical route approach. For instance, CPM demands repeatable and predictable
timelines. For creative projects that frequently come together in unforeseen ways, such as product designing or
research work, CPM is not a suitable fit. On the other hand, repetitive or autonomous tasks are not ideal candidates
for CPM. For instance, dozens of machines may need to be cleaned as part of a weekly maintenance schedule, but
the sequence in which they are serviced is irrelevant. Since there are no activity constraints and no critical route in
this situation, CPM is not useful.
3. Limited attention to high-float activities
When using the CPM, project managers concentrate on the tasks that are on the critical path. Even though the
critical route does affect the overall project duration, employing this strategy can make it simpler to disregard low-
priority or floaty activities, which can cause delays. A new building's electrical system installation, for instance, is
not a critical path task because it may be completed over a long period of time. However, project managers can still
affect the completion schedule if they overlook wiring work or put it off for too long.
S.No. PERT CPM
PERT is that technique of project management CPM is that technique of project management
1. which is used to manage uncertain (i.e., time is not which is used to manage only certain (i.e., time is
known) activities of any project. known) activities of any project.
It is event oriented technique which means that It is activity oriented technique which means that
2.
network is constructed on the basis of event. network is constructed on the basis of activities.
3. It is a probability model. It is a deterministic model.
4. It is appropriate for high precision time estimation. It is appropriate for reasonable time estimation.
5. It has Non-repetitive nature of job. It has repetitive nature of job.
There is no chance of crashing as there is no There may be crashing because of certain time
6.
certainty of time. boundation.
It uses dummy activities for representing sequence
7. It doesn’t use any dummy activities.
of activities.
It is suitable for projects which required research
8. It is suitable for construction projects.
and development.
Er. Uday Adhikari 27