SPM... Note
SPM... Note
SPM... Note
or purpose and that must be completed by a specific time, within budget, and requirements.
Attributes: Scope, Schedule and Resource
Nature
• Projects have a distinct beginning and end.
• Each project aims to achieve specific goals.
• Projects have clear boundaries and tasks.
• Resources like people, materials, and funds are allocated.
• Projects must be completed within a set timeframe.
• Tasks are linked and require coordination.
• Projects aim to deliver a tangible result or product.
Project management: refers to the systematic process of planning, organizing, executing, and
controlling the resources, tasks, and activities involved in a project to achieve its defined goals
within the constraints of time, budget, scope, and quality.
Problems with Software Project
People-Related Problems:
• Communication Issues
• Team Dynamics
• Skill Gaps
• Team Size and Composition
Process-Related Problems:
• Poor Planning
• Ineffective Project Management
• Unclear Requirements
• Scope Creep
Product-Related Problems:
• Quality Issues
• User Acceptance
• Incomplete Features
Technology-Related Problems:
• Inadequate Tools and Infrastructure
• Compatibility Issues
• Emerging Technology Challenges
Project Planning
1. Select Project:
• Choosing a project idea or concept that aligns with organizational goals and
priorities.
2. Identify Project Scope and Objectives:
• Clearly defining what the project will accomplish and the boundaries of its work.
3. Identify Project Infrastructure:
• Outlining the resources, tools, and technology needed to support project
execution.
4. Analyze the Project Characteristics:
• Understanding the project's complexity, risks, constraints, and potential
challenges.
5. Identify Project Products and Activities:
• Listing the specific deliverables (products) and tasks (activities) required to
achieve the project's objectives.
6. Estimate Effort for Each Activity:
• Determining the time, resources, and effort needed to complete each activity.
7. Identify Activity Risks:
• Identifying potential risks that could impact the project's success and planning risk
mitigation strategies.
8. Allocate Resources:
• Assigning the necessary resources (human, financial, materials) to each activity.
9. Review:
• Reviewing and validating the project plan to ensure it aligns with project goals and
feasibility.
Project Phases
1. Feasibility Study:
• Evaluating the project's technical, financial, and operational viability.
• Assessing potential risks, benefits, and constraints.
2. Requirements Specification:
• Defining and documenting detailed functional and non-functional requirements.
• Clearly stating what the system or software needs to accomplish.
3. System Design:
• Creating a high-level architecture and design for the system.
• Identifying major components, modules, and their interactions.
4. Detailed Design:
• Expanding on the system design to provide detailed specifications for each
module.
• Designing data structures, algorithms, and interfaces.
5. Code & Unit Test:
• Writing the actual code based on the detailed design.
• Performing unit testing to verify the correctness of individual code units.
6. Integrate & Test:
• Integrating different code modules to create a complete system.
• Conducting integration testing to ensure the modules work together as intended.
7. Acceptance:
• Performing user acceptance testing to validate that the system meets user
requirements.
• Gaining approval from stakeholders for the system's deployment and use.
Reasons of Project Failure
1. Inadequate Planning:
• Poorly defined project objectives, scope, or requirements.
• Unrealistic schedules or budget estimates.
• Lack of contingency plans for risks and uncertainties.
2. Scope Creep:
• Uncontrolled expansion of project scope beyond the original plan.
• Frequent changes in requirements during project execution.
3. Poor Communication:
• Inadequate communication among team members, stakeholders, or
management.
• Misunderstandings or unclear expectations leading to mistakes.
4. Lack of Leadership:
• Ineffective project management or leadership.
• Absence of clear decision-making and direction.
5. Unclear Requirements:
• Ambiguous or changing requirements that lead to confusion and rework.
• Stakeholder disagreements on project objectives.
6. Inadequate Resources:
• Insufficient budget, manpower, or tools to complete the project successfully.
• Resource conflicts or bottlenecks affecting progress.
7. Unrealistic Timeframes:
• Overly tight schedules that don't allow for proper planning, testing, or quality
assurance.
• Rushed development leading to errors and incomplete work.
8. Poor Risk Management:
• Failure to identify and mitigate project risks.
• Unexpected events or issues derailing the project.
9. Lack of User Involvement:
• Minimal engagement with end-users or stakeholders during development.
• Resulting in a product that doesn't meet user needs.
10. Technical Challenges:
• Complexity of technology or unfamiliar tools causing delays and errors.
• Inadequate technical skills or expertise among team members.
11. Scope Misalignment with Business Goals:
• The project's outcomes don't align with the organization's strategic objectives.
• Lack of business value in the delivered product.
12. Vendor or Supplier Issues:
• Delays, quality issues, or conflicts with external vendors or suppliers.
• Dependency on external parties causing project disruptions.
13. Lack of Change Management:
• Resistance to change from stakeholders or end-users.
• Poor adoption of the project's outcomes within the organization.
14. Poor Quality Control:
• Inadequate testing and quality assurance, leading to defects and user
dissatisfaction.
• Failure to meet quality standards.
15. Unforeseen External Factors:
• Economic changes, market shifts, legal issues, or external events impacting the
project.
• Lack of adaptability to changing circumstances.
Contract: A legally binding agreement outlining the terms, conditions, and expectations between
the client and the software development team for the delivery of a software project.
Contract Management: The process of effectively handling and overseeing all aspects of a
software project's contract, including negotiation, performance monitoring, changes, and
conflict resolution, to ensure the project's successful completion within the agreed-upon terms.
Benefits: Positive outcomes attained from proficient software project management, including
timely delivery of quality software, within budget and scope, efficient resource utilization, and
meeting user requirements, thereby enhancing client satisfaction and achieving project goals.
Project estimation:
• It is the process of predicting the time, resources, and costs needed to complete a
project.
• It involves analyzing the project's scope, requirements, and complexity to provide an
informed estimate of how long the project will take, how much it will cost, and what
resources will be required.
• Estimation helps in planning, budgeting, and making informed decisions about project
feasibility and execution.
Gantt Chart: A visual timeline that displays project tasks and their durations as horizontal bars.
It helps in scheduling, tracking progress, and understanding task dependencies.
Network Diagram/Analysis: A graphical representation of project activities and their logical
relationships, often using nodes and arrows. It helps in identifying critical paths and
dependencies.
CPM (Critical Path Method): CPM is a project management technique that identifies the critical
path, which is the sequence of tasks with the longest duration in a project schedule.
It helps determine the shortest time needed to complete a project by considering task
dependencies, durations, and their impact on the project's overall timeline.
PERT (Program Evaluation and Review Technique): PERT is a project management technique
that uses three-time estimates (optimistic, pessimistic, and most likely) to calculate expected
durations for tasks.
It focuses on managing uncertainty and risk by providing a range of possible project completion
times based on the probabilistic nature of task durations.
Float, also known as slack, refers to the amount of time that a task within a project can be
delayed without causing a delay in the overall project completion date.
• Total Float/Slack: Total float is the amount of time a task can be delayed without delaying
the project's completion date. It represents the extra time available for non-critical tasks and
is calculated by analyzing the critical path of the project.
• Free Float/Slack: Free float is the amount of time a task can be delayed without delaying
the start of any subsequent task. It considers only the immediate successor tasks' start dates.
Functional Point Analysis (FPA) is a technique used to measure the functionality of a software
system based on user requirements, assisting in estimating project effort and resources.
AFP: UFP*CAF
CAF = 0.65 + (0.01 × ∑ (Complexity Factor Values))
Automation refers to the use of information systems to automate certain business processes,
such as payroll, accounting, or inventory management, in order to increase efficiency and
accuracy Ex: An automated payroll system that calculates and processes employee salaries and
benefits automatically
Informatization refers to the use of information systems to manage and store information, and
to make it more accessible and useful to users. Ex: An enterprise resource planning (ERP) system
that manages and stores information about a company's financials, supply chain, and operations
Transformation refers to the use of information systems to fundamentally change the way that
a business operates, such as by adopting a cloud-based customer relationship management
(CRM) system. Ex: The adoption of a cloud-based ERP system that allows for real-time access to
financial and operational data from any location.
The waterfall model is a software development methodology that follows a sequential approach
to project management. It is a linear process that divides the software development process into
distinct phases, each of which must be completed before the next phase can begin.
The waterfall model is typically divided into the following phases:
1. Requirements gathering and analysis: This phase involves gathering requirements from
stakeholders and analyzing them to understand the scope and objectives of the project.
2. System design: This phase involves designing the architecture and components of the
software system.
3. Implementation: This phase involves coding the software system based on the system
design.
4. Testing: This phase involves testing the software system to ensure that it meets the
requirements and is free of defects.
5. Deployment: This phase involves deploying the software system to production so that it
can be used by users.
6. Maintenance: This phase involves maintaining the software system and fixing any defects
that are found.
Here are some advantages and disadvantages of the waterfall model:
Advantages:
• Simple and straightforward to understand and manage
• Easy to track progress
• Can be effective for projects with well-defined requirements
Disadvantages:
• Inflexible and difficult to adapt to changes in requirements
• Can lead to costly rework if requirements are not well-defined
• Can be difficult to get feedback from users until the software system is deployed
Agile is an iterative and flexible approach to software development that prioritizes collaboration,
customer feedback, and the delivery of functional products in short, incremental cycles.
• Agile methods break tasks into smaller iterations, or parts do not directly involve long
term planning.
• Each iteration is small and easily manageable and can be completed within a couple of
weeks only. (2 to 4 weeks)
• At a time one iteration is planned, developed, and deployed to the customers. Long-term
plans are not made.
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 economic
feasibility.
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.
Principles
1. Customer Satisfaction Through Early and Continuous Delivery: Agile prioritizes delivering
valuable software to customers as early and frequently as possible to gather feedback and
ensure customer satisfaction.
2. Welcome Changing Requirements, Even Late in Development: Agile teams embrace
changing requirements, even if they arise late in the project, to provide better value to the
customer.
3. Frequent Delivery of Working Software: Agile promotes delivering working, usable software
at regular intervals, typically in short iterations (sprints).
4. Collaboration Between Business People and Developers: Agile encourages close
collaboration and communication between business stakeholders and the development
team throughout the project.
5. Build Projects Around Motivated Individuals: Agile teams should be comprised of motivated
individuals who are trusted to do their work effectively. Support them, and they will deliver
results.
6. Face-to-Face Communication: Whenever possible, Agile teams favor face-to-face
communication as it is the most effective means of conveying information and resolving
issues.
7. Working Software as the Primary Measure of Progress: The primary measure of progress in
Agile is the working software product. Other metrics are secondary.
8. Sustainable Development, Able to Maintain a Constant Pace: Agile promotes a sustainable
working pace for development teams to ensure continuous progress and avoid burnout.
9. Continuous Attention to Technical Excellence and Good Design: Agile teams prioritize
technical excellence and good design to maintain the quality of the software.
10. Simplicity—the Art of Maximizing the Amount of Work Not Done: Agile values simplicity and
seeks to minimize unnecessary work or features.
11. Self-Organizing Teams: Agile teams are self-organizing and empowered to make decisions
about how to achieve their goals.
Values of Agile
1. Individuals and Interactions over Processes and Tools: Agile places a higher value on the
interactions and collaboration between team members and stakeholders rather than
relying solely on rigid processes and tools. Effective communication and teamwork are
essential for success.
2. Working Software over Comprehensive Documentation: While documentation is
important, Agile prioritizes delivering functional and working software as the primary
measure of progress. It values tangible results over extensive documentation.
3. Customer Collaboration over Contract Negotiation: Agile encourages close collaboration
with customers, end-users, and stakeholders throughout the project. It seeks to build a
partnership where customers are actively involved in shaping the product and providing
feedback, rather than relying on fixed contracts.
4. Responding to Change over Following a Plan: Agile embraces change as a natural part of
the development process. It values the ability to respond to changing requirements,
priorities, and market conditions over rigidly adhering to a fixed plan.
Advantages of Agile:
1. Customer focus and satisfaction.
2. Flexibility to accommodate changes.
3. Faster delivery of working software.
4. Continuous process improvement.
5. Enhanced transparency and collaboration.
6. Risk reduction and better quality.
7. High customer satisfaction.
Disadvantages of Agile:
1. Potential scope creep.
2. Complexity in large or distributed teams.
3. Minimal documentation may be insufficient.
4. Not suitable for highly uncertain projects.
5. Demands active involvement and resources.
6. Resistance to cultural and process changes.
7. Limited predictability in project timelines and budgets.
8. Not ideal for all project types, especially those with strict regulatory requirements.
Scrum is an Agile methodology (framework) focused on customer satisfaction through
transparent communication, collective responsibility, and continuous progress.
It begins with a general idea, creating a prioritized list of desired features (product backlog)
defined by the product owner.
Steps in Scrum
1. Product Backlog: Create a prioritized list of desired features and requirements.
2. Sprint Planning: Select items from the Product Backlog for the upcoming sprint.
3. Sprint: Work on selected items during a short, time-boxed cycle (sprint).
4. Daily Stand-up: Hold daily meetings for team coordination.
5. Sprint Review: Demonstrate completed work and gather feedback at the end of the
sprint.
6. Sprint Retrospective: Reflect on the sprint and make process improvements.
7. Repeat: Continue with new sprints, iterating and improving the product.
Players
The product owner takes care of the end user’s interests;
The Scrum master coordinates the whole development process. Another task is to make
sure that Scrum is used properly and to hold regular Scrum meetings;
The Scrum team develops the product. Its main tasks are programming, analysis, testing,
etc.
Xtreme Programming
Extreme Programming (XP) is an Agile software development methodology that emphasizes
customer satisfaction, continuous feedback, and a high level of teamwork.
It involves practices such as pair programming, test-driven development, and frequent releases
to deliver high-quality software in small, incremental steps.
Principles
1. Rapid Feedback: Seek feedback from various sources frequently and make quick
adjustments.
2. Assume Simplicity: Choose the simplest solution that works and avoid unnecessary
complexity.
3. Incremental Change: Make small, incremental changes rather than large, disruptive ones.
4. Embracing Change: Be open to changing requirements and adapt to them efficiently.
5. Quality Work: Strive for excellence in all aspects of the project, including code quality and
testing.
Values
1. Feedback: Seek frequent feedback from customers, users, and team members to ensure
that the project is on track and that requirements are well-understood and met.
2. Communication: Promote open and effective communication within the team and with
stakeholders to ensure everyone has a shared understanding of goals and progress.
3. Simplicity: Emphasize simplicity in design and implementation to reduce complexity and
make the software easier to understand and maintain.
4. Courage: Encourage team members to have the courage to speak up about issues, take
risks, and make necessary changes to improve the project.
5. Respect: Foster a respectful and collaborative environment where team members value
each other's contributions and ideas.
Players
• Customer
• Programmers
• Coach (Optional)
• Tracker
Advantages
• Stable system
• Clear code
• Fast delivery
• Reduced documentation
• high level of visibility and accountability
Disadvantages
• Unclear estimates
• Time waste
• Less documentation
• Pair programming takes longer
Consideration while choosing Suitable Software Development Model
1. Project Requirements: Understand project goals and scope.
2. Project Characteristics: Evaluate size, complexity, and resources.
3. Customer Needs: Assess user involvement and feedback requirements.
4. Development Team: Consider team's familiarity and adaptability.
5. Risk Assessment: Identify potential risks and mitigation strategies.
6. Budget and Timeline: Review available resources and timeline.
7. Explore Model Options: Research different development models.
8. Match Model to Project: Align project characteristics with model strengths.
9. Prioritize Trade-offs: Consider speed, flexibility, and documentation.
10. Stakeholder Input: Involve clients, users, and stakeholders.
11. Adaptability: Choose a model that allows adjustments.
12. Test and Refine: Pilot the chosen model on a smaller scale.
Risk: The possibility of negative events or outcomes that could impact a project, process, or goal.
Risk Management: The process of identifying, assessing, and mitigating potential risks to
minimize their impact and ensure project or organizational success.
• Risk Assessment: Involves identifying, analyzing, and prioritizing risks, along with
understanding their potential impact.
• Risk Control: Encompasses strategies like risk reduction, contingency planning, continuous
monitoring, and reassessment to manage risks effectively.
Risk Contingency Plan: Prepared actions for dealing with project risks if they occur. Lists risks,
their likelihood, impact, and management steps.
Risk Mitigation Plan: Outlines actions to reduce risks' likelihood or impact on projects, lessening
their effects.
Strategies:
• Reactive Risk Strategy: Addressing risks after they occur, often involving mitigation or
contingency plans to minimize their impact.
• Proactive Risk Strategy: Identifying and addressing risks before they happen through
preventive measures and mitigation planning.
Categories of Risk:
• Project Risks: Risks specific to the project, including budget overruns, scope changes, and
resource shortages.
• Technical Risks: Associated with technology, such as software bugs, compatibility issues, and
untested components.
• Business Risks: Relating to the project's impact on the organization, market changes, or
economic factors.
• Known Risks: Risks that are identified and understood before the project begins, allowing for
planning and mitigation.
• Predictable/Unpredictable Risks: Predictable risks are anticipated based on historical data
or patterns, while unpredictable risks are harder to foresee and prepare for.
Five Views of Quality:
1. Transcendent View: Quality is intuitive and cannot be precisely defined but is universally
recognized when experienced. Reputation and recognition.
2. Product-Based View: Quality is measured by tangible characteristics and attributes of a
product or service. Functionality
3. User-Based View: Quality is defined by how well a product or service meets the needs
and expectations of its users.
4. Manufacturing-Based View: Quality is determined by conforming to specifications and
minimizing defects in production.
5. Value-Based View: Quality is evaluated by the benefits and value a product or service
provides compared to its cost.
McCall’s Model of Software Quality
Product Operation:
• Interoperability: Software can seamlessly integrate and interact with other systems.
Standards: Standards are established guidelines, rules, or specifications that define a set of
criteria or requirements for products, processes, services, or systems.
• They are developed to ensure consistency, quality, safety, and interoperability across various
industries and domains.
• Standards provide a common framework that helps organizations achieve uniformity,
reliability, and compatibility in their offerings, enhancing efficiency and facilitating
communication within and between industries.
The reasons to adopt quality standards:
• Avoid Errors: Using established quality and design methods helps prevent errors and
inconsistencies in development.
• Build Confidence: Adhering to quality standards establishes trust and confidence between
customers and developers.
• Enhance Product Quality: Elevating the quality of products boosts the reputation of the
company.
• Reduce Costs: Implementing quality practices and effective project management lowers
development costs and reduces the need for rework.
• Meet Customer Expectations: Customers expect quality standards due to their widespread
adoption in the industry.
Total Quality Management (TQM): TQM is a comprehensive approach that focuses on improving
the quality of products, services, and processes across all aspects of an organization.
It involves fostering a culture of continuous improvement, customer satisfaction, and employee
engagement.
TQM aims to eliminate defects, enhance efficiency, and ensure that quality is ingrained in every
facet of the organization's operations.
Change management refers to the structured process of preparing, equipping, and supporting
individuals, teams, and organizations to adopt changes in a deliberate and organized manner.
It is a crucial aspect of any project, initiative, or transformation that brings about significant
changes in an organization's processes, technologies, structures, or culture.