0% found this document useful (0 votes)
12 views32 pages

Unit 1 Notes

The document provides an overview of software engineering, highlighting its evolving role in modern society, including automation, connectivity, and data analysis. It discusses the changing nature of software, emphasizing cloud computing, AI, and user-centric design, as well as outlining a generic process for software development. Additionally, it covers various software project management activities and process models, such as the Waterfall, Incremental, and Spiral models, detailing their advantages and disadvantages.

Uploaded by

haramiboy8757
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views32 pages

Unit 1 Notes

The document provides an overview of software engineering, highlighting its evolving role in modern society, including automation, connectivity, and data analysis. It discusses the changing nature of software, emphasizing cloud computing, AI, and user-centric design, as well as outlining a generic process for software development. Additionally, it covers various software project management activities and process models, such as the Waterfall, Incremental, and Spiral models, detailing their advantages and disadvantages.

Uploaded by

haramiboy8757
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

UNIT 1

INTRODUCTION TO SOFTWARE ENGINEERING

The Evolving Role of Software


1. Foundation of Modern Society: Software has become the backbone of modern society,
underpinning almost every aspect of daily life. From the moment we wake up to the time we
go to sleep, software influences how we interact with the world.
2. Automation and Efficiency: One of the primary roles of software is to automate
repetitive and complex tasks, thereby increasing efficiency and reducing human error. This
automation spans across various industries, including manufacturing, healthcare, finance,
and more.
3. Connectivity and Communication: Software has revolutionized the way we
communicate and connect with others. Social media platforms, messaging apps, and video
conferencing tools have bridged geographical gaps, making it easier for people to stay
connected.
4. Data Analysis and Decision Making: In the age of big data, software plays a crucial role
in collecting, analyzing, and interpreting vast amounts of data. This enables businesses and
organizations to make informed decisions, optimize processes, and gain a competitive edge.
5. Innovation and Creativity: Software fosters innovation and creativity by providing tools
and platforms for individuals to express their ideas. From graphic design software to coding
environments, the possibilities are endless.

Changing Nature of Software


1. Shift to Cloud Computing: One of the significant changes in software is the shift towards
cloud computing. This allows users to access software and data from anywhere, at any time,
using any device with an internet connection. It has also led to the rise of Software as a
Service (SaaS) models.
2. Rise of Artificial Intelligence and Machine Learning: AI and machine learning have
transformed software development and usage. These technologies enable software to learn
from data, adapt to new inputs, and perform tasks that were previously thought to be
exclusive to humans.
3. Open Source Movement: The open-source movement has democratized software
development. Open-source software allows developers to collaborate, share code, and
contribute to projects, leading to faster innovation and the creation of robust, community-
driven solutions.
4. Emphasis on Security and Privacy: With the increasing reliance on software, security
and privacy concerns have become paramount. Modern software development focuses on
building secure systems that protect user data and comply with regulatory standards.
5. Integration with Internet of Things (IoT): The integration of software with IoT devices
has paved the way for smart homes, connected vehicles, and intelligent industrial systems.
Software now orchestrates a seamless interaction between the physical and digital worlds.

1
6. User-Centric Design: The approach to software design has shifted towards a more user-
centric focus. Developers prioritize user experience (UX) and user interface (UI) design to
create intuitive and accessible applications that cater to diverse user needs.
7. Continuous Delivery and DevOps: The adoption of continuous delivery and DevOps
practices has changed how software is developed, tested, and deployed. These
methodologies emphasize collaboration, automation, and iterative improvements, resulting in
faster release cycles and more reliable software.

Generic Process Overview


1. Initiation:
o Define the purpose and scope of the process.
o Identify stakeholders and establish objectives.
o Allocate resources and set timelines.
2. Planning:
o Develop a detailed plan outlining steps, responsibilities, and milestones.
o Assess risks and create mitigation strategies.
o Set up communication channels and reporting mechanisms.
3. Execution:
o Carry out the planned activities.
o Monitor progress and adjust the plan as needed.
o Maintain communication with stakeholders and provide updates.
4. Monitoring and Control:
o Track performance against established metrics and key performance
indicators (KPIs).
o Identify and address any issues or deviations from the plan.
o Conduct regular reviews and make necessary adjustments.
5. Completion:

o Finalize all activities and ensure objectives are met.


o Conduct a formal review to assess outcomes and document lessons learned.
o Celebrate successes and acknowledge contributions.
6. Evaluation and Improvement:
o Analyse the process to identify areas for improvement.
o Implement changes and updates to enhance future processes.
o Share knowledge and best practices with relevant parties.

2
Software engineering- a layered technology
Layered technology in software engineering is a structured approach that divides complex
systems into manageable layers. Each layer focuses on specific functionalities, enabling
easier development, maintenance, & scalability.
Software engineering is a fully layered technology, to develop software we need to go from
one layer to another. All the layers are connected and each layer demands the fulfillment of
the previous layer.

Fig: The diagram shows the layers of software development


Just as software engineering requires progressing through interconnected layers to build
robust software, advancing your skills in software testing also involves a step-by-step
approach. To
Layered technology is divided into four parts:

3
1. A quality focus: It defines the continuous process improvement principles of software. It
provides integrity that means providing security to the software so that data can be accessed
by only an authorized person, no outsider can access the data. It also focuses on
maintainability and usability.
2. Process: It is the foundation or base layer of software engineering. It is key that binds all
the layers together which enables the development of software before the deadline or on
time. Process defines a framework that must be established for the effective delivery of
software engineering technology. The software process covers all the activities, actions, and
tasks required to be carried out for software development.
Process activities are listed below:-
 Communication: It is the first and foremost thing for the development of software.
