Software Process and Management
Software Process and Management
com
• Actual Cost (AC): The cost incurred for the work performed. EVM helps assess whether a project
is on schedule and within budget.
• Requirements gathering: Understanding and documenting what the software needs to do.
SECTION B
• Software Process Change: Software processes need to evolve to keep up with new technologies,
improve efficiency, and meet changing business needs. The principles of software process
change focus on continuous improvement, feedback loops, and adapting to change.
• TSP (Team Software Process): TSP focuses on improving the productivity and quality of software
engineering teams. It promotes structured planning, regular reviews, and continuous
improvement by tracking team progress and resolving issues early.
• CMM (Capability Maturity Model): A framework that assesses the maturity of software
processes. It has five levels:
• Performance testing: Checking if the software performs well under various conditions.
5. Discuss the impact of risk in a project. How is risk monitoring achieved to avoid failure in the
project?
Risks in a project, such as changes in requirements, technical challenges, or schedule delays, can impact
its success. Monitoring risks involves:
• Implementing strategies to mitigate them (e.g., adjusting timelines, resources). Regular reviews
and tracking help identify and address risks early to avoid failure.
SECTION C
• Verify that the bug fix works and doesn’t cause new issues.
• Basic COCOMO: Estimates effort using a formula based on lines of code (LOC).
• Intermediate COCOMO: Adds cost drivers like product complexity, team experience, etc.
Example: For a software project with 10,000 LOC, the basic COCOMO model can estimate effort in
person-months and schedule in months.
• Iteration Planning: Involves planning short development cycles (iterations) where features are
developed, tested, and reviewed. After each iteration, feedback is used to refine the project.
• Pragmatic Planning: Focuses on practical and flexible approaches. It involves adapting plans as
necessary based on project realities and constraints.
(b) Explain how a project can be evaluated against strategic, technical, and economic criteria.
• Strategic Criteria: Assess if the project aligns with the organization’s goals and vision.
• Technical Criteria: Evaluate the technical feasibility, including tools, technologies, and resources
needed.
• Economic Criteria: Analyze cost-benefit, ROI (Return on Investment), and the financial
sustainability of the project.
https://sandeepvi.medium.com
(a) Explain in detail about the process of prioritizing monitoring with example.
Prioritizing monitoring involves identifying key tasks or risks that need more attention and allocating
resources to them. For example, in software development, critical tasks like security and performance
optimizations are monitored more closely than less important tasks.
(i) Six Sigma: A methodology to improve processes by identifying and eliminating defects. It uses
statistical methods to achieve a goal of fewer than 3.4 defects per million opportunities.
(ii) CMMI: The Capability Maturity Model Integration (CMMI) is a framework that helps organizations
improve their process maturity by focusing on continuous improvement.
(iii) ETVX: ETVX is a model that defines the entry, task, validation, and exit criteria for processes.
(iv) ACDM: A model for software development that focuses on requirements gathering, analysis, design,
and maintenance, emphasizing the long-term impact of design decisions.
https://sandeepvi.medium.com
SECTION A
• Verification is the process of ensuring that the software is built according to the specifications
(i.e., "Are we building the product right?").
• Validation is the process of checking if the software meets the user's needs and requirements
(i.e., "Are we building the right product?").
• Improved quality: By focusing on architecture early, you can avoid design flaws.
• Faster development: Clear architecture can lead to faster development since components are
well-defined.
• Scalability: Well-designed architecture allows the software to grow with minimal changes.
6. Define CMMI.
CMMI (Capability Maturity Model Integration) is a framework that helps organizations improve their
processes. It has five levels:
SECTION B
1. What is the use of agile? What are the types of agile? Explain in detail.
Agile is a project management and software development methodology that focuses on delivering small,
incremental changes to software in short cycles (called sprints). It emphasizes flexibility, collaboration,
and customer feedback.
2. Kanban: Focuses on continuous delivery and visualizing work using a board to track
tasks.
2. What are the main focuses of the architecture-centric approach? Explain in detail.
The architecture-centric approach focuses on the system's architecture as the foundation for
development. It aims to ensure that the system’s architecture is well-defined and aligns with business
and technical goals. Key focuses include:
• Designing a robust architecture: Ensuring that the system is scalable, reliable, and maintainable.
• Alignment with business goals: Making sure the architecture supports the business strategy.
• Breaking each deliverable into smaller tasks: Each task should be clear, achievable, and
measurable.
• Assigning resources and estimates: Once tasks are identified, resources are assigned, and time
estimates are made.
https://sandeepvi.medium.com
4. Why is it important for a software development organization to obtain ISO 9001 certification?
ISO 9001 certification demonstrates that an organization has a consistent, high-quality approach to
software development. It:
• Increases competitiveness.
SECTION C
1. What do you understand by the expression "life cycle model of software development"? Why is it
important to adhere to a life cycle model during the development of a large software product?
The software development life cycle (SDLC) is a structured approach to software development, consisting
of phases like requirement gathering, design, implementation, testing, and maintenance. Adhering to an
SDLC helps ensure that all aspects of the project are planned, executed, and reviewed systematically.
This reduces risks, improves quality, and helps meet deadlines.
• Faster delivery: Small, incremental releases make it easier to deliver functionality quickly.
Cons:
• Lack of documentation: Agile may lead to insufficient documentation since focus is on code.
• Constant changes: Frequent changes might lead to scope creep or instability in the software.
• Analyzing use cases: Use case diagrams help in understanding the interactions between the
system and users.
https://sandeepvi.medium.com
• Reviewing business processes: Study existing processes to identify key functions the software
must support.
• Documenting features: List the specific features and behaviors expected from the system.
• Impact analysis: Changes to one requirement can be traced to all impacted areas.
• Consistency: It ensures that all requirements are fulfilled during development and testing.
• Accountability: Helps ensure that no requirements are missed or misunderstood during the
process.
• Planned Value (PV): How much work was planned to be completed by a certain time.
• Earned Value (EV): How much work has actually been completed.
• Actual Cost (AC): The actual cost incurred for the work performed. EVM helps assess whether a
project is on schedule and within budget.
6. Using a schematic diagram, show the order in which the following are estimated in the COCOMO
estimation technique: cost, effort, duration, size.
In the COCOMO (Constructive Cost Model) estimation technique:
7. During the software testing process, why is the reliability growth initially high but slows down later
on?
Initially, testing uncovers many defects, so the rate of reliability improvement is high. However, as testing
progresses and fewer defects remain, the rate of improvement slows down. Eventually, the software
reaches a point where only small or complex bugs remain, and reliability growth slows significantly.
8. Given a software product and its requirements specification document, explain how would you
design the system test suites for this software product?
To design test suites:
1. Analyze the requirements: Identify the functional and non-functional requirements from the
specification.
https://sandeepvi.medium.com
2. Define test cases: Create test cases based on the requirements to verify that the system behaves
as expected.
4. Test coverage: Ensure all aspects of the system are tested, including edge cases.
• Exit: The output or result of the task, leading to the next process.
• Six Sigma is a methodology focused on improving quality by identifying and removing causes of
defects and variability. It uses statistical tools to ensure that processes are as efficient as
possible.
1. What is the Software Development Life Cycle (SDLC)? Explain its stages.
The Software Development Life Cycle (SDLC) is a structured process that outlines the steps involved in
developing software from initial concept to final deployment and maintenance. It provides a framework
for producing high-quality software in a systematic and efficient manner. While specific stages can vary
slightly depending on the chosen SDLC model, here's a general overview of the common phases:
• 1. Planning/Requirements Analysis:
o This initial phase focuses on defining the project's scope, goals, and objectives.
o It involves gathering and documenting the requirements of the software, including user
needs and expectations.
o Feasibility studies, risk assessments, and resource allocation are also conducted during
this stage.
o This is where documents like the software requirement specification (SRS) are created.
• 2. Design:
o In this phase, the system's architecture and design are created based on the
requirements gathered in the previous stage.
o This includes designing the user interface, database, and overall system structure.
• 3. Implementation/Coding:
o Following coding standards and best practices is crucial for producing efficient and
maintainable code.
• 4. Testing:
o The testing phase involves evaluating the software to identify and fix any defects or
bugs.
o Various testing methods are employed, including unit testing, integration testing, system
testing, and user acceptance testing.
o The goal is to ensure that the software meets the specified requirements and functions
as intended.
• 5. Deployment:
https://sandeepvi.medium.com
o Once the software has been thoroughly tested, it is deployed to the production
environment.
o This involves installing and configuring the software on the target systems.
• 6. Maintenance:
o The maintenance phase involves ongoing support and updates to the software after it
has been deployed.
o This includes fixing bugs, addressing user issues, and adding new features.
o The goal is to ensure that the software remains functional and relevant over time.
Key Considerations:
• Different SDLC models exist, such as Waterfall, Agile, and Spiral, each with its own approach to
these stages.
• The SDLC is an iterative process, and some stages may overlap or be repeated as needed.
The Personal Software Process (PSP) is designed to help individual software engineers improve their
personal productivity and quality. It emphasizes measuring, planning, and tracking personal work. Here's
a breakdown of the main processes involved:
• Planning:
o This involves estimating the size of the software to be developed and the time it will
take.
o Engineers use historical data to make these estimations, improving their accuracy over
time.
o This process includes creating a detailed plan that outlines the steps involved in the
development process.
• Design:
o In later PSP levels, a focus is put on designing the software before coding.
o This includes high level design, and design reviews, to catch defects early.
• Coding:
o This involves compiling the code and performing various tests to identify and fix defects.
• Defect Tracking:
o Engineers record when and where defects are injected and removed.
• Time Recording:
o PSP requires engineers to record the time spent on each phase of the development
process.
o This data helps in improving estimation accuracy and identifying areas for
improvement.
• Postmortem:
o This involves reviewing the data collected during the project to identify lessons learned
and areas for improvement.
Key Concepts:
• Measurement: PSP relies heavily on measurement to track progress and identify areas for
improvement.
• Data Analysis: The data collected is analyzed to identify trends and patterns.
• Process Improvement: The goal of PSP is to continuously improve the individual's software
development process.
3. Explain the Team Software Process (TSP). How does it differ from PSP?
It's helpful to understand these software development processes, so let's break them down:
• What it is:
o The Team Software Process (TSP) is a structured framework designed to help teams of
software engineers organize and deliver high-quality software.
https://sandeepvi.medium.com
o It builds upon the Personal Software Process (PSP), extending its principles to a team
environment.
• Key features:
o Defined roles: Clear roles and responsibilities are assigned to team members.
o Data-driven process: Teams collect and analyze data to track progress and identify areas
for improvement.
o Quality focus: TSP promotes proactive quality management through reviews and
inspections.
o Scope: PSP focuses on individual software engineers, while TSP focuses on teams.
o Objectives: PSP aims to improve individual productivity and quality, while TSP aims to
improve team performance and project outcomes. In short, PSP is for the individual, and
TSP applies those principles to an entire team.
Unified Process
• Key concepts:
o Use-case driven: Development is organized around use cases, which describe how users
interact with the system.
o Risk-driven: Risks are identified and addressed early in the development process.
5. Discuss Agile processes and how they differ from traditional software development processes.
• Agile processes:
• Key differences:
o Flexibility: Agile processes are highly flexible, while traditional processes are more
rigid.
o Change: Agile processes embrace change, while traditional processes resist change.
6. What are the steps involved in choosing the right software development process for a project?
https://sandeepvi.medium.com
1. Planning:
https://sandeepvi.medium.com
o The developer estimates the size of the software using historical data or estimation
techniques.
o They create a detailed plan, breaking down the project into smaller tasks.
o They estimate the time required for each task and the overall project.
o The developer creates a detailed design of the software, including the architecture and
data structures.
3. Coding:
o The developer writes the code according to the design specifications and coding
standards.
o They track the time spent coding and any defects found.
o The developer compiles the code and performs unit testing to identify and fix defects.
o They track the time spent testing and the defects found.
5. Defect Tracking:
o The developer meticulously records all defects found during the development process.
o They note the time and location of each defect, as well as the time taken to fix it.
6. Time Recording:
o The developer records the time spent on each phase of the development process.
o This data is used to improve estimation accuracy and identify areas for improvement.
7. Postmortem:
o They review the data collected during the project to identify lessons learned and areas
for improvement.
o They compare planned time versus actual time, and planned defects versus actual
defects.
Selecting the appropriate software development process is crucial for project success. Here's a
step-by-step guide:
1. Understand Project Requirements:
o Clearly define the project's goals, scope, and objectives.
o Identify the target audience and their needs.
o Determine the project's complexity, size, and criticality.
o Consider any specific industry regulations or compliance requirements.
2. Analyze Project Constraints:
o Assess the available resources, including budget, time, and personnel.
o Identify any technical constraints or limitations.
o Evaluate the project's risk factors and potential challenges.
3. Evaluate Available SDLC Models:
o Research and understand the characteristics of different SDLC models, such as Waterfall,
Agile (Scrum, Kanban, XP), Spiral, and others.
o Consider the strengths and weaknesses of each model in relation to the project's
requirements and constraints.
4. Consider Team Capabilities:
o Evaluate the team's experience, skills, and expertise.
o Determine the team's preferred working style and communication patterns.
o Consider the team's ability to adapt to different SDLC models.
5. Assess Stakeholder Involvement:
o Determine the level of stakeholder involvement required throughout the project.
o Consider the stakeholders' availability and communication preferences.
o Choose a model that facilitates effective stakeholder collaboration.
6. Evaluate Project Complexity and Risk:
o For highly complex and high risk projects, more structured methods may be required.
o For projects where the requirements may change rapidly, agile methods are often more
appropriate.
7. Make a Decision and Document It:
o Based on the analysis, select the most suitable SDLC model for the project.
o Document the rationale for the chosen model and communicate it to the team and
stakeholders.
o Be prepared to adjust the process as the project progresses.
Software Development Using PSP in Practice
Here's how PSP works in practice for an individual developer:
1. Planning:
o The developer estimates the size of the software using historical data or estimation
techniques.
o They create a detailed plan, breaking down the project into smaller tasks.
o They estimate the time required for each task and the overall project.
2. Design (in later PSP levels):
o The developer creates a detailed design of the software, including the architecture and
data structures.
o They review the design to identify and correct potential defects.
https://sandeepvi.medium.com
3. Coding:
o The developer writes the code according to the design specifications and coding
standards.
o They track the time spent coding and any defects found.
4. Compiling and Testing:
o The developer compiles the code and performs unit testing to identify and fix defects.
o They track the time spent testing and the defects found.
5. Defect Tracking:
o The developer meticulously records all defects found during the development process.
o They note the time and location of each defect, as well as the time taken to fix it.
6. Time Recording:
o The developer records the time spent on each phase of the development process.
o This data is used to improve estimation accuracy and identify areas for improvement.
7. Postmortem:
o After completing the project, the developer conducts a postmortem analysis.
o They review the data collected during the project to identify lessons learned and areas
for improvement.
o They compare planned time versus actual time, and planned defects versus actual
defects.
Role of Iterative Development in SDLC
Iterative development plays a crucial role in modern SDLCs, particularly in Agile methodologies.
Here's why:
• Early Feedback:
o Iterative development allows for early and frequent feedback from stakeholders.
o This feedback helps to identify and address issues early in the development process,
reducing the risk of costly rework.
• Reduced Risk:
o By breaking down the project into smaller iterations, risks can be identified and
mitigated early on.
o This reduces the overall risk of project failure.
• Increased Flexibility:
o Iterative development allows for greater flexibility and adaptability to changing
requirements.
o If requirements change during the project, the development team can adjust the plan
accordingly.
• Improved Quality:
o Frequent testing and feedback loops in iterative development lead to improved software
quality.
o Defects are identified and fixed early, resulting in a more robust and reliable product.
• Faster Time to Market:
o Iterative development enables the delivery of working software increments at regular
intervals.
o This allows for faster time to market and earlier realization of value.
• Better Stakeholder Engagement:
https://sandeepvi.medium.com
o Because stakeholders are involved in each iteration, they have a much greater feeling of
ownership in the final product.
9. Discuss the advantages and disadvantages of using agile methods in software development.
Agile methodologies have become increasingly popular in software development due to their
adaptability and focus on delivering value. However, like any approach, they come with their own set of
advantages and disadvantages.
o This flexibility allows teams to respond quickly to market changes and customer
feedback.
o Frequent customer involvement and feedback ensure that the final product meets their
needs.
o Iterative development and frequent releases enable teams to deliver working software
increments quickly.
o This allows for faster time to market and earlier realization of value.
o Agile methods promote close collaboration and communication among team members
and stakeholders.
o Continuous testing and integration throughout the development process help to identify
and fix defects early.
o This leads to higher product quality and reduced risk of costly rework.
• Increased Transparency:
https://sandeepvi.medium.com
o Regular progress updates and demonstrations allow stakeholders to track progress and
identify potential issues.
o By breaking the project into smaller iterations, and addressing risks early in each
iteration, agile development reduces large risks.
o The flexibility of Agile methods can make it challenging to accurately predict final costs
and timelines, especially for large and complex projects.
o The flexibility of Agile methods can lead to scope creep if requirements are not carefully
managed.
o Agile methods require skilled and experienced team members who can work effectively
in a collaborative and self-organizing environment.
o Agile methods may not be suitable for projects with strict regulatory requirements or
projects where requirements are well-defined and unlikely to change.
o For example, some governmental projects, or medical device development may not be
well suited to purely agile methods.
https://sandeepvi.medium.com
• Functional Requirements:
o They describe the specific features, functionalities, and behaviors of the system.
o Examples:
o They describe the qualities and characteristics of the system, such as performance,
security, usability, and reliability.
o They answer the question: "How well should the system do it?"
o Examples:
▪ Security: "The system shall protect user data from unauthorized access."
Requirements elicitation is the process of gathering and discovering the requirements of a software
system. Here are some common techniques:
• Interviews:
• Questionnaires/Surveys:
• Workshops:
• Brainstorming:
• Use Cases:
o Describing how users interact with the system to achieve specific goals.
• User Stories:
• Prototyping:
• Observation:
o Observing users as they perform their tasks to understand their needs and workflows.
• Document Analysis:
3. What are Quality Attribute Workshops (QAW)? How do they help in requirements gathering?
o Quality Attribute Workshops (QAWs) are structured workshops designed to elicit and
prioritize quality attributes (non-functional requirements).
o They bring together stakeholders, architects, and developers to discuss and analyze the
system's quality requirements.
o Focus on Quality: QAWs provide a dedicated forum for discussing and prioritizing quality
attributes, which are often overlooked in traditional requirements gathering.
o Architectural Guidance: The information gathered in QAWs provides valuable input for
architectural design decisions.
o Reduces Ambiguity: QAW's help to create specific and testable quality attribute
scenarios.
o Stakeholder alignment: It helps to ensure that all stakeholders have the same
understanding of what the quality goals are.
4. How do you analyze, prioritize, and perform tradeoff analysis in requirements management?
1. Requirement Analysis:
o Traceability: Establish links between requirements and other artifacts (design, code,
tests).
2. Requirement Prioritization:
o Cost-Benefit Analysis: Prioritize requirements that provide the greatest value for the
least cost.
o Techniques:
▪ MoSCoW (Must have, Should have, Could have, Won't have): Categorize
requirements based on their necessity.
3. Tradeoff Analysis:
o Define Evaluation Criteria: Establish clear criteria for evaluating tradeoffs (e.g., cost,
performance, usability).
o Document Decisions: Clearly document the tradeoffs made and the rationale behind
them.
o Example: A system might prioritize speed, but increasing speed can increase security
risks. A tradeoff analysis would determine the acceptable balance.
https://sandeepvi.medium.com
• ACDM is a software development approach that places a strong emphasis on the system's
architecture.
• It recognizes that the architecture is a critical factor in determining the system's quality,
maintainability, and scalability.
• Key Principles:
o Iterative and Incremental: The architecture is refined and evolved through iterative
development.
o Stakeholder Collaboration: Architects work closely with stakeholders to ensure that the
architecture meets their needs.
o Quality Attributes Focus: The architecture is designed to address key quality attributes
(e.g., performance, security, reliability).
• Benefits:
o Reduced risk.
1. Requirements Elicitation:
2. Requirements Analysis:
3. Requirements Documentation:
https://sandeepvi.medium.com
o Types of Documents:
▪ Use Case Specifications: Detailed descriptions of how users interact with the
system.
4. Requirements Specification:
o Verification: Ensure that the specification meets the needs of the stakeholders.
o Baseline: Once validated and verified, establish a baseline for the requirements
specification.
• What it is:
o It ensures that all changes are properly documented, tracked, and communicated to
stakeholders.
o Control Scope Creep: Prevents uncontrolled expansion of the project's scope, which can
lead to delays, cost overruns, and quality issues.
o Maintain Consistency: Ensures that all requirements remain consistent and compatible
throughout the development process.
o Improve Traceability: Facilitates the tracking of changes and their impact on other
requirements and project artifacts.
o Reduce Risk: Minimizes the risk of errors and omissions due to undocumented or poorly
managed changes.
o Ensure Quality: helps to ensure that the final product meets the approved and current
requirements.
Traceability of Requirements
• What it is:
o It establishes a chain of relationships that allows you to trace a requirement from its
origin to its implementation and testing.
o Improved Verification and Validation: Enables thorough testing and validation of the
software to ensure that it meets all requirements.
o Reduced Risk: Minimizes the risk of errors and omissions by ensuring that all
requirements are properly implemented and tested.
o Better Maintenance: When changes are needed in the future, traceability allows a
developer to quickly see what other parts of the system will be affected.
9. How do you conduct QAW, elicit, analyze, and document requirements using ACDM?
o Planning: Define the scope and objectives of the workshop, identify stakeholders, and
prepare materials.
o Scenario Generation: Facilitate the creation of quality attribute scenarios that describe
how the system should respond to specific situations (e.g., performance, security,
usability).
o Documentation: Record the results of the workshop, including the prioritized quality
attributes and scenarios.
o Use Cases and User Stories: Use use cases and user stories to capture functional
requirements in the context of the architecture.
o Quality Attribute Analysis: Evaluate how requirements impact the system's quality
attributes.
o Risk Assessment: Identify and assess risks associated with the requirements and the
architecture.
o Architectural Views: Create architectural views (e.g., use case view, logical view,
deployment view) to illustrate different aspects of the system.
o Use standard templates: Using a standard template for documentation helps to ensure
that all needed information is recorded.
https://sandeepvi.medium.com
1. Risk Identification:
2. Risk Analysis:
3. Risk Prioritization:
o Risk Matrix: Use a risk matrix to visualize and prioritize risks based on their probability
and impact.
o Focus on High-Priority Risks: Prioritize risks that have a high probability and a high
impact.
o A risk mitigation plan is a document that outlines the strategies and actions to be taken
to reduce the probability or impact of identified risks.
o It includes:
▪ Risk description.
▪ Responsible parties.
▪ Timelines.
▪ Contingency plans.
• Importance:
o Enhanced Decision Making: Provides a framework for making informed decisions about
risk management.
3. What are the estimation techniques used in software projects? Explain use case points and
function points.
1. Expert Judgment:
o Relying on the experience and knowledge of experts to estimate project effort, cost, and
duration.
2. Analogous Estimation:
o Using historical data from similar projects to estimate the current project.
https://sandeepvi.medium.com
3. Parametric Estimation:
4. Bottom-Up Estimation:
o Breaking down the project into smaller tasks and estimating each task individually.
5. Three-Point Estimation:
o Using optimistic, pessimistic, and most likely estimates to calculate a weighted average.
• Function Points:
o Based on the number and complexity of inputs, outputs, inquiries, files, and interfaces.
o Steps:
▪ Use adjusted use case points to estimate effort, cost, and duration.
o Use Case points are more use case focused, and therefore more closely tied to user
requirements.
• Key Differences:
o Basis: Function points are based on data functions, while use case points are based on
use cases.
o Focus: Function points focus on the functionality provided by the application, while use
case points focus on the interactions between users and the system.
https://sandeepvi.medium.com
o When to use: Function points are more often used in management information systems,
and use case points are more often used in object oriented systems.
COCOMO II Model
• What it is:
o It's an evolution of the original COCOMO model, designed to address the complexities of
modern software development practices, including agile methodologies, rapid
prototyping, and reuse.
o COCOMO II provides a framework for estimating the effort, cost, and schedule of
software projects.
o It takes into account various factors that influence software development costs,
including:
o The model calculates effort in person-months and then converts it to cost based on labor
rates.
o It provides a more accurate estimation as the Project progresses and more information is
known.
• Top-Down Estimation:
https://sandeepvi.medium.com
o Starts with an overall estimate for the entire project and then breaks it down into
smaller components.
o Quick and easy to perform, but less accurate for detailed planning.
• Bottom-Up Estimation:
o Starts by estimating the effort and cost for each individual task and then aggregates
them to arrive at the total project estimate.
o Provides a more realistic and granular view of the project's resource requirements.
• Key Differences:
o Use Cases: Top-down for early planning; bottom-up for detailed planning and control.
6. Explain the concept of Work Breakdown Structure (WBS) and its importance in project
management.
• What it is:
o It is deliverable oriented.
o Scope Definition: Provides a clear and comprehensive definition of the project's scope.
o Planning and Scheduling: Facilitates accurate planning and scheduling by breaking down
the project into manageable tasks.
https://sandeepvi.medium.com
o Cost Estimation: Enables accurate cost estimation by assigning costs to individual tasks.
7. Describe the process of planning poker and Wideband Delphi for estimation.
• Planning Poker:
o Process:
2. Private Estimation: Each team member privately selects an estimate from a set
of cards (e.g., Fibonacci sequence).
o Benefits:
• Wideband Delphi:
https://sandeepvi.medium.com
o Process:
o Benefits:
8. What is the Earned Value Method (EVM) and how is it used in tracking software project
progress?
• What it is:
o Key Metrics:
▪ Actual Cost (AC): The actual cost incurred for work performed.
o Calculations:
https://sandeepvi.medium.com
o Benefits:
9. How do you track the progress of a software project and document the plan?
• Tracking Progress:
o Regular Meetings: Conduct daily stand-ups, sprint reviews, and status meetings.
o Task Tracking: Use project management tools (e.g., Jira, Trello) to track task completion.
o Earned Value Analysis: Use EVM to track schedule and cost performance.
o Project Plan: Create a comprehensive project plan that includes scope, schedule,
budget, and resources.
10. What is the difference between macro and micro planning in software projects?
• Macro Planning:
o Example: Creating a project roadmap, defining major milestones, and establishing the
project budget.
• Micro Planning:
o Focuses on the detailed tasks and activities required to complete the project.
o Example: Creating a sprint backlog, assigning tasks to team members, and tracking task
progress.
• Key Differences:
1. What are artifacts in software configuration, and how are they identified?
▪ Executable files
▪ Configuration files
▪ Libraries
▪ Database schemas
▪ Build scripts
▪ Test data
o Naming Conventions: Establishing clear and consistent naming conventions for all
artifacts.
o File Extensions: Using appropriate file extensions to indicate the type of artifact.
o Metadata: Attaching metadata to artifacts, such as creation date, author, version, and
description.
o Configuration Management Tools: Using tools that automatically track and identify
artifacts.
o Baseline Identification: Creating baselines, which are snapshots of the project at specific
points in time, to identify and track related artifacts.
2. What are naming conventions and version control in software configuration management?
• Naming Conventions:
https://sandeepvi.medium.com
o Benefits:
▪ Enhanced collaboration.
o Examples:
• Version Control:
o Benefits:
o Tools:
▪ Git
▪ Subversion (SVN)
▪ Mercurial
o It involves:
https://sandeepvi.medium.com
• Why is it necessary?
o Maintain Product Integrity: Ensures that the software product remains consistent and
reliable.
o Control Changes: Prevents unauthorized or uncontrolled changes that can lead to errors
and defects.
o Improve Traceability: Enables tracking of changes and their impact on other artifacts.
o Support Audits and Compliance: Provides an audit trail of changes for regulatory or
compliance purposes.
o Reduce Risk: Minimizes the risk of errors, defects, and project delays.
Quality assurance (QA) techniques are proactive measures taken throughout the software development
lifecycle to prevent defects and ensure that the software meets quality standards. Here are some key
techniques:
• Reviews:
• Inspections:
• Testing:
o Types:
• Static Analysis:
• Dynamic Analysis:
o Analyzing code during execution to identify problems like memory leaks, or performance
bottlenecks.
• Process Monitoring:
o Tracking and monitoring software development processes to ensure they are followed
and effective.
• Configuration Management:
Bug Tracking
• What it is:
o Bug tracking is the process of recording, managing, and tracking software defects (bugs)
throughout the development lifecycle.
https://sandeepvi.medium.com
o It involves using a bug tracking system (e.g., Jira, Bugzilla) to log information about each
bug, such as:
▪ Assigned developer.
o Defect Management: Provides a centralized system for managing and tracking defects.
o Quality Improvement: Provides data for identifying and addressing recurring defects.
• What it is:
o Causal analysis is the process of identifying the root causes of software defects or other
problems.
o It goes beyond simply identifying the symptoms and seeks to understand why the
problem occurred.
• How it works:
o Data Collection: Gather data about the defect or problem, including logs, error
messages, and test results.
o Corrective Actions: Develop and implement corrective actions to prevent the problem
from recurring.
• Importance:
o Reduce Costs: Reduces the costs associated with fixing defects and rework.
o Knowledge Sharing: Promotes knowledge sharing and learning among team members.
7. What is the difference between unit, integration, system, and acceptance testing?
• Unit Testing:
• Integration Testing:
• System Testing:
• Acceptance Testing:
o Focus: Validating the system against user requirements and business needs.
Version control helps manage changes to software artifacts. Here's how it's exercised:
• Repository:
• Committing Changes:
• Conflict Resolution:
o When multiple developers modify the same file, version control helps resolve conflicts.
• Tagging Releases:
o "Tags" are used to mark specific versions of the software, such as releases.
• Access Control:
o Version control systems provide access control, so that only authorized users can make
changes.
https://sandeepvi.medium.com
• Source Code:
• Build Scripts:
• Configuration Files:
• Documentation:
• Executable Files:
• Database Schemas:
• Deployment Scripts:
o Scripts that are used to deploy the software into a production environment.
• Change Requests:
• Baseline Documents:
o Documents that describe the approved state of configuration items at a particular point
in time.
https://sandeepvi.medium.com
Process elements are the fundamental building blocks of a software development process. They define
the activities, tasks, and artifacts involved in creating software. Common process elements include:
• Activities:
o High-level actions performed during the process (e.g., requirements gathering, design,
coding, testing).
• Tasks:
o Specific, well-defined actions within an activity (e.g., writing a use case, creating a class
diagram, writing a unit test).
• Artifacts:
• Roles:
• Tools:
o Software applications and utilities used to support the process (e.g., IDEs, version control
systems, bug tracking tools).
• Techniques:
o Methods and approaches used to perform tasks (e.g., use case modeling, agile
development, test-driven development).
• Metrics:
o Measurements used to track and evaluate the process (e.g., defect density, code
coverage, project schedule).
• Milestones:
Process elements are the fundamental building blocks of a software development process. They define
the activities, tasks, and artifacts involved in creating software. Common process elements include:
• Activities:
https://sandeepvi.medium.com
o High-level actions performed during the process (e.g., requirements gathering, design,
coding, testing).
• Tasks:
o Specific, well-defined actions within an activity (e.g., writing a use case, creating a class
diagram, writing a unit test).
• Artifacts:
• Roles:
• Tools:
o Software applications and utilities used to support the process (e.g., IDEs, version control
systems, bug tracking tools).
• Techniques:
o Methods and approaches used to perform tasks (e.g., use case modeling, agile
development, test-driven development).
• Metrics:
o Measurements used to track and evaluate the process (e.g., defect density, code
coverage, project schedule).
• Milestones:
• Process Architecture:
o It defines how the process elements are related and how they interact with each other.
• Relationships:
o Iterative: Elements are repeated or refined over time (e.g., iterative development).
https://sandeepvi.medium.com
o Hierarchical: Elements are organized into levels of abstraction (e.g., activities contain
tasks).
o Process architecture defines the flow of work, the dependencies between elements, and
the overall structure of the software development lifecycle.
Process elements are the fundamental building blocks of a software development process. They define
the activities, tasks, and artifacts involved in creating software. Common process elements include:
• Activities:
o High-level actions performed during the process (e.g., requirements gathering, design,
coding, testing).
• Tasks:
o Specific, well-defined actions within an activity (e.g., writing a use case, creating a class
diagram, writing a unit test).
• Artifacts:
• Roles:
• Tools:
o Software applications and utilities used to support the process (e.g., IDEs, version control
systems, bug tracking tools).
• Techniques:
o Methods and approaches used to perform tasks (e.g., use case modeling, agile
development, test-driven development).
• Metrics:
o Measurements used to track and evaluate the process (e.g., defect density, code
coverage, project schedule).
https://sandeepvi.medium.com
• Milestones:
• Process Architecture:
o It defines how the process elements are related and how they interact with each other.
• Relationships:
o Iterative: Elements are repeated or refined over time (e.g., iterative development).
o Hierarchical: Elements are organized into levels of abstraction (e.g., activities contain
tasks).
o Process architecture defines the flow of work, the dependencies between elements, and
the overall structure of the software development lifecycle.
Process Modeling
• What it is:
o It involves using diagrams and notations to depict the activities, tasks, and workflows
involved in the process.
o Examples:
https://sandeepvi.medium.com
▪ Flowcharts
▪ Activity diagrams
ETVX Model
• What it is:
o ETVX (Entry, Task, Validation, Exit) is a process modeling framework used to define and
analyze software development processes.
• Components:
• Purpose:
o Ensures that processes are well-defined and that outputs are validated.
o Helps to make sure that the inputs, and outputs of each step are well defined.
o It involves capturing and documenting the process's activities, tasks, inputs, outputs,
roles, tools, and metrics.
https://sandeepvi.medium.com
o The baseline serves as a reference point for future process improvement efforts.
• Why is it important?
o Enables Measurement: Allows for the measurement of process performance and the
tracking of improvement progress.
o Provides a stable and known process: This stability is important for consistency.
Process Assessment:
• It involves comparing the current process to established standards, models, or best practices.
o Audits
o Reviews
o Surveys
o Interviews
Process Improvement:
• Process improvement is the systematic effort to enhance the effectiveness and efficiency of a
software development process.
• It involves:
• What is CMMI?
o It defines a set of best practices and maturity levels that organizations can use to assess
and improve their capabilities.
o It is organized into different levels of maturity, where each level builds upon the previous
one.
Six Sigma
o Six Sigma is a data-driven methodology for process improvement that aims to reduce
defects and variability.
o It uses statistical tools and techniques to identify and eliminate the root causes of
problems.
o Common Six Sigma methodologies used are DMAIC (Define, Measure, Analyze, Improve,
Control).
o Six Sigma is a data-driven methodology that aims to reduce defects and variability in
processes.
o It uses statistical tools and techniques to identify and eliminate the root causes of
problems.
o Defect Reduction: Six Sigma can be applied to reduce defects in code, requirements, and
other software artifacts.
o Schedule and Cost Control: Six Sigma can help reduce variability in project schedules
and improve the accuracy of cost estimates.
o Customer Satisfaction: By reducing defects and improving process efficiency, Six Sigma
can enhance customer satisfaction.
o The DMAIC (Define, Measure, Analyze, Improve, Control) methodology is a core part of
Six Sigma.
9. Explain the importance of process improvement using Six Sigma and CMMI.
• Six Sigma:
o Focus on Quality: Emphasizes defect reduction and process variability, leading to higher-
quality software.
o Data-Driven Decisions: Uses data and statistical analysis to make informed decisions
about process improvements.
https://sandeepvi.medium.com
o Cost Reduction: Reduces costs associated with defects, rework, and inefficiencies.
• CMMI:
o Maturity Levels: Enables organizations to assess their process maturity and identify
areas for improvement.
• Combined Importance:
o Together, Six Sigma and CMMI can create a powerful synergy for process improvement.
CMMI provides the framework, and Six Sigma provides the tools and techniques for
data-driven optimization. They both help to make sure that software is developed in a
repeatable, and high quality way.
Accountability: Measurements provide a way to hold teams accountable for their process
performance.
Customer Satisfaction: Process measurements tied to customer facing metrics, can help provide a way
to improve customer satisfaction.