PROJECT MANAGEMENT
What is Software Project Management (SPM)?
Software Project Management (SPM) is all about planning, organizing, and observing the software development process to
make sure the project is completed successfully, on time, and within budget. It involves tasks like planning, defining the project
scope, calculating how much time and resources are needed, scheduling tasks, allocating resources, and tracking progress.
The ultimate goal is to deliver a high-quality software product that meets the needs and expectations of the users.
Project Management:-
Project management is the discipline of planning, executing, and overseeing projects to achieve specific goals within defined
constraints, such as time, budget, and resources. It contains a range of processes and methodologies designed to ensure that
projects are completed successfully and efficiently.
At its core, project management involves several key concepts, including defining project objectives, organizing tasks, allocating
resources, and monitoring progress. Various approaches, such as traditional project management, Agile, and Lean, provide
frameworks for managing projects in different contexts and industries.
Project Management History
Project management is like planning a big party. Back in ancient times, if someone wanted to build a big monument or a grand
palace, they had to organize everything themselves, like gathering materials and workers, and making sure everything was done
on time. It was a bit messy! As time passed, people realized that planning ahead and organizing tasks made things run much
smoother. Think of it like creating a recipe for the perfect party. You plan what food to serve, who to invite, and what activities to
have. This is pretty much what project management involves—planning, organizing, and coordinating tasks to achieve a goal,
whether it’s constructing a pyramid or launching a new product.
In the 20th century, project management became more formal. People started using charts and diagrams to track progress, like
making a to-do list for the party and checking things off as they're done. And nowadays, with computers and fancy software,
project management has become even more sophisticated. It's like having a super-organized party planner who keeps everything
on track and makes sure nothing gets forgotten.
Evolution of Software Economics:-
Economics is an activity which deals with distribution and consumption of goods and services.
Economics means system of interrelation of money industry and employment.
Software Econoics:-
Software Economics in Software Engineering is mature research area that generally deals with most difficult and challenging
problems and issues of valuing software and determining or estimation costs usually involved in its production.
Software economics is basically situated at intersection of information economics and even software design and engineering.
Most of software cost models are generally abstracted into function of five basic parameters. These parameters are given below :
• Size - Size is generally measured or qualified in term of number of source instructions or in SLOC (Source line of code) or
number of function points required to realize desired capabilities. The size of end product or result is required to
develop or create required functionality.
• Process - The process is steps that are used to guide all of activities and produce end products, in particular ability and
capability of process to avoid or ignore activities that are not adding any value. It also supports heading towards the
target or goal and eliminate activities that are not essential or important.
• Personnel - The capabilities of personnel of software engineering in general, and particularly their experience with
issues or problems regarding computer science and issues regarding application domain of project. It emphasizes on
team and responsibilities of team.
• Environment - It is simply made of various tools and techniques and automated procedures that are available and used
to support software development and effort in an efficient way.
• Quality - The required quality along with its features, performance, reliability, scalability, portability, usability, user
interface utility, adaptability, and many more.
Between these parameters, relationship and estimated cost can be written in following way :
Effort = (Personnel) (Environment) (Quality) (Size Process)
Generations of Software Development - There are three generations of software development as described below :
• Conventional Development (1960s and 1970s) - During this generation, organizations used various custom tools,
custom processes, and all components of custom that are built or developed in primitive languages. The size is 100 %
custom. At this generation, conventional development is generally considered bad. It is because it was always costly and
over budget and schedule. It also does not fulfill requirements that are necessary such as some components, symbolic
languages, other languages like Fortran, PL/1, etc. The quality of performance was always poor and less than great.
• Transition (1980s and 1990s) - During this generation, organizations used various repeatable processes and off-the-shelf
tools, and more likely to use custom components) that are generally developed in high-level languages. The size is 30 %
component-based and 70 % custom. It is not predictable to decide whether it is bad or good. Transition development is
infrequently on budget and schedule. Some of commercial components were simply available such as databases,
networking along with operating system, database management system, and graphical user interface. But due to an
increase in complexity, all languages and technologies available were not enough for desired business performance.
• Modern (2000 and later) - Modern development processes are generally measured and managed, integrated
automated environments, 70% off-the-shelf components. The size is 70 % component-based and 30 %custom. Modern
development is usually in budget and in schedule.
Conventional Transition Modern Practice
Minimize development cost Deliver software on time Maximize customer and business
value
Development cost savings Schedule and budget adherence ROI, customer satisfaction, business
impact
Waterfall, sequential Iterative, structured Agile, Scrum, Lean, DevOps
Expensive hardware, limited resources Growing competition, need for Digital transformation, user focus
predictability
Efficiency in coding and cost control Planning and tracking timelines Continuous delivery of customer value
Improving S/W Economics
To improve the s/w economics , There are 5 basic parameters of the s/w cost model.
1. Reducing s/w product size:-
Reducing the size of a software product is essential for improving performance, minimizing resource usage, and enhancing
user experience, especially in constrained environments like mobile or embedded systems. Key techniques include removing
dead code, optimizing algorithms, compressing assets, and managing dependencies effectively. Tools like minifiers (for web
apps), compiler optimization flags, and tree shaking help eliminate unnecessary components. Smaller software leads to
faster downloads, reduced memory usage, quicker startup times, and easier maintenance. This practice is especially
important in delivering efficient, scalable, and user-friendly applications.
2. Improving s/w processes:-
Improving software processes involves enhancing the methods and practices used in software development to increase
productivity, quality, and efficiency. This can be achieved by adopting Agile or DevOps methodologies, using continuous
integration and delivery (CI/CD), implementing automated testing, and applying process models like CMMI or ISO/IEC 12207.
Regular retrospectives, metrics tracking, and team training help identify bottlenecks and promote continuous improvement.
Improved processes reduce defects, shorten delivery time, and better align the software with user needs and business goals.
3. Improving Team Effectiveness:-
Improving team effectiveness in software development involves enhancing collaboration, communication, and productivity
among team members. Key strategies include clearly defined roles and goals, fostering a culture of trust and accountability,
and promoting open communication. Regular stand-up meetings, retrospectives, and knowledge sharing help keep everyone
aligned. Providing training, encouraging cross-functional skills, and using collaboration tools (like Jira, Slack, Git) also boost
efficiency. A motivated, well-coordinated team delivers higher-quality software, adapts better to changes, and contributes to
overall project success.
4. Improving automation through s/w environments :-
Improving automation through software environments enhances development speed, accuracy, and reliability. It involves
using integrated development environments (IDEs), CI/CD pipelines, version control systems, and automated testing tools to
streamline repetitive tasks like building, testing, and deployment. Environments like GitHub Actions, Jenkins, and Docker
help automate integration, testing, and delivery, reducing manual errors and improving consistency. Automation also
supports faster feedback, better resource utilization, and continuous improvement. Overall, it leads to higher productivity,
reduced time-to-market, and improved software quality.
5. Achieving required quality :-
Achieving the required quality in software means delivering a product that meets customer expectations, functional
requirements, and reliability standards. This involves following well-defined quality assurance (QA) practices such as code
reviews, unit testing, integration testing, and automated test suites. Adopting standards and models like ISO 9001, CMMI,
and Six Sigma helps maintain consistent quality. Regular user feedback, continuous integration, and defect tracking ensure
early detection and resolution of issues. A focus on quality leads to fewer bugs, higher user satisfaction, and long-term cost
savings.
Software development principles are guidelines that help developers create robust, maintainable, and efficient software.
These principles can be categorized into modern principles and SOLID principles.
Modern Principles of Software Development
1. Architecture First Approach: This principle emphasizes building a strong architecture for the software. It involves
identifying ambiguities and flaws early in the development process to enhance productivity.
2. Iterative Life Cycle Process: This approach involves repeating the process of requirement gathering, design,
implementation, and testing to mitigate risks early.
3. Component-Based Approach: This principle focuses on reusing previously defined functions or components to optimize
the requirements and design process.
4. Change Management System: This process manages all changes to improve the quality of the software by performing
necessary changes and testing them.
5. Round Trip Engineering: This involves code generation and reverse engineering in a dynamic environment, allowing
developers to work on both simultaneously.
6. Model-Based Evolution: This approach supports the evolution of graphics and textual notions.
7. Objective Quality Control: This involves improving the quality of software through quality management plans, metrics,
checklists, baselines, and improvement measures.
8. Evolving Levels of Details: This principle involves planning incremental releases with evolving levels of use cases,
architecture, and details.
9. Establish a Configurable Process: This involves creating a process that is economically scalable and can deal with various
applications.
10. Demonstration-Based Approach: This approach focuses on demonstrating the problem domain, approaches used, and
solutions to increase productivity and quality.
Unit 2
Software Management Process Framework
A Software Process Framework is a structured approach that defines the steps, tasks, and activities involved in software
development. This framework serves as a foundation for software engineering, guiding the development team through
various stages to ensure a systematic and efficient process. A Software Process Framework helps in project planning, risk
management, and quality assurance by detailing the chronological order of actions.
Since it serves as a foundation for them, it is utilized in most applications. Task sets, umbrella activities, and process
framework activities all define the characteristics of the software development process. Software Process includes:
1. Tasks: They focus on a small, specific objective.
2. Action: It is a set of tasks that produce a major work product.
3. Activities: Activities are groups of related tasks and actions for a major objective.
There are two stages in s/w development process
1. Engineering Stage 2. Production Stage.
To achieve the scale of economics and higher ROI, the development should develop the s/w with process automation and in
component based development model.
1. Engineering stage :- Less prediction but smaller teams doing design and production activites .
Engineering stage is decomposed into two distinct phases.
a. Inception b. Elaboration.
2. Production Stage :- More predictable , but larger teams doing construction test and development activites.
Production stage is decomposed into two distinct
a. Construction b. Transition.
What is the Inception Phase?
The Inception Phase is the first phase in the software development life cycle (SDLC) within the Unified Process (UP) framework.
Its main purpose is to define the project scope, business case, risks, and feasibility before committing significant resources.
It’s all about answering the question:
"Is this project worth investing in?"
Objectives of the Inception Phase
• Understand what the system should do (initial requirements)
• Define the business context and project scope
• Identify key risks and decide if they are acceptable
• Develop a vision and preliminary architecture
• Estimate cost, time, and resources
• Secure stakeholder buy-in for moving forward.
Example Scenario
Imagine a company wants to build an online food delivery app.
In the Inception Phase, they would:
• Identify stakeholders (e.g., users, delivery partners, restaurants)
• Define goals (e.g., fast delivery, real-time tracking)
• Create initial use cases (e.g., user orders food, driver picks up order)
• Assess risks (e.g., scalability, real-time location updates)
• Build a small UI prototype or wireframe
• Estimate budget, timeline, and team needs
What is the Elaboration Phase?
The Elaboration Phase is the second phase of the Unified Software Development Process.
Its primary goal is to analyze the problem domain in depth, define a robust software architecture, and address high-risk elements
of the project early.
It answers the question:
"How will we build the system, and can we build it safely and correctly?"
Objectives of the Elaboration Phase
• Refine and detail system requirements
• Design a stable and scalable architecture
• Mitigate high-priority technical and business risks
• Create a working architectural prototype
• Update project plans with more realistic estimates
• Achieve stakeholder agreement on the architecture and scope
Example Scenario
Continuing from the food delivery app example:
In the Elaboration Phase, the team would:
• Refine use cases: include edge cases like “cancel order” or “restaurant unavailable”
• Design architecture: define layers (e.g., UI, business logic, database, GPS service)
• Build a prototype: show order placement, tracking, and basic payment flow
• Analyze risks: scalability, third-party integration, location accuracy
• Update project plan: based on actual coding efforts and challenges faced
What is the Construction Phase?
The Construction Phase is the third phase in the software development life cycle under the Unified Process.
Its main goal is to develop the complete software system based on the architecture and requirements finalized in the Elaboration
Phase.
It answers the question:
"Can we build a complete, tested, and ready-to-deploy software product?"
Objectives of the Construction Phase
• Develop all system features as per finalized requirements
• Ensure the system meets performance, usability, and quality expectations
• Conduct comprehensive testing (unit, integration, system testing)
• Prepare the system for deployment and user acceptance
• Finalize user documentation and training materials
Example Scenario
For the online food delivery app:
During the Construction Phase, the team would:
• Implement all features like order placement, real-time tracking, payment gateway
• Integrate restaurant, user, and delivery partner interfaces
• Conduct full testing for usability, accuracy, and load performance
• Finalize user guide (how to place an order, contact support, etc.)
• Prepare training materials for restaurant partners or customer support staff
What is the Transition Phase?
The Transition Phase is the fourth and final phase in the software development life cycle under the Unified Process.
Its main goal is to release the software to end-users, ensure it is fully operational, and provide support during the rollout.
It answers the question:
"Is the system ready for deployment, and are the users ready to use it effectively?"
Artifacts of the process:-
Artifacts set:- To manage the complete s/w development process, we should collect various kinds of information and organised it
into artifact sets.
Here set represent a complete view of the system and an artifact represents interrelated information that is developed and
reviewed as a single entity.
They include documents, models, diagrams, code, and other deliverables that support the planning, design, implementation, and
maintenance of the system.
Artifacts serve several purposes.
Guide and record project progress
Communicate between stakeholders
Enable reuse, maintenance, and quality assurance.
Artifacts in the software process are generally grouped into three main categories:
1. Management Artifacts
• Support project planning, tracking, and control
• Help manage resources, risks, schedules, and reporting
2. Engineering Artifacts
• Describe the system’s functionality, structure, behaviour, and implementation
• Represent technical knowledge
3. Pragmatic Artifacts
• Support the application of standards, processes, and tools
• Provide guidance, structure, and practical implementation support
Management Artifacts and its types:-
Management Artifacts includes overseeing whole condition or situation to confirm and ensure that instructional technology
project gets done. It contains various activities that capture intermediate results and supporting information and data that are
essential to document the end-product/process legacy, maintain the end-product, increase quality of product, and also increases
performance of the process. Some types of Management Artifacts :
1. Business Case - The business case generally provides justification for initiating project, task, program, or portfolio. This
justification is simply based on the estimated cost of the development and implementation against risks and issues and
evaluated business benefits and savings to be gained. It is created and developed during early stages of project and
simply explains why, what, how, and who necessary to decide whether if it is worthwhile continuing or initiating project.
A business case is good if describes problems and issues, determines all the possible options to address it, and gives
permission to the decision-makers to decide which of the course of the action will be best for organization. The main
goal of business case to convert vision into economic teams so that organization can develop exact and accurate ROI
(Return on Investment) assessment.
2. Software Development Plan (SDP) - Software development plan aims to lay out whole plan which is necessary and
required in order to develop, modify, and upgrade software system. It is ready-made solution for managers for software
development. It provides acquirer insight and tool for checking processes that have to be followed for development of
software. It simply indicates two things: Periodic updating and understanding and approval by managers and
practitioners alike.
3. Work Breakdown Structure (WBS) - Work breakdown structure is deliverable-oriented breakdown of project into
component of small size. WBS is created and developed to establish similar understanding of scope of project. It is
hierarchical tree structure that layout project and simply breaks it down into smaller and manageable portions or
components. It is vehicle for budgeting and collecting or gathering costs.
4. Software Change Order Database - For Iterative development process, primary task to manage change. A project can
iterate (perform repeatedly) more productively with large change freedom. This change of freedom has been gained
due to automation.
5. Release Specification - Release specifications generally mean tests and limits against that which raw material,
intermediate and end product are accurately measured just before use or release. Two important forms of requirements
in release specifications are Vision Statement (captures contract between development group and buyer) and
Evaluation Criteria (management-oriented requirements that can be showed and represented using use cases, use cases
realizations, etc).
6. Deployment - The deployment includes numerous subsets of documents for transitioning product into operational
status. It is simply application code as it runs on production: built, bundled, compiled, etc. It is process of putting artifact
where it is necessary and performing any tasks it needs so as to achieve its purpose. It can also include computer system
operations manuals, software installations manuals, plans and procedures for cutover, etc.
7. Environment - Automation of development process needs and important to get supported by robust development
environment. It must include following points :
• Management of requirements.
• Visual Modeling.
• Automation of document.
• Automated regression testing.
• Tools of host and target programming.
• Tracking of features and defects or errors.
Engineering Artifacts and its types (click ).
Pragmatic Artifacts and its types (click).
Model based software architectures in project management
Model-based software architecture in project management refers to the use of abstract representations (models) to design,
analyze, communicate, and manage the software architecture throughout the software development lifecycle. This approach is
widely used in complex software projects to ensure consistency, improve decision-making, and enhance communication among
stakeholders.
Model-based software architecture (MBA) is a software development approach that uses models as the primary artifacts in the
development process. It focuses on creating and manipulating models to represent various aspects of the software system,
including its structure, behavior, and implementation details
Key Concepts and Benefits of MBA:
Abstraction and Complexity Management:
Models allow developers to work at different levels of abstraction, hiding implementation details and making it easier to manage
complex systems.
Early Design Validation:
Models can be used to simulate and validate the design before code is written, reducing errors and rework.
Improved Communication:
Models provide a common language for communication between stakeholders, including developers, designers, and clients.
Automated Code Generation:
Models can be used to automatically generate code, reducing development time and improving consistency.
Enhanced Reusability and Adaptability:
Models can be used to create reusable components and to adapt software systems to different environments and requirements.
Types of Models in MBA:
• Model-Driven Engineering (MDE):
MDE is a broader paradigm that emphasizes the use of models in software development. It includes techniques like Model-
Driven Development (MDD), Model-Driven Architecture (MDA), and Domain-Specific Modeling (DSM).
• Model-Driven Architecture (MDA):
MDA, proposed by the Object Management Group (OMG), focuses on separating the specification of system functionality from
its implementation. It uses three primary models: Computation Independent Model (CIM), Platform Independent Model (PIM),
and Platform Specific Model (PSM).
• Domain-Specific Modeling (DSM):
DSM focuses on creating domain-specific models that are tailored to a particular business domain or application area.
• Software Architecture Models:
These models provide a high-level view of the system's structure, components, and their relationships, often visualized using
diagrams like class diagrams, deployment diagrams, and use case diagrams.