Communication is necessary to know the actual demand of the client.
 Planning: It basically means drawing a map for reduced the complication of
development.
 Modeling: In this process, a model is created according to the client for better
understanding.
 Construction: It includes the coding and testing of the problem.
 Deployment:- It includes the delivery of software to the client for evaluation and
feedback.
3. Method: During the process of software development the answers to all “how-to-do”
questions are given by method. It has the information of all the tasks which includes
communication, requirement analysis, design modeling, program construction, testing, and
support.
4. Tools: Software engineering tools provide a self-operating system for processes and
methods. Tools are integrated which means information created by one tool can be used by
another.

Software Project Management - life cycle activities


Software Project Management consists of many activities, that includes planning of
the project, deciding the scope of product, estimation of cost in different terms,
scheduling of tasks, etc.
The list of activities are as follows:
1. Project planning and Tracking
2. Project Resource Management
3. Scope Management
4. Estimation Management
5. Project Risk Management
6. Scheduling Management
7. Project Communication Management

4
8. Configuration Management

1. Project Planning: It is a set of multiple processes, or we can say that it a task that
performed before the construction of the product starts.

2. Scope Management: It describes the scope of the project. Scope management is important
because it clearly defines what would do and what would not. Scope Management create
the project to contain restricted and quantitative tasks, which may merely be documented
and successively avoids price and time overrun.
3. Estimation management: This is not only about cost estimation because whenever we
start to develop software, but we also figure out their size (line of code), efforts, time as
well as cost.

If we talk about the size, then Line of code depends upon user or software requirement.

If we talk about effort, we should know about the size of the software, because based on
the size we can quickly estimate how big team required to produce the software.

If we talk about time, when size and efforts are estimated, the time required to develop the
software can easily determine.

And if we talk about cost, it includes all the elements such as:

o Size of software
o Quality
o Hardware
o Communication
o Training
o Additional Software and tools
o Skilled manpower

4. Scheduling Management: Scheduling Management in software refers to all the


activities to complete in the specified order and within time slotted to each activity.
Project managers define multiple tasks and arrange them keeping various factors in mind.

For scheduling, it is compulsory -

o Find out multiple tasks and correlate them.


o Divide time into units.
o Assign the respective number of work-units for every job.
o Calculate the total time from start to finish.
o Break down the project into modules.

5. Project Resource Management: In software Development, all the elements are


referred to as resources for the project. It can be a human resource, productive tools, and
libraries.

Resource management includes:

o Create a project team and assign responsibilities to every team member

5
o Developing a resource plan is derived from the project plan.
o Adjustment of resources.

6. Project Risk Management: Risk management consists of all the activities like
identification, analysing and preparing the plan for predictable and unpredictable risk in
the project.

Several points show the risks in the project:

o The Experienced team leaves the project, and the new team joins it.
o Changes in requirement.
o Change in technologies and the environment.
o Market competition.

7. Project Communication Management: Communication is an essential factor in the


success of the project. It is a bridge between client, organization, team members and as
well as other stakeholders of the project such as hardware suppliers.

From the planning to closure, communication plays a vital role. In all the phases,
communication must be clear and understood. Miscommunication can create a big blunder
in the project.

8. Project Configuration Management: Configuration management is about to control the


changes in software like requirements, design, and development of the product.

The Primary goal is to increase productivity with fewer errors.

Some reasons show the need for configuration management:

o Several people work on software that is continually update.


o Help to build coordination among suppliers.
o Changes in requirement, budget, schedule need to accommodate.
o Software should run on multiple systems.

Tasks perform in Configuration management:

o Identification
o Baseline
o Change Control
o Configuration Status Accounting
o Configuration Audits and Reviews

People involved in Configuration Management:

6
PROCESS MODELS prescribe a set of framework and other activities, quality
assurance points, and software process-related elements. They define a
workflow among these elements that shows their inter-relationship.

The process models described here are,

 Waterfall Model.
 Incremental Process Model.
 Evolutionary Process Model.

The Waterfall Model

The Waterfall model is also known as ‘Linear sequential model‘ or ‘Classic life
cycle model‘. It is used in small projects where requirements are well defined and
known before starting the project. Activities are carried out in a linear and systematic
fashion.

The Waterfall Model


The process starts with communication, where requirements are gathered from the
customer and recorded.
Then goes to the planning stage where the cost and time constraints are estimated,
a schedule is outlined and project tracking variables are defined.
Modelling is where a design based on the requirements and keeping the project
constraints in mind is created. After this, code is generated and the actual building of
the product is started in the construction phase.
Testing (unit testing, integration testing) is done after code completion in this phase.

7
Deployment is the last stage where the product is delivered, customer feedback is
received and, support and maintenance for the product are provided.

Advantages of the waterfall model

 A simple model to use and implement.


 Easily understandable workflow.
 Easy to manage since requirements are known prior to the start of the project.
 Can be applied to projects where quality is preferred over cost.

Disadvantages of the waterfall model

 It may be difficult for the customer to provide all the specific requirements
beforehand.
 Cannot be used for complex and object-oriented projects.
 Testing and customer evaluation are done at the last stages and hence the risk is
high.
 Iteration of activities is not promoted which is unavoidable for certain projects.
 May lead to “blocking states” in which some project team members must wait for
other members of the team to complete dependent tasks.

Incremental Process Model


The Incremental process model is also known as ‘Successive version model‘.

In the Incremental process model, a series of releases, called increments, are built
and delivered to the customer. First, a simple working system(core product), that
addresses basic requirements, is delivered. Customer feedback is recorded after
each incremental delivery. Many increments are delivered, by adding more functions,
until the required system is released. This model is used when a user demands a
model of product with limited functionality quickly.

