SPM (Lecture 5) (Selection of An Appropriate Project Approach
SPM (Lecture 5) (Selection of An Appropriate Project Approach
Project Approach
Faculty: Dr. Muhammad Naveed
Introduction
• The development of software in-house usually means that
• The developers and the users belong to the same organization
• The application will slot into a portfolio of existing computer-based systems
• The methodologies and technologies are largely dictated by organizational
standards and policies, including the existing enterprise architecture.
• The decision making process has been called technical planning, or
project analysis or methods engineering and methods tailoring.
• This may count as the 3rd step of Step-wise project planning approach
as analyze project characteristics.
‘Step Wise’ - an overview
0.Select
1. Identify project 2. Identify project
project objectives infrastructure
3. Analyse
project
characteristics
Review
4. Identify products
and activities
5. Estimate effort
Lower for activity For each
level activity
detail 6. Identify activity
risks
10. Lower level
7. Allocate
planning
resources
8. Review/ publicize
9. Execute plan plan
3
Build or Buy?
• Software development
• Developers
• Clients or Users
• In-house development
• Developers and users are in the same organization
• Outsourced development
• Developers and users are in different organizations
• Different organization could be different continents
• Recruitment of technical staff
• Once the project has been completed, will no longer be required
• Contracting the project out to an external IT development company would be a
better option
Build or Buy? cont..
• Whether in-house or outsourced, software development is still involved.
• Advantages of outsourced development
• Large number of customers, reduced cost per customer
• The software already exist, so
• It can be examined and even trailed before acquisition
• No delay as software already developed
• Most of the bugs already removed as reported by several customers
• More reliable software
• Disadvantages of outsourced development
• Same application as everyone else, there is no competitive advantage
• Although flexibility there but is limited, so have to change the office procedures
• You will not own the software code
• You may be charged extra inflated cost since you have been captive customer
Choosing Methodologies and Technologies
• The term methodology describes a collection of methods.
• Methods
• A general way of carrying out a specific task that could be applicable to any project
needing to do that task
• Methods often involve the creation of models like ERD, Unified Software Development
Process (USDP), Structured Systems Analysis and Design methods (SSADM) and
Human-Centered Design
• Technologies
• Involve the application of scientific, mathematical or logical principles to resolve a
particular kind of problem
• Include appropriate application building and automated testing environments
• Project analysis should select the most appropriate methodologies and
technologies for a project
Identify project as either objective-driven or
product-driven
Objective-Driven Projects:
Pros:
1.Clarity of Purpose: Objectives provide a clear direction for the project team,
ensuring everyone is aligned on what needs to be achieved.
2.Flexibility: Teams can adapt their approach and methods as long as they are
moving towards the defined objectives, allowing for creative problem-solving
and innovation.
3.Measurable Results: Objectives are typically quantifiable, making it easier to
track progress and evaluate the success of the project.
4.Stakeholder Alignment: Clear objectives help stakeholders understand the
project's purpose and expectations, leading to better support and collaboration.
Identify project as either objective-driven or
product-driven
Objective-Driven Projects:
Cons:
1.Narrow Focus: Objectives may limit exploration of alternative solutions or
opportunities that could add value but are not directly tied to the defined
goals.
2.Rigidity: In some cases, strict adherence to objectives may stifle creativity
and prevent teams from responding effectively to changing circumstances.
3.Risk of Tunnel Vision: Team members may become overly focused on
achieving the objectives, potentially overlooking broader strategic
considerations or unintended consequences.
Identify project as either objective-driven or
product-driven
Product-Driven Projects:
Pros:
1.Customer Focus: Product-driven projects prioritize meeting customer needs and
delivering value through the product, leading to increased customer satisfaction
and loyalty.
2.Iterative Improvement: Continuous product development and iteration allow for
ongoing improvements based on user feedback and market trends.
3.Innovation: Emphasis on the product encourages teams to explore new ideas,
features, and technologies that can differentiate the product in the market.
4.Long-Term Vision: Product-driven projects often align with long-term strategic
goals, fostering sustainability and growth.
Identify project as either objective-driven or
product-driven
Product-Driven Projects:
1.Ambiguity: Without clear objectives, teams may struggle to prioritize tasks,
make decisions, or measure success effectively.
2.Scope Creep: Continuous product development can lead to scope creep, where
the project expands beyond its initial boundaries, increasing complexity and risk.
3.Resource Allocation: Balancing ongoing product improvements with new
initiatives or projects can be challenging, requiring careful resource allocation
and prioritization.
4.Stakeholder Expectations: Managing stakeholder expectations can be more
complex in product-driven projects, as priorities and features may evolve over
time based on feedback and market dynamics.
Identify high level project risks
Product Uncertainty
• Definition: Product uncertainty refers to uncertainties related to the
software product being developed, including requirements,
functionalities, and user expectations.
• Example: Developing a mobile app where the target audience's
preferences and usage patterns are not well understood, leading to
uncertainty about feature prioritization and design decisions.
Identify high level project risks
Process Uncertainty
• Definition: Process uncertainty involves uncertainties related to the
development process, methodologies, tools, and team dynamics.
• Example: Adopting a new agile development methodology for a
project without prior experience, resulting in uncertainty about the
team's ability to effectively implement and adapt to the new approach.
Identify high level project risks
Resource Uncertainty
• Definition: Resource uncertainty encompasses uncertainties related to
resource availability, skills, capacity, and dependencies.
• Example: Depending on a critical external vendor for a key
component of the software, leading to uncertainty about delivery
timelines and potential risks if the vendor fails to meet expectations.
Mitigating risks
Mitigating Product Uncertainty
• Strategies: Conduct user research, gather feedback through prototypes,
prioritize features based on data and user needs.
• Example: Running usability tests and gathering feedback from beta
testers to validate design choices and prioritize features effectively.
Mitigating risks
Mitigating Process Uncertainty
• Strategies: Provide training and support for new methodologies,
establish clear communication channels, conduct regular
retrospectives for process improvement.
• Example: Investing in agile coaching and training for the team to
ensure a smooth transition to agile practices and continuous
improvement throughout the project.
Mitigating risks
Mitigating Resource Uncertainty
• Strategies: Diversify resources, build contingency plans, establish
clear roles and responsibilities, monitor and manage dependencies
proactively.
• Example: Identifying backup vendors or alternative solutions for
critical dependencies, maintaining a skilled and adaptable team to
mitigate resource risks.
Software Process and Process Model
Software Process Overview
• Definition: A software process is a set of activities, methods, and tools
used to develop and maintain software products.
• Key Components: Planning, requirements analysis, design,
implementation, testing, deployment, maintenance.
• Importance: Ensures systematic and organized development, enhances
quality, facilitates collaboration.
Software Process and Process Model
Characteristics of Software Processes
• Iterative and Incremental: Development occurs in cycles, with
feedback and improvements incorporated iteratively.
• Tailorable: Processes can be customized based on project needs, team
capabilities, and project complexity.
• Risk-Driven: Emphasizes identifying and managing risks throughout
the development lifecycle.
• Measurable: Metrics and measurements are used to assess progress,
quality, and performance.
Software Process and Process Model
Common Software Process Models
• Waterfall Model: Sequential phases (requirements, design, implementation,
testing, deployment) with linear progression.
• Agile Model: Iterative and collaborative approach, emphasizing flexibility,
adaptability, and continuous improvement.
• Spiral Model: Iterative with risk analysis and prototyping, suitable for large,
complex projects with evolving requirements.
• V-Model: Corresponds testing phases to development phases, ensuring
comprehensive testing at each stage.
• Incremental Model: Divides project into smaller increments, delivering
functionality incrementally.
Software Process and Process Model
Waterfall Model
• Overview: Sequential phases with linear progression from
requirements to deployment.
• Pros: Simple and easy to understand, well-suited for small, well-
defined projects with stable requirements.
• Cons: Limited flexibility, late feedback incorporation, potential for
high risk in complex or evolving projects.
Software Process and Process Model
Agile Model
• Overview: Iterative, collaborative approach focusing on delivering
working software in short iterations (sprints).
• Pros: Flexibility, adaptability to changing requirements, early and
continuous customer feedback, promotes teamwork.
• Cons: Requires experienced team and customer involvement,
challenges with documentation and scalability in large projects.
Agile Model Example:
Mobile Banking Application Development