The Incremental Process Model

Advantages of incremental process model

 Flexible to change requirements.


 Changes can be done throughout the development stages.
 Errors are reduced since the product is tested by the customer in each phase.
 Working software available at the early stage of the process.

8
 Easy to test because of small iterations.
 The initial cost is lower.

Disadvantages of incremental process model

 Requires good planning and design.


 Modules and interfaces should be well defined.
 The total cost is high.
 Demands a complete planning strategy before commencement.
 Refining requirements in each iteration may affect system architecture.
 Breaking the problem into increments needs skilful management supervising.

Evolutionary Process Models


Evolutionary process models are opted when the requirements may tend to
change and also when the complete sophisticated product delivery cannot be done
before a given deadline, but the delivery of a limited version of it is possible.

In the incremental model, complete requirements are specified beforehand and these
requirements are refined over time for each increment. The evolutionary model
permits requirements, plans and estimates to evolve over time. Here we
discuss prototyping and the spiral model.

Prototyping
In cases when the requirements are unclear and are likely to change or when the
developer is doubtful about working of an algorithm, a solution is to build a prototype
and find out what is actually needed. Hence, in this model, one or more prototypes
are made with unrefined currently known requirements before the actual product is
made.

Prototyping

9
A quick design is what occurs in a prototype model. The client evaluates the
prototype and gives feedback and other requirements which are incorporated in the
next prototype. This is repeated until the prototype becomes a complete product that
is acceptable to the client. Some prototypes are built as “throwaways”, others are
“evolutionary” in nature as they evolve into the actual system.

Advantages of prototyping

 Active involvement of the user.


 Errors are detected earlier.
 Feedback after each prototype helps in understanding the system better.
 Does not need to know detailed processes, input and output from the beginning.

Disadvantages of prototyping

 Multiple prototypes can slow down the process.


 Frequent changes can increase complexity.
 Unsatisfied client leads to multiple throwaways.
 The customer may not be interested or satisfied after evaluating the initial prototype.

Spiral Model
In spiral model, the software is developed through a series of increments. The
diagram looks like a spiral with loops where each loop is a phase. Each phase is split
into four sectors/quadrant.

10
The Spiral Model

The first circuit around the spiral might result in the development of a product
specification. The subsequent passes around the spiral might be used to develop a
prototype and then progressively more mature versions of the software.

Planning is where the objectives, alternatives and other constraints are determined.
The alternatives are considered, risks in each alternative are analysed and
prototypes are refined in the risk analysis sector. At the development quadrant level
risks are known and it proceeds with developing and testing the product. In the
assessment sector, customer evaluation of product developed is reviewed and the
next phase is planned. This loop continues until acceptable software is built and
deployed.

Hence, the spiral model follows an incremental process methodology and unlike
other process models, it deals with the uncertainty by applying a series of risk
analysis strategies throughout the process.

Advantages of spiral model

 Reduces risk.
 Recommended for complex projects.
 Changes can be incorporated at a later stage.
 Strong documentation helps in better management.

Disadvantages of spiral model

11
 Costly and not recommended for small projects.
 Demands risk assessment expertise.
 Looping is a complex process.
 Heavy documentation.

CONVENTIONAL MODEL

Agile Development Models

To overcome the drawbacks of the Waterfall Model, in the mid-1990s the Agile Software
Development model was proposed.

The Agile Model was primarily designed to help a project adapt quickly to change requests.
So, the main aim of the Agile model is to facilitate quick project completion. To accomplish
this task, agility is required. Agility is achieved by fitting the process to the project and
removing activities that may not be essential for a specific project. Also, anything that is a
waste of time and effort is avoided. The Agile Model refers to a group of development
processes. These processes share some basic characteristics but do have certain subtle
differences among themselves.

Agile SDLC Models/Methods

Given below are some Agile SDLC Models:

 Crystal Agile methodology: The Crystal Agile Software Development


Methodology places a strong emphasis on fostering effective communication and
collaboration among team members, as well as taking into account the human
elements that are crucial for a successful development process. This methodology is
particularly beneficial for projects with a high degree of uncertainty, where
requirements tend to change frequently.

 Dynamic Systems Development Method (DSDM): DSDSM methodology is tailored


for projects with moderate to high uncertainty where requirements are prone to
change frequently. Its clear-cut roles and responsibilities focus on delivering working
software in short time frames. Governance practices set it apart and make it an
effective approach for teams and projects.

 Feature-driven development (FDD): FDD approach is implemented by utilizing a


series of techniques, like creating feature lists, conducting model evaluations, and
implementing a design-by-feature method, to meet its goal. This methodology is
particularly effective in ensuring that the end product is delivered on time and that it
aligns with the requirements of the customer.

 Scrum: Scrum methodology serves as a framework for tackling complex projects and
ensuring their successful completion. It is led by a Scrum Master, who oversees the
process, and a Product Owner, who establishes the priorities. The Development Team,
accountable for delivering the software, is another key player.

 Extreme Programming (XP): Extreme Programming uses specific practices like pair
programming, continuous integration, and test-driven development to achieve these

12
goals. Extreme programming is ideal for projects that have high levels of uncertainty
and require frequent changes, as it allows for quick adaptation to new requirements
and feedback.

 Lean Development: Lean Development is rooted in the principles of lean


manufacturing and aims to streamline the process by identifying and removing
unnecessary steps and activities. This is achieved through practices such as
continuous improvement, visual management, and value stream mapping, which helps
in identifying areas of improvement and implementing changes accordingly.

 Unified Process: Unified Process is a methodology that can be tailored to the specific
needs of any given project. It combines elements of both waterfall and Agile
methodologies, allowing for an iterative and incremental approach to development.
This means that the UP is characterized by a series of iterations, each of which results
in a working product increment, allowing for continuous improvement and the
delivery of value to the customer.

Steps in the Agile Model

The agile model is a combination of iterative and incremental process models. The steps
involve in agile SDLC models are:

 Requirement gathering

 Design the Requirements

 Construction / Iteration

 Testing / Quality Assurance

 Deployment

 Feedback

Steps in Agile Model

1. Requirement Gathering:- In this step, the development team must gather the
requirements, by interaction with the customer. development team should plan the
time and effort needed to build the project. Based on this information you can
evaluate technical and economical feasibility.

13
2. Design the Requirements:- In this step, the development team will use user-flow-
diagram or high-level UML diagrams to show the working of the new features and
show how they will apply to the existing software. Wireframing and designing user
interfaces are done in this phase.

3. Construction / Iteration:- In this step, development team members start working on


their project, which aims to deploy a working product.

4. Testing / Quality Assurance:- Testing involves Unit Testing, Integration Testing,


and System Testing. A brief introduction of these three tests is as follows:

 Unit Testing:- Unit testing is the process of checking small pieces of code to
ensure that the individual parts of a program work properly on their own. Unit
testing is used to test individual blocks (units) of code.

 Integration Testing:- Integration testing is used to identify and resolve any


issues that may arise when different units of the software are combined.

 System Testing:- Goal is to ensure that the software meets the requirements
of the users and that it works correctly in all possible scenarios.

5. Deployment:- In this step, the development team will deploy the working project to
end users.

6. Feedback:- This is the last step of the Agile Model. In this, the team receives
feedback about the product and works on correcting bugs based on feedback provided
by the customer.

14
The time required to complete an iteration is known as a Time Box. Time-box refers to the
maximum amount of time needed to deliver an iteration to customers. So, the end date for an
iteration does not change. However, the development team can decide to reduce the delivered
functionality during a Time-box if necessary to deliver it on time. The Agile model’s central
principle is delivering an increment to the customer after each Time-box.

Principles of the Agile Model

 To establish close contact with the customer during development and to gain a clear
understanding of various requirements, each Agile project usually includes a customer
representative on the team. At the end of each iteration stakeholders and the customer
representative review, the progress made and re-evaluate the requirements.

 The agile model relies on working software deployment rather than comprehensive
documentation.

 Frequent delivery of incremental versions of the software to the customer


representative in intervals of a few weeks.

 Requirement change requests from the customer are encouraged and efficiently
incorporated.

 It emphasizes having efficient team members and enhancing communications among


them is given more importance. It is realized that improved communication among
the development team members can be achieved through face-to-face communication
rather than through the exchange of formal documents.

 It is recommended that the development team size should be kept small (5 to 9


people) to help the team members meaningfully engage in face-to-face
communication and have a collaborative work environment.

 The agile development process usually deploys Pair Programming. In Pair


programming, two programmers work together at one workstation. One does coding
while the other reviews the code as it is typed in. The two programmers switch their
roles every hour or so.

Characteristics of the Agile Process

 Agile processes must be adaptable to technical and environmental changes. That


means if any technological changes occur, then the agile process must accommodate
them.

 The development of agile processes must be incremental. That means, in each


development, the increment should contain some functionality that can be tested and
verified by the customer.

 The customer feedback must be used to create the next increment of the process.

 The software increment must be delivered in a short span of time.

15
 It must be iterative so that each increment can be evaluated regularly.

When To Use the Agile Model?

 When frequent modifications need to be made, this method is implemented.

 When a highly qualified and experienced team is available.

 When a customer is ready to have a meeting with the team all the time.

 when the project needs to be delivered quickly.

 Projects with few regulatory requirements or not certain requirements.

 projects utilizing a less-than-strict current methodology

 Those undertakings where the product proprietor is easily reachable

 Flexible project schedules and budgets.

Advantages of the Agile Model

 Working through Pair programming produces well-written compact programs which


have fewer errors as compared to programmers working alone.

 It reduces the total development time of the whole project.

 Agile development emphasizes face-to-face communication among team members,


leading to better collaboration and understanding of project goals.

 Customer representatives get the idea of updated software products after each
iteration. So, it is easy for him to change any requirement if needed.

 Agile development puts the customer at the center of the development process,
ensuring that the end product meets their needs.

Disadvantages of the Agile Model

 The lack of formal documents creates confusion and important decisions taken during
different phases can be misinterpreted at any time by different team members.

 It is not suitable for handling complex dependencies.

 The agile model depends highly on customer interactions so if the customer is not
clear, then the development team can be driven in the wrong direction.

 Agile development models often involve working in short sprints, which can make it
difficult to plan and forecast project timelines and deliverables. This can lead to
delays in the project and can make it difficult to accurately estimate the costs and
resources needed for the project.

16
 Agile development models require a high degree of expertise from team members, as
they need to be able to adapt to changing requirements and work in an iterative
environment. This can be challenging for teams that are not experienced in agile
development practices and can lead to delays and difficulties in the project.

 Due to the absence of proper documentation, when the project completes and the
developers are assigned to another project, maintenance of the developed project can
become a problem.

Extreme Programming (XP) is an Agile software development methodology


that focuses on delivering high-quality software through frequent and continuous feedback,
collaboration, and adaptation. XP emphasizes a close working relationship between the
development team, the customer, and stakeholders, with an emphasis on rapid, iterative
development and deployment.

Agile development approaches evolved in the 1990s as a reaction to documentation and


bureaucracy-based processes, particularly the waterfall approach. Agile approaches are based
on some common principles, some of which are:

1. Working software is the key measure of progress in a project.

2. For progress in a project, therefore software should be developed and delivered


rapidly in small increments.

3. Even late changes in the requirements should be entertained.

4. Face-to-face communication is preferred over documentation.

5. Continuous feedback and involvement of customers are necessary for developing


good-quality software.

6. A simple design that involves and improves with time is a better approach than doing
an elaborate design up front for handling all possible scenarios.

17
7. The delivery dates are decided by empowered teams of talented individuals.

Extreme programming is one of the most popular and well-known approaches in the family
of agile methods. an XP project starts with user stories which are short descriptions of what
scenarios the customers and users would like the system to support. Each story is written on a
separate card, so they can be flexibly grouped.

Good Practices in Extreme Programming

Some of the good practices that have been recognized in the extreme programming model
and suggested to maximize their use are given below:

18
Extreme Programming Good Practices

 Code Review: Code review detects and corrects errors efficiently. It suggests pair
programming as coding and reviewing of written code carried out by a pair of
programmers who switch their work between them every hour.

 Testing: Testing code helps to remove errors and improves its reliability. XP suggests
test-driven development (TDD) to continually write and execute test cases. In the
TDD approach, test cases are written even before any code is written.

19
 Incremental development: Incremental development is very good because customer
feedback is gained and based on this development team comes up with new
increments every few days after each iteration.

 Simplicity: Simplicity makes it easier to develop good-quality code as well as to test


and debug it.

 Design: Good quality design is important to develop good quality software. So,
everybody should design daily.

 Integration testing: Integration Testing helps to identify bugs at the interfaces of


different functionalities. Extreme programming suggests that the developers should
achieve continuous integration by building and performing integration testing several
times a day.

Basic Principles of Extreme programming

XP is based on the frequent iteration through which the developers implement User Stories.
User stories are simple and informal statements of the customer about the functionalities
needed. A User Story is a conventional description by the user of a feature of the required
system. It does not mention finer details such as the different scenarios that can occur. Based
on User stories, the project team proposes Metaphors. Metaphors are a common vision of
how the system would work. The development team may decide to build a Spike for some
features. A Spike is a very simple program that is constructed to explore the suitability of a
solution being proposed. It can be considered similar to a prototype. Some of the basic
activities that are followed during software development by using the XP model are given
below:

 Coding: The concept of coding which is used in the XP model is slightly different
from traditional coding. Here, the coding activity includes drawing diagrams
(modeling) that will be transformed into code, scripting a web-based system, and
choosing among several alternative solutions.

 Testing: The XP model gives high importance to testing and considers it to be the
primary factor in developing fault-free software.

 Listening: The developers need to carefully listen to the customers if they have to
develop good quality software. Sometimes programmers may not have the depth
knowledge of the system to be developed. So, the programmers should understand
properly the functionality of the system and they have to listen to the customers.

 Designing: Without a proper design, a system implementation becomes too complex,


and very difficult to understand the solution, thus making maintenance expensive. A
good design results elimination of complex dependencies within a system. So,
effective use of suitable design is emphasized.

 Feedback: One of the most important aspects of the XP model is to gain feedback to
understand the exact customer needs. Frequent contact with the customer makes the
development effective.

20
 Simplicity: The main principle of the XP model is to develop a simple system that
will work efficiently in the present time, rather than trying to build something that
would take time and may never be used. It focuses on some specific features that are
immediately needed, rather than engaging time and effort on speculations of future
requirements.

 Pair Programming: XP encourages pair programming where two developers work


together at the same workstation. This approach helps in knowledge sharing, reduces
errors, and improves code quality.

 Continuous Integration: In XP, developers integrate their code into a shared


repository several times a day. This helps to detect and resolve integration issues early
on in the development process.

 Refactoring: XP encourages refactoring, which is the process of restructuring


existing code to make it more efficient and maintainable. Refactoring helps to keep
the codebase clean, organized, and easy to understand.

 Collective Code Ownership: In XP, there is no individual ownership of code.


Instead, the entire team is responsible for the codebase. This approach ensures that all
team members have a sense of ownership and responsibility towards the code.

 Planning Game: XP follows a planning game, where the customer and the
development team collaborate to prioritize and plan development tasks. This approach
helps to ensure that the team is working on the most important features and delivers
value to the customer.

 On-site Customer: XP requires an on-site customer who works closely with the
development team throughout the project. This approach helps to ensure that the
customer’s needs are understood and met, and also facilitates communication and
feedback.

Applications of Extreme Programming (XP)

Some of the projects that are suitable to develop using the XP model are given below:

 Small projects: The XP model is very useful in small projects consisting of small
teams as face-to-face meeting is easier to achieve.

 Projects involving new technology or Research projects: This type of project faces
changing requirements rapidly and technical problems. So XP model is used to
complete this type of project.

 Web development projects: The XP model is well-suited for web development


projects as the development process is iterative and requires frequent testing to ensure
the system meets the requirements.

 Collaborative projects: The XP model is useful for collaborative projects that


require close collaboration between the development team and the customer.

21
 Projects with tight deadlines: The XP model can be used in projects that have a tight
deadline, as it emphasizes simplicity and iterative development.

 Projects with rapidly changing requirements: The XP model is designed to handle


rapidly changing requirements, making it suitable for projects where requirements
may change frequently.

 Projects where quality is a high priority: The XP model places a strong emphasis
on testing and quality assurance, making it a suitable approach for projects where
quality is a high priority.

XP, and other agile methods, are suitable for situations where the volume and space of
requirements change are high and where requirement risks are considerable.

Life Cycle of Extreme Programming (XP)

The Extreme Programming Life Cycle consist of five phases:

1. Planning: The first stage of Extreme Programming is planning. During this phase,
clients define their needs in concise descriptions known as user stories. The team
calculates the effort required for each story and schedules releases according to
priority and effort.

2. Design: The team creates only the essential design needed for current user stories,
using a common analogy or story to help everyone understand the overall system
architecture and keep the design straightforward and clear.

3. Coding: Extreme Programming (XP) promotes pair programming i.e. wo developers


work together at one workstation, enhancing code quality and knowledge
sharing. They write tests before coding to ensure functionality from the start (TDD),
and frequently integrate their code into a shared repository with automated tests to
catch issues early.

22
4. Testing: Extreme Programming (XP) gives more importance to testing that consist of
both unit tests and acceptance test. Unit tests, which are automated, check if specific
features work correctly. Acceptance tests, conducted by customers, ensure that the
overall system meets initial requirements. This continuous testing ensures the
software’s quality and alignment with customer needs.

5. Listening: In the listening phase regular feedback from customers to ensure the
product meets their needs and to adapt to any changes.

Advantages of Extreme Programming (XP)

 Slipped schedules: Timely delivery is ensured through slipping timetables and doable
development cycles.

 Misunderstanding the business and/or domain − Constant contact and explanations


are ensured by including the client on the team.

 Canceled projects: Focusing on ongoing customer engagement guarantees open


communication with the consumer and prompt problem-solving.

 Staff turnover: Teamwork that is focused on cooperation provides excitement and


goodwill. Team spirit is fostered by multidisciplinary cohesion.

 Costs incurred in changes: Extensive and continuing testing ensures that the
modifications do not impair the functioning of the system. A functioning system
always guarantees that there is enough time to accommodate changes without
impairing ongoing operations.

 Business changes: Changes are accepted at any moment since they are seen to be
inevitable.

 Production and post-delivery defects: the unit tests to find and repair bugs as soon
as possible.

Scrum is a management framework that teams use to self-organize tasks and work
towards a common goal. It is a framework within which people can address complex adaptive
problems while the productivity and creativity of delivering products are at the highest
possible value. Scrum is a management framework that teams use to self-organize and work
towards a common goal.

 Scrum allows us to develop products of the highest value while making sure that we
maintain creativity and productivity.

 The iterative and incremental approach used in scrum allows the teams to adapt to the
changing requirements.

Silent features of Scrum

 Scrum is a light-weighted framework

23
 Scrum emphasizes self-organization

 Scrum is simple to understand

 Scrum framework helps the team to work together

LIFE CYCLE OF SCRUM

 Sprint: A Sprint is a time box of one month or less. A new Sprint starts immediately
after the completion of the previous Sprint. Release: When the product is completed,
it goes to the Release stage.

 Sprint Review: If the product still has some non-achievable features, it will be
checked in this stage and then passed to the Sprint Retrospective stage.

 Sprint Retrospective: In this stage quality or status of the product is


checked. Product Backlog: According to the prioritize features the product is
organized.

 Sprint Backlog: Sprint Backlog is divided into two parts Product assigned features to
sprint and Sprint planning meeting.

Advantage of Scrum framework

 Scrum framework is fast moving and money efficient.

 Scrum framework works by dividing the large product into small sub-products. It’s
like a divide and conquer strategy

 In Scrum customer satisfaction is very important.

 Scrum is adaptive in nature because it have short sprint.

24
 As Scrum framework rely on constant feedback therefore the quality of product
increases in less amount of time

Disadvantage of Scrum framework

 Scrum framework do not allow changes into their sprint.

 Scrum framework is not fully described model.

 It can be difficult for the Scrum to plan, structure and organize a project that lacks a
clear definition.

 The daily Scrum meetings and frequent reviews require substantial resources.

PROJECT INITIATION MAAGEMENT

Project initiation is the first phase of the project management lifecycle. It involves defining
the project at a high level and securing the necessary approvals to move forward. The key
components of project initiation include the Project Charter, Project Scope, Project
Objectives, and practical considerations.

Project Charter

A Project Charter is a formal document that officially authorizes a project and outlines its
objectives, scope, and participants. It serves as a reference throughout the project lifecycle
and provides a clear understanding of what the project aims to achieve. Here are the detailed
notes on the key components of a Project Charter:

1. Project Purpose

The Project Purpose section explains why the project is being undertaken. It provides context
and justification for the project's existence, answering questions such as:

 What problem or opportunity does the project address?


 How will the project contribute to the organization's goals?

2. Project Objectives

Project Objectives are specific, measurable goals that the project aims to achieve. They
should be:

 Specific: Clearly defined and unambiguous.


 Measurable: Quantifiable to track progress and success.
 Achievable: Realistic and attainable.
 Relevant: Aligned with the overall goals and purpose of the project.
 Time-bound: Having a defined timeline for completion.

3. Project Scope

25
The Project Scope defines the boundaries of the project, specifying what is included and what
is not. It involves:

 Scope Statement: A detailed description of the project deliverables and the work
needed to create them.
 Work Breakdown Structure (WBS): A hierarchical decomposition of the total
scope of work into smaller, manageable parts.
 Scope Baseline: The approved version of the project scope, which serves as a
reference for future project performance.

4. Stakeholders

The Stakeholders section identifies individuals or groups who have an interest in the project.
This includes:

 Internal Stakeholders: Project team members, management, and other departments


within the organization.
 External Stakeholders: Clients, suppliers, regulatory bodies, and the community.

5. Roles and Responsibilities

This section outlines the governance structure of the project and specifies the roles and
responsibilities of key team members. It includes:

 Project Sponsor: The person who provides overall direction and support for the
project.
 Project Manager: The person responsible for planning, executing, and closing the
project.
 Project Team: Individuals who perform the work required to achieve the project
objectives.

6. Assumptions and Constraints

Assumptions and Constraints are factors that are assumed to be true and limitations that may
impact the project. They help set realistic expectations and guide decision-making. Examples
include:

 Assumptions: Availability of resources, stakeholder support, and technological


capabilities.
 Constraints: Budget limitations, time restrictions, and regulatory requirements.

7. Approval and Sign-Off

The Approval and Sign-Off section includes signatures from key stakeholders, indicating
their agreement with the Project Charter and their commitment to support the project. This
section often includes:

 Project Sponsor's Signature: Approving the project and providing the necessary
resources.

26
 Project Manager's Signature: Acknowledging their responsibility to manage the
project according to the charter.

A well-crafted Project Charter sets the foundation for a successful project by ensuring all
stakeholders have a clear understanding of the project's goals, scope, and expectations. It
serves as a reference point throughout the project lifecycle, helping to guide decisions and
keep the project on track.

Project Scope

The Project Scope is a critical component of project management. It defines all the work
required to complete a project successfully and ensures that only the necessary tasks are
included. Here are the detailed notes on the key elements of Project Scope:

1. Scope Statement

The Scope Statement provides a detailed description of the project deliverables and the work
required to create them. It includes:

 Project Deliverables: The tangible or intangible products or services produced as a


result of the project. These could include reports, software, buildings, etc.
 Inclusions and Exclusions: Clearly defines what is included in the project scope and
what is not. This helps to prevent scope creep, which occurs when additional tasks are
added to the project without proper approval.
 Acceptance Criteria: The conditions that must be met for the deliverables to be
accepted by the project stakeholders.
 Assumptions and Constraints: Factors that are assumed to be true for the purpose of
planning and limitations that may impact the project.

2. Work Breakdown Structure (WBS)

The Work Breakdown Structure (WBS) is a hierarchical decomposition of the total scope of
work into smaller, manageable parts. It helps in organizing and defining the total work scope
of the project. Key elements of WBS include:

 Hierarchy Levels: The WBS is structured in levels, with the top level representing
the total project and subsequent levels breaking down the project into smaller
components.
 Work Packages: The lowest level of the WBS, representing individual tasks or
activities that can be assigned, scheduled, and managed.
 WBS Dictionary: A document that provides detailed information about each element
in the WBS, including descriptions, responsible parties, and success criteria.

3. Scope Baseline

The Scope Baseline is the approved version of the project scope, which serves as a reference
for future project performance. It includes:

 Approved Scope Statement: The final, approved version of the scope statement.
 WBS: The final, approved version of the work breakdown structure.

27
 WBS Dictionary: The final, approved version of the WBS dictionary.

4. Requirements Documentation

Requirements Documentation captures the needs and expectations of the project stakeholders.
It serves as a foundation for defining the project scope and includes:

 Stakeholder Requirements: Specific needs and expectations of stakeholders that the


project must fulfill.
 Functional Requirements: Describe the behaviors and functions of the deliverables.
For example, software features, system capabilities, and process workflows.
 Non-Functional Requirements: Describe the quality attributes of the deliverables.
For example, performance, security, and reliability.

5. Scope Management Plan

The Scope Management Plan outlines how the project scope will be defined, validated, and
controlled. It includes:

 Scope Definition: The process for developing a detailed project scope statement.
 Scope Validation: The process for obtaining formal acceptance of the completed
project deliverables.
 Scope Control: The process for monitoring the project scope and managing changes
to the scope baseline.

6. Change Control Process

The Change Control Process is a critical aspect of scope management. It ensures that any
changes to the project scope are properly evaluated, approved, and documented. It includes:

 Change Requests: Formal proposals for changes to the project scope.


 Impact Analysis: Assessing the potential impact of proposed changes on the project’s
objectives, timeline, and budget.
 Approval Process: The steps required to review and approve or reject change
requests.
 Documentation: Keeping detailed records of all change requests, impact analyses,
approvals, and modifications to the scope baseline.

7. Stakeholder Engagement

Effective stakeholder engagement is essential for defining and managing the project scope. It
involves:

 Stakeholder Identification: Identifying all individuals or groups who have an


interest in the project.
 Stakeholder Analysis: Understanding the needs, expectations, and influence of each
stakeholder.
 Communication Plan: Establishing how information will be shared with
stakeholders and how their feedback will be incorporated into the project scope.

28
By carefully defining and managing the project scope, project managers can ensure that their
projects stay on track, meet stakeholder expectations, and deliver the intended results.

Project Objectives

Project Objectives are the specific, measurable outcomes that a project aims to achieve. They
provide a clear direction and serve as a benchmark for evaluating the project's success. Here
are the detailed notes on the key aspects of Project Objectives:

1. Characteristics of Project Objectives

Project Objectives should be:

 Specific: Clearly defined and unambiguous, leaving no room for interpretation.


 Measurable: Quantifiable so that progress and success can be tracked.
 Achievable: Realistic and attainable within the project's constraints.
 Relevant: Aligned with the overall goals and purpose of the project.
 Time-bound: Having a defined timeline for completion.

This is often abbreviated as the SMART criteria (Specific, Measurable, Achievable,


Relevant, Time-bound).

2. Types of Project Objectives

Project Objectives can be categorized into different types, depending on the nature of the
project and its goals:

 Operational Objectives: Focused on improving efficiency and effectiveness in the


organization's operations. For example, reducing the time to complete a specific
process by 20%.
 Financial Objectives: Focused on achieving financial targets, such as increasing
revenue by 15% or reducing costs by 10%.
 Technical Objectives: Focused on achieving technical milestones, such as
developing a new software feature or upgrading an existing system.
 Quality Objectives: Focused on improving the quality of deliverables, such as
increasing customer satisfaction scores or reducing defect rates.

3. Defining Project Objectives

Defining clear and effective Project Objectives involves the following steps:

 Stakeholder Consultation: Engaging with stakeholders to understand their needs,


expectations, and priorities. This ensures that the objectives are aligned with their
interests.
 Analysis of Requirements: Analyzing the project requirements to identify key areas
where objectives need to be set. This includes understanding the scope, deliverables,
and constraints of the project.
 Setting SMART Objectives: Using the SMART criteria to define specific,
measurable, achievable, relevant, and time-bound objectives. This helps in creating
objectives that are clear, realistic, and trackable.

29
 Documentation and Communication: Documenting the objectives in a clear and
concise manner and communicating them to all project stakeholders. This ensures that
everyone is on the same page and understands the project's goals.

4. Examples of Project Objectives

Here are some examples of well-defined Project Objectives:

1. Operational Objective: Reduce the average response time for customer service
inquiries from 24 hours to 12 hours within the next six months.
2. Financial Objective: Increase the company's market share by 10% in the next fiscal
year by launching a new product line.
3. Technical Objective: Develop and deploy a new mobile application with core
features within the next nine months.
4. Quality Objective: Achieve a customer satisfaction score of 90% or higher in post-
implementation surveys within three months of project completion.

5. Monitoring and Evaluating Project Objectives

Monitoring and evaluating Project Objectives involves:

 Regular Progress Reviews: Conducting regular meetings and reviews to track


progress against the set objectives. This helps in identifying any deviations and taking
corrective actions.
 Performance Metrics: Using key performance indicators (KPIs) and metrics to
measure progress. For example, tracking the number of customer inquiries resolved
within the target response time.
 Stakeholder Feedback: Collecting feedback from stakeholders to assess their
satisfaction with the project's progress and outcomes. This helps in ensuring that the
objectives are being met and any issues are addressed.
 Adjustments and Improvements: Making necessary adjustments to the project plan
and objectives based on the feedback and performance metrics. This ensures that the
project stays on track and achieves its goals.

Practical Considerations in Project Initiation

When initiating a project, several practical considerations must be addressed to ensure its
success. These considerations help in assessing the feasibility, identifying potential risks,
understanding stakeholder needs, planning resources, and establishing effective
communication

1. Feasibility Study

A Feasibility Study assesses the project's viability and potential for success. It includes:

 Technical Feasibility: Evaluating whether the project can be successfully completed


with the available technology and resources.
 Economic Feasibility: Assessing the project's cost-effectiveness and potential return
on investment (ROI).

30
 Legal Feasibility: Ensuring that the project complies with relevant laws, regulations,
and standards.
 Operational Feasibility: Determining whether the project can be integrated into the
organization's existing operations.
 Schedule Feasibility: Evaluating whether the project can be completed within the
proposed timeline.

2. Risk Assessment

Risk Assessment involves identifying potential risks that could impact the project's success
and developing strategies to mitigate them. It includes:

 Risk Identification: Listing potential risks, such as technical challenges, resource


limitations, or stakeholder resistance.
 Risk Analysis: Assessing the likelihood and impact of each identified risk.
 Risk Mitigation Plan: Developing strategies to reduce the likelihood or impact of
each risk. This could include contingency plans, alternative approaches, or risk
transfer (e.g., insurance).

3. Stakeholder Analysis

Stakeholder Analysis involves understanding the needs, expectations, and influence of all
individuals or groups who have an interest in the project. It includes:

 Stakeholder Identification: Listing all stakeholders, both internal and external.


 Stakeholder Mapping: Categorizing stakeholders based on their level of influence
and interest in the project.
 Stakeholder Engagement Plan: Developing strategies to engage and communicate
with stakeholders, address their concerns, and manage their expectations.

4. Resource Planning

Resource Planning identifies the resources required for the project, including time, money,
and people. It includes:

 Resource Identification: Listing all required resources, such as personnel,


equipment, materials, and budget.
 Resource Allocation: Assigning resources to specific tasks and ensuring that they are
available when needed.
 Resource Optimization: Identifying opportunities to use resources more efficiently
and reduce costs.

5. Communication Plan

A Communication Plan establishes how information will be shared among project


stakeholders. It includes:

 Communication Objectives: Defining what needs to be communicated and the


desired outcomes.

31
 Audience Identification: Identifying the different groups of stakeholders and their
information needs.
 Communication Channels: Selecting the appropriate methods for communication,
such as meetings, emails, reports, or online platforms.
 Communication Schedule: Establishing a timeline for regular updates and progress
reports.
 Feedback Mechanisms: Providing opportunities for stakeholders to give feedback
and ask questions.

6. Change Management

Change Management involves preparing and supporting stakeholders through changes that
the project may bring about. It includes:

 Change Readiness Assessment: Evaluating the organization's readiness for change


and identifying potential barriers.
 Change Implementation Plan: Developing a plan to implement changes smoothly,
including training and support for stakeholders.
 Change Communication Plan: Ensuring that stakeholders are informed about
upcoming changes and understand their impact.

32

You might also like