0% found this document useful (0 votes)
15 views24 pages

Learn 3

The document outlines key activities and principles of software project management, emphasizing the importance of proposal writing, planning, monitoring, and quality management. It also discusses software quality metrics, the SEI Capability Maturity Model, and the significance of software engineering in developing reliable systems. Additionally, it covers verification and validation processes, quality assurance versus quality control, and the role of software configuration management and risk management in software development.

Uploaded by

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

Learn 3

The document outlines key activities and principles of software project management, emphasizing the importance of proposal writing, planning, monitoring, and quality management. It also discusses software quality metrics, the SEI Capability Maturity Model, and the significance of software engineering in developing reliable systems. Additionally, it covers verification and validation processes, quality assurance versus quality control, and the role of software configuration management and risk management in software development.

Uploaded by

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

Project Management Process Activities (PYQ)

Software project management encompasses a wide range of activities aimed at ensuring the successful completion of a
software project. Each activity contributes to different aspects of project planning, execution, and delivery.
There are mainly 8 basic principles of the project management processes:
1. Proposal Writing the project remains on track and adheres to defined
timelines and quality standards.
This activity involves creating a formal document that defines
the project's purpose, scope, and objectives. The proposal 5. Personnel Selection and Evaluation
outlines key deliverables, cost estimations, and the project's
A capable team is essential for project success. This activity
feasibility to convince stakeholders or clients to approve or
focuses on selecting individuals with the right skill set and
fund the project. It is a critical step that sets the tone for the
assigning them roles that suit their expertise. Periodic
project's direction.
evaluations help in assessing performance and addressing
2. Project Planning and Scheduling gaps through training or reassignment. A well-coordinated
team ensures smooth project execution.
Planning and scheduling define how a project will be
executed. Planning involves breaking the project into 6. Report Writing and Presentations
manageable tasks and allocating resources accordingly, while
Reports and presentations play a vital role in documenting
scheduling organizes these tasks chronologically. Tools like
and communicating project progress to stakeholders. Reports
Gantt charts and network diagrams are often used to map
provide detailed insights into the status, challenges, and
out dependencies and timelines. Effective planning ensures
achievements, while presentations offer a concise summary
clarity, resource optimization, and timely delivery of
for decision-makers. This ensures transparency and keeps all
milestones.
parties aligned with the project's progress.
3. Cost of Project
7. Quality Management
Estimating the cost of the project is crucial for financial
Quality management ensures that the software meets the
planning and control. This includes budgeting for personnel,
required standards and satisfies customer expectations. This
tools, and infrastructure, along with setting aside
involves implementing quality assurance (QA) and quality
contingency funds for unforeseen circumstances. During the
control (QC) processes such as testing and code reviews. By
project's execution, continuous cost monitoring ensures
addressing quality at every stage, the project team ensures a
expenses remain within the allocated budget, maintaining
robust and reliable final product.
financial discipline.
8. Configuration Management
4. Project Monitoring and Review
Managing changes to project artifacts, such as requirements,
Monitoring involves tracking the progress of tasks to ensure
designs, and code, is critical to maintaining consistency.
they align with the project plan. Periodic reviews help
Configuration management ensures that all updates are
identify potential risks, delays, or deviations, enabling the
authorized, documented, and traceable. Version control
team to take corrective measures. This activity ensures that
systems play a key role in preventing conflicts and ensuring
the integrity of deliverables.
Software Quality Metrics Approaches (PYQ)
Software quality metrics are essential for evaluating and improving the performance, reliability, and maintainability of software. Different
approaches to these metrics focus on various aspects of software development and maintenance:

1. Product Metrics:
These metrics measure the quality of the software product itself. They include attributes such as functionality, reliability,
usability, efficiency, maintainability, and portability. Examples include defect density, code complexity, and lines of code (LOC).

2. Process Metrics:
Process metrics assess the effectiveness and efficiency of the software development process. They monitor development phases,
time spent, resource utilization, and workflow efficiency. Examples include cycle time, defect removal efficiency, and schedule
adherence.

3. Project Metrics:
Project metrics focus on managing project goals and ensuring timely delivery. These metrics track effort, cost, productivity, and
progress. Examples include cost variance, earned value, and team velocity in agile projects.

4. Customer Metrics:
These metrics gauge the satisfaction and experience of end users. They include feedback scores, Net Promoter Score (NPS), and
post-deployment defect rates, reflecting how well the software meets user expectations.

5. Internal Metrics:
Internal metrics evaluate the software’s internal characteristics, such as code structure, modularity, and maintainability.
Examples include cyclomatic complexity and coupling/cohesion metrics.
SEI Capability Maturity Model (PYQ)
The SEI Capability Maturity Model (CMM) is a framework that helps organizations improve their software development processes. It
provides a structured approach for assessing and improving the maturity of an organization’s software development processes, ensuring
that they can consistently deliver high-quality software.

Maturity Levels
CMM defines five levels of maturity, each representing a stage of process improvement:
1. Level 1: Initial (Ad hoc)
Processes are unpredictable, poorly controlled, and reactive. Success depends on individual efforts and there is little process
standardization.
2. Level 2: Managed
Basic project management processes are established to track cost, schedule, and functionality. There is an emphasis on
discipline, and processes are more stable and repeatable.
3. Level 3: Defined
The organization has set standardized processes for software development. Processes are well-documented, and there is a
proactive approach to process management. Best practices are developed and followed.
4. Level 4: Quantitatively Managed
Organizations use metrics to control and manage processes. Statistical methods are applied to monitor performance and
improve the process continuously.
5. Level 5: Optimizing
Focus is on continuous process improvement. The organization uses feedback from the previous levels, focusing on innovation
and adapting to new technologies and practices to improve software development processes.

Key Process Areas (KPAs)


Each maturity level includes a set of Key Process Areas (KPAs), which are essential areas that organizations must focus on to improve
their processes. Examples include:
• Level 1: No KPAs
• Level 2: Requirements Management, Project Planning, Configuration Management, Quality Assurance.
• Level 3: Software Product Engineering, Peer Reviews, Training Program, Integrated Software Management.
• Level 4: Quantitative Process Management, Software Quality Management.
• Level 5: Defect Prevention, Technology Change Management.
Importance of software Engineering, Steps taken under the process of developing a
software system. (PYQ)
Software Engineering is crucial for the development of reliable, efficient,
and high-quality software systems. It applies systematic methods, tools,
and techniques to the software development process, ensuring the
product meets user requirements and is maintainable over time.

Key Importance:

1. Handling Big Projects:


Highlights the ability of software engineering methodologies to
manage complex and large-scale projects effectively.
2. Managing Costs:
Demonstrates how systematic planning helps in controlling
unnecessary expenses, making the development process cost-efficient.
3. Decreasing Time:
Reflects how structured processes and methodologies save time during development by improving efficiency.
4. Reliable Software:
Ensures the delivery of defect-free, high-quality software on time, enhancing reliability and customer trust.
5. Effectiveness:
Stresses the importance of adhering to standards, resulting in robust and effective software solutions.
6. Reducing Complexity:
Shows how breaking down complex tasks into manageable parts makes problem-solving easier and more efficient.
7. Productivity:
Systematic approaches and clear processes improve the productivity of the development team, leading to faster and more efficient
software delivery.
Steps in the Process of Developing a Software System • Follow coding standards and best practices to ensure
The software development process typically follows a Software maintainability.
Development Life Cycle (SDLC), which includes the following steps: 5. Testing:
1. Requirement Analysis: • Perform unit testing, integration testing, system testing, and user
• Understand the problem and gather functional and non- acceptance testing (UAT).
functional requirements from stakeholders. • Ensure the software is free of defects and meets the specified
• Document requirements clearly for future reference. requirements.
2. Feasibility Study: 6. Deployment:
• Analyze technical, operational, and economic feasibility. • Install the software in the production environment.
• Assess risks and prepare a feasibility report to decide whether to • Train users and ensure the system is operational.
proceed. 7. Maintenance:
3. System Design: • Address issues that arise post-deployment, including bug fixes,
• High-level design (HLD): Outline architecture, major updates, and enhancements.
components, and their interactions. • Ensure the software remains functional and relevant over time.
• Low-level design (LLD): Define detailed designs, including data 8. Documentation:
structures, algorithms, and module-level specifications. • Create technical and user documentation to help developers
4. Implementation (Coding): maintain the software and users understand its functionality.
• Translate the design into executable code using programming
languages.
i. Verification and Validation ii. Quality Assurance and Quality Control (PYQ)
Verification and Validation (V&V)
Verification
Verification focuses on checking whether the software conforms to its specified requirements and design. It ensures the product is being developed
according to the planned process and standards. For example, code reviews, design inspections, and static testing are used to verify correctness and
adherence to specifications.
The main objective of verification is to identify errors early, reducing rework and improving efficiency in development. This process often involves
documentation reviews and peer assessments.

Validation
Validation is concerned with ensuring the software meets user expectations and requirements. It confirms that the product achieves its intended
purpose and functions effectively in real-world conditions. Techniques like dynamic testing, usability testing, and user acceptance testing are key to
validation.
By focusing on functional and user-centered outcomes, validation ensures the software is fit for its intended use and satisfies stakeholders'
expectations.

Key Difference
Verification addresses the question, "Are we building the product right?" while validation asks, "Are we building the right product?" Together, they
ensure the software is both technically sound and user-appropriate.

Quality Assurance (QA) and Quality Control (QC)

Quality Assurance (QA)


QA is a proactive approach focused on preventing defects during the software development process. It ensures that all procedures and methodologies
are followed to maintain high standards.
QA is primarily process-oriented. It involves activities such as process definition, audits, and adherence to industry standards like ISO or CMMI. For
example, QA teams may define coding standards, conduct training sessions for developers, and evaluate compliance with project guidelines. The goal
is to build quality into the system from the beginning rather than addressing issues after they arise.

Quality Control (QC)


QC is a reactive process that focuses on identifying and fixing defects in the finished product. It is typically carried out during the testing phase of
development.
Unlike QA, QC is product-oriented. It includes activities like functional testing, performance testing, and usability testing. For instance, testers execute
test cases to identify bugs, ensure system stability, and validate that the software meets user requirements. The primary objective of QC is to ensure
that the product meets quality standards before it is delivered to the customer.

Key Differences Between QA and QC


• QA focuses on the process, while QC targets the product.
• QA is preventive, ensuring processes are designed to minimize defects, whereas QC is detective, identifying defects in the output.

In Summary
Verification and Validation
• Verification ensures the product is built correctly (focusing on process compliance).
• Validation ensures the right product is built (meets user needs and requirements).
Quality Assurance and Quality Control
• Quality Assurance (QA) is process-oriented, preventing defects by ensuring proper methodologies.
• Quality Control (QC) is product-oriented, identifying and fixing defects in the final product.
Software Configuration Management (PYQ)
Software Configuration Management (SCM) is a crucial process in software development that systematically manages changes to
software and related artifacts. It ensures the integrity, consistency, and traceability of the software product, especially in large projects
where multiple developers are involved.
SCM ensures:
• Version control: The system tracks all versions of components so that developers can refer back to any version of the software at
any point in time.
• Change management: All changes to the software are carefully planned, authorized, and executed in a controlled manner.
• Traceability: SCM ensures that each change is documented, and its impact on the system is understood and communicated to
relevant stakeholders.
• Consistency: By identifying the relationships and dependencies among software components, SCM helps maintain consistency
throughout the system.

Two principal activities of Software Configuration Management are:


1. Configuration Identification
It involves the process of defining and categorizing the various components and artifacts that constitute the software system. This is
done by establishing a clear, organized structure for all components, both in their original and modified states.
Key aspects of Configuration Identification:
• Defining Configuration Items (CIs): The first task is to identify which items in the software system will be subject to configuration
management. These might include source code files, design documents, test cases, libraries, and configuration files. Each of
these items is considered a Configuration Item (CI).
• Labeling and Versioning: Once the configuration items are identified, they are labeled with unique identifiers. This labeling
ensures that every version of the component is tracked, including its version number and modification history. It allows
developers to refer to specific versions and guarantees that everyone in the team is using the correct version of a component.
• Baselining: A baseline is a reference point in the software development process that defines the approved state of configuration
items at a particular time. Once a configuration item is baselined, it is controlled and no further changes can be made to it
without going through a formal change process.

2. Configuration Control
It deals with managing and controlling changes to the software configuration. This process ensures that changes are made in a controlled
manner, and no unauthorized or incorrect changes are introduced into the system.
Key aspects of Configuration Control:
• Change Request Process: When a change to the system is necessary (for example, fixing a bug or adding a new feature), it is first
requested formally through a change request. This request is submitted to a configuration control board (CCB), which reviews
and evaluates the change.
• Evaluation and Approval: The change request is evaluated for its impact on the system, its feasibility, and its alignment with
project goals. The configuration control board (CCB), typically composed of senior developers, managers, or architects, approves
or rejects the change based on its evaluation.
• Change Implementation and Tracking: Once approved, the change is implemented by the development team. The configuration
management system tracks the change, ensuring that it is correctly applied to the appropriate components and that the updated
components are versioned appropriately.
• Audit and Verification: After the change has been implemented, the modified configuration items undergo an audit to verify that
the change was made according to the approved specifications. This audit ensures that the change has not introduced errors or
inconsistencies in the software.
Topics in PPT, but not in PYQs
Risk Management
Risk management is the process of identifying, assessing, planning, and monitoring risks throughout the lifecycle of a software project. It
helps to minimize the impact of potential threats, ensuring that projects are completed on time, within budget, and meet quality
standards. The goal of risk management is to anticipate problems before they arise and create strategies to mitigate or respond to these
risks effectively.

1. Risk Identification

Risk identification involves recognizing potential risks that could affect the success of the software project. This step aims to create a
comprehensive list of all possible risks, including technical challenges, resource limitations, environmental factors, and unforeseen
events. Risk identification typically involves brainstorming sessions, expert judgment, historical data, and analysis of previous projects to
uncover threats that may impact the project.

2. Risk Assessment

Risk assessment evaluates the likelihood and potential impact of each identified risk. This step helps prioritize the risks by assessing their
severity and the likelihood of occurrence. The risks are usually categorized into high, medium, or low based on their probability and
consequences. Tools like risk matrices or qualitative and quantitative analysis are used to assign numerical values to risks, allowing
project managers to focus on the most critical ones first.

3. Risk Planning

Once risks are identified and assessed, risk planning involves developing strategies to manage, mitigate, or avoid these risks. This step
includes creating contingency plans, defining risk triggers, and assigning responsibilities for managing each risk. The project team should
decide on proactive measures to minimize risks or reactive measures to handle the impact if a risk occurs. Risk planning may involve
activities such as acquiring additional resources, introducing new technologies, or adjusting project timelines.

4. Risk Monitoring

Risk monitoring is the continuous process of tracking identified risks and detecting new ones as the project progresses. It involves
regularly reviewing and updating the risk management plan to reflect changes in the project's environment. Effective risk monitoring
ensures that risks are managed in real-time and that mitigation actions are taken promptly. Monitoring tools and techniques, such as risk
audits, progress meetings, and performance reviews, help ensure that the risk response plan is effective and that emerging risks are
addressed immediately.
Short Que ans
What is a Project?
A project is a temporary effort with the aim of achieving a specific goal within a defined time frame. It typically involves:
• Specific objectives: Projects are focused on delivering a unique product, service, or result.
• Defined timeline: Projects have a clear start and end date.
• Resource constraints: Projects work within limitations of time, cost, and resources.
• Uniqueness: Each project is different, with its own challenges, risks, and goals.

What is Management?
Management is the process of overseeing and directing resources to achieve organizational goals. It includes several key activities:
• Planning: Determining what needs to be done and how to do it.
• Organizing: Allocating resources and assigning responsibilities.
• Leading: Motivating and guiding the team to achieve objectives.
• Controlling: Monitoring progress and making adjustments to ensure goals are met.
• Decision-making: Identifying and solving problems, making informed decisions.
• Communicating: Ensuring effective communication among all stakeholders.

Management Control
Management Control refers to the process of monitoring and regulating activities to ensure that goals are achieved efficiently. Key
elements include:
1. Data and Information: Raw data is processed into meaningful information for decision-making.
2. Comparing with Objectives: Actual performance is compared to goals to identify gaps.
3. Modelling: Predicting outcomes of decisions to guide actions.
4. Implementation: Taking corrective actions when objectives are not met.

Management Control
Step Wise Project Planning
Stepwise Project Planning is a structured approach to managing
projects, broken down into clear, sequential steps. Here's a brief
explanation of each step:

Step 0: Select Project


This initial step involves choosing the project based on its alignment
with organizational goals, resources, and capabilities.

Step 1: Identify Project Scope and Objectives


Define the project's scope, including the deliverables, goals, and
constraints. This step helps in understanding what the project aims
to achieve and its boundaries.

Step 2: Identify Project Infrastructure


Assess and plan the infrastructure needed to support the project,
such as tools, technologies, hardware, and software.

Step 3: Analyse Project Characteristics


Analyse specific project characteristics such as complexity, size,
timeline, and required expertise. This helps in determining the level
of effort required.

Step 4: Identify Project Products and Activities


Break down the project into smaller tasks, products, or deliverables.
Define the activities required to produce each product and their
interdependencies.

Step 5: Estimate Effort for Each Activity


Estimate the time, resources, and effort required to complete each activity identified in the previous step.

Step 6: Identify Activity Risks


Identify potential risks associated with each activity and plan for mitigating them. This helps in managing uncertainties.

Step 7: Allocate Resources


Assign resources, including personnel, tools, and budget, to each activity. This step ensures that the necessary resources are available at
the right time.

Step 8: Review/Publicize Plan


Review the entire project plan for feasibility and accuracy. Once approved, publicize the plan to stakeholders for alignment and
communication.

Steps 9 and 10: Execute Plan/Lower Levels of Planning


Execute the plan by carrying out the activities. In parallel, lower-level detailed planning may be required to handle ongoing tasks and
adjustments as the project progresses.
Software effort estimation
Software effort estimation is the process of predicting the amount of effort, time, and resources required to complete a software
development project. Accurate effort estimation is crucial for effective project management, as it helps in setting realistic goals,
managing costs, and determining timelines. It involves analyzing the project scope, technical complexity, and resource availability to
estimate the effort needed.

Key Points in Software Effort Estimation:


1. Purpose of Effort Estimation: The primary purpose is to determine how much work (in terms of person-hours or person-days)
will be required to develop the software. This helps in planning project schedules, allocating resources, and setting budgets.
2. Factors Influencing Effort Estimation:
o Project Complexity: The more complex the project, the higher the effort required.
o Team Experience and Skill Levels: A skilled team may complete tasks faster, reducing the overall effort.
o Technology Stack: New or complex technologies may require more effort.
o Requirements Clarity: Well-defined requirements lead to more accurate estimates, while ambiguous requirements
increase uncertainty and effort.
3. Methods of Software Effort Estimation:
o Expert Judgment: Involves experienced developers and managers making estimates based on their prior experience with
similar projects.
o Analogy-Based Estimation: Uses past projects as references to estimate the effort for a new project.
o Algorithmic Models: Techniques like COCOMO (Constructive Cost Model) use mathematical formulas based on factors
like size, complexity, and development environment to predict effort.
o Wideband Delphi: A group-based approach where multiple experts provide their estimates and then discuss them until a
consensus is reached.
4. Challenges in Effort Estimation:
o Inaccurate Requirements: Unclear or changing requirements make it difficult to estimate effort accurately.
o Over-Optimism: Teams sometimes underestimate effort due to overly optimistic views about how quickly tasks can be
completed.
o Unforeseen Technical Issues: Unexpected technical challenges can arise, increasing the required effort.
5. Outcome of Effort Estimation: The result is a more informed project plan that helps in allocating resources, managing risks, and
setting timelines. A good estimate helps ensure that the project is completed within scope, time, and budget constraints.
Classical Waterfall Model (PYQ)
Classical Waterfall Model: Key Phases
1. Feasibility Study:
o This phase evaluates whether the project is technically and financially
viable.
o It involves analyzing whether the project can be completed within
budget, time, and available resources.
2. Requirement Analysis:
o All functional and non-functional requirements are gathered from the
stakeholders.
o The output is a Requirements Specification Document which serves as the
foundation for the subsequent phases.
3. Design:
o The system design is formulated based on the requirements.
o It includes High-Level Design (HLD), which outlines system architecture, and Low-Level Design (LLD), detailing component-
level designs.
4. Coding:
o The design is converted into source code.
o Developers write code for the system's modules, integrating them later into a full system.
5. Testing:
o The system is tested for defects and errors.
o Unit testing (for individual modules) and system testing (for the complete software) are performed to ensure that the
software works as expected.
6. Maintenance:
o After deployment, the software enters the maintenance phase.
o Issues such as bug fixes, performance improvements, and adaptation to new environments are addressed over time.
Problems Encountered in the Waterfall Model
1. Inflexibility to Changes:
o Once a phase is completed, it is difficult to revisit earlier phases. This makes adapting to changing requirements costly and
time-consuming.
2. Late Testing:
o Testing occurs after the coding phase, so any major issues found at this stage can lead to significant rework, increasing the
overall cost and time.
3. Delayed Feedback:
o Users or stakeholders may not see a working version of the product until late in the process, which could lead to a final
product that doesn’t fully meet their needs.
4. Poor for Uncertain Requirements:
o The model assumes that all requirements are known upfront, which is rarely the case. If requirements evolve, the Waterfall
model struggles to accommodate changes efficiently.
5. Lack of Overlap Between Phases:
o The strict separation of phases can lead to communication gaps and misunderstandings, especially when handing over
between teams (e.g., from design to coding).
6. Higher Risk for Large Projects:
o For complex or large projects, the rigidity of the Waterfall model increases the risk of failure due to unforeseen
complications.
Spiral Model (PYQ)
The Spiral Model is a risk-driven software development process model that combines the
iterative nature of prototyping with the controlled aspects of the Waterfall Model. The
development process spirals through repeated cycles (iterations), each one going through
several key phases.
Key Phases in the Spiral Model
1. Planning:
o In this phase, objectives, alternatives, and constraints for each iteration (or
spiral) are identified.
o Tasks include gathering requirements, defining milestones, and estimating
resources.
o Task Region: The task here is to understand and define what needs to be
achieved in this iteration and how to allocate time and resources effectively.
2. Risk Analysis:
o This phase identifies potential risks that might affect the success of the project.
o Risks are assessed, and mitigation strategies are formulated.
o Task Region: Critical activities include evaluating technical risks, budget constraints, and timeline feasibility to minimize
uncertainty in the project.
3. Engineering:
o The actual development of the product occurs during this phase, including design, coding, and testing.
o The focus is on building and validating the system or its components based on the planning and risk analysis.
o Task Region: Here, the task involves executing development activities such as prototyping, coding, and integration based
on previously established plans.
4. Evaluation:
o At the end of each spiral, the product is evaluated by stakeholders.
o Feedback is collected, and the product is assessed against objectives and risks identified in earlier phases.
o Task Region: The evaluation task involves reviewing progress, refining requirements based on feedback, and preparing for
the next iteration of the spiral.

Task Region Explanation:


In the Spiral Model, a task region refers to the collection of specific tasks and activities performed within each phase of the model during
an iteration. Each task region focuses on a distinct aspect of the project—planning, analyzing risks, building the system, and evaluating the
progress.

Customer and Developer Wins:


• Customer Wins:
o The customer gets involved at every iteration of the spiral, allowing them to review the system as it evolves.
o Each cycle incorporates feedback from the customer, ensuring that the majority of the customer's needs are met over
time.
o Since risks are analyzed and managed early in each spiral, it reduces the chances of delivering an unsatisfactory product,
leading to higher customer satisfaction.
• Developer Wins:
o Developers benefit by working within realistic budgets and timelines, as risks and scope are continuously evaluated.
o Since the process is iterative, they can develop the system in manageable chunks rather than committing to rigid schedules
that might fail.
o By focusing on high-risk areas early on, developers can address major challenges upfront, improving the likelihood of
success and reducing costly rework.
Agile Software Development (PYQ)
1. Satisfy the Customer:
o The primary goal is to meet customer needs through
early and continuous delivery of valuable software.
2. Welcome Changing Requirements:
o Agile embraces changes, even late in development, to
ensure the software meets evolving customer needs.
3. Deliver Working Software Frequently:
o Software is delivered in small, usable increments regularly, ensuring continuous feedback from customers.
4. Motivate Individuals:
o Build projects around motivated individuals and provide the environment and support they need to succeed.
5. Interact Frequently with Stakeholders:
o Continuous collaboration between developers and stakeholders ensures that the product aligns with business objectives.
6. Communicate Face-to-Face:
o Face-to-face communication is preferred as the most effective way to convey information.
7. Measure by Working Software:
o Progress is measured by working, functional software, not by documentation or plans.
8. Maintain Constant Pace:
o Agile promotes sustainable development, where developers, sponsors, and users can maintain a constant pace indefinitely.
9. Sustain Technical Excellence and Good Design:
o Continuous attention to technical excellence and good design enhances agility and product quality.
10. Keep it Simple:
o Simplicity, or maximizing the amount of work not done, is essential in agile development.
11. Empower Self-Organizing Teams:
o Agile teams are self-organizing, meaning they determine the best way to accomplish their tasks.
12. Reflect and Adjust Continuously:
o Teams regularly reflect on how to become more effective and adjust their behavior accordingly.

Problems with Agile Methods:


1. Lack of Documentation:
o Agile emphasizes working software over comprehensive documentation, which can cause issues in maintaining or scaling
the system.
2. Scope Creep:
o The flexibility in welcoming changes can lead to scope creep, making it difficult to control project boundaries.
3. Inconsistent Output:
o Delivering working software in small increments can sometimes result in inconsistent or partial features, especially if
iterations are rushed.
4. Limited Long-Term Planning:
o Agile focuses on short-term goals, which may result in a lack of long-term project vision and planning.
5. Requires Experienced Teams:
o Agile methods rely on self-organizing, highly skilled teams. Inexperienced teams may struggle with the autonomy and
decision-making required.
6. Poor Fit for Large Teams:
o Scaling agile methods to large teams or large projects can be challenging due to coordination and communication issues.
7. Customer Availability:
o Agile requires frequent interaction with stakeholders, and if the customer is unavailable or unresponsive, it can hinder
progress.
1 mark question PYQs
a) Merits of the Incremental Model:
1. Early Product Delivery: Delivers a working product early in the development process.
2. Flexibility: Easier to accommodate changes after each increment.
3. Risk Management: Risks are identified and mitigated with each increment.
4. Customer Feedback: Customer feedback is obtained early, allowing for adjustments.
5. Parallel Development: Different parts of the system can be developed in parallel.

b) Software and Software Engineering:


• Software: A collection of instructions, data, and programs used to operate computers and execute specific tasks.
• Software Engineering: The systematic, disciplined, and quantifiable approach to the design, development,
maintenance, and testing of software systems.

c) Advantages of Adhering to Life Cycle Models for Software:


1. Structured Development: Provides a clear roadmap and sequence of phases.
2. Better Planning: Helps in planning and estimating resources, time, and costs.
3. Risk Management: Allows for early risk identification and mitigation.
4. Control and Monitoring: Makes it easier to track progress and manage deviations.
5. Quality Assurance: Ensures that quality checkpoints are established at each phase.

d) What is Scrum?
Scrum is an agile framework used for managing and completing complex projects. It breaks down work into sprints (short
iterations) and involves a Scrum team, which includes a Product Owner, Scrum Master, and Development Team. Scrum
emphasizes continuous feedback, collaboration, and adaptive planning.

e) What is Extreme Programming (XP)?


Extreme Programming (XP) is an agile software development methodology that focuses on improving software quality and
responsiveness to changing requirements. Key practices include pair programming, test-driven development (TDD),
continuous integration, and frequent releases. XP aims to deliver high-quality software quickly.
Software Quality Assurance (IMP)
Software Quality Assurance (SQA) is a systematic process that ensures the quality of software products through various
activities and techniques. It aims to confirm that the software meets defined standards and requirements during its
development lifecycle. SQA is not just limited to testing but involves planning, monitoring, and continuously improving the
development process to ensure high-quality deliverables.
Key Aspects of SQA:
1. Planned and Systematic Process:
SQA is an organized activity that is built into the development process. It doesn't happen by chance; it requires a well-
defined approach that includes steps such as testing, reviews, and continuous feedback to improve the quality of the
product.
2. Continuous Improvement:
A primary goal of SQA is continuous improvement. This involves tracking and measuring quality metrics throughout
the software's development, allowing teams to use the feedback for refining both the product and future projects.
3. SQA as an Umbrella Activity:
SQA covers a wide range of activities:
o Standards and Procedures: Ensures consistency by adhering to predefined guidelines for software development.
o Metrics and Measurement: Helps quantify software quality, focusing on attributes like complexity, usability, and
maintainability.
o Testing and Formal Technical Reviews: Reviews and testing ensure that defects are caught and addressed early,
saving both time and costs.
o Software Configuration Management (SCM): Controls changes in software, ensuring that each version is
managed and reviewed properly.
4. Cost-Effectiveness of SQA:
SQA ensures that defects are detected early in the process, particularly in the design or requirement stages, where
they are cheaper to fix. Addressing defects later in the development or after release can be significantly more costly.
5. Software Quality Attributes:
Quality is evaluated through both internal and external attributes:
o From a customer’s perspective, the software must meet functional and performance specifications.
o From a developer’s perspective, the software should be easy to maintain, test, and extend. Key quality attributes
include reliability, usability, security, portability, and efficiency.
6. Principles of SQA:
o Standards and Measurability: Software must meet specific standards, and its quality should be measurable
using defined metrics.
o Feedback and Improvement: SQA activities generate valuable feedback to improve the development process,
leading to higher-quality products in future projects.
Importance of SQA:
SQA plays a crucial role in ensuring software reliability and customer satisfaction. By integrating systematic checks, metrics, and
reviews, SQA helps produce software that not only meets functional requirements but is also easier to maintain, more secure,
and more efficient over time
IA Questions
1. Prime Objective of Software Engineering (CO1):
The prime objective of software engineering is to produce high-quality software that is reliable, maintainable, and meets
the needs of its users while being developed within budget and time constraints.
2. Software Engineering Paradigm (CO1):
A software engineering paradigm is a model or approach that defines the structure, techniques, and methods used for
developing software. Examples include the Waterfall Model, Spiral Model, and Agile methodologies.
3. Spiral Model (CO1):
The spiral model is a risk-driven software development process model that combines elements of both design and
prototyping. It allows for iterative development through repeated cycles, with each iteration designed to refine and
expand on the product based on feedback and risk assessment.
4. Waterfall Model (CO1):
The Waterfall model is a linear, sequential approach to software development where each phase (Requirements, Design,
Implementation, Testing, and Maintenance) must be completed before the next begins. It is simple to understand but
lacks flexibility for changes.
5. Distinguish Between Process and Methods (CO1):
• Process: A series of steps followed in the development of software, defining what needs to be done.
• Methods: Specific techniques used to carry out the steps in the process, defining how to do it.
6. Importance of Software Engineering (CO1):
Software engineering is important because it provides systematic, disciplined approaches to developing software,
ensuring that projects are completed on time, within budget, and meet quality standards. It reduces complexity, improves
quality, and ensures maintainability.
7. Software Process and Its Important Features (CO2):
A software process is a structured set of activities involved in developing software, including requirements analysis,
design, implementation, testing, and maintenance. Important features include:
• Repeatability
• Measurability
• Predictability
• Scalability
8. Two Characteristics of Software as a Product (CO2):
• Intangibility: Software cannot be physically touched or seen.
• Flexibility: Software can be modified and updated to meet new requirements.
9. Process Maturity Levels in SEI's CMM (CO5):
The SEI Capability Maturity Model (CMM) defines five maturity levels:
• Initial: Ad hoc, chaotic processes.
• Repeatable: Basic project management processes are established.
• Defined: Standardized processes across the organization.
• Managed: Processes are measured and controlled.
• Optimizing: Continuous process improvement.
10. Distinguish Between Verification & Validation (CO5):
• Verification: Ensures the product is built correctly according to the specifications (e.g., reviews, walkthroughs,
inspections).
• Validation: Ensures the product meets the user's needs and requirements (e.g., testing, user acceptance).
11. Functions of Data Architecture (CO2):
Data architecture defines how data is collected, stored, managed, and used in an information system. Its functions
include:
• Structuring and organizing data.
• Ensuring data availability, reliability, and integrity.
12. System Modeling (CO3):
System modeling is the process of creating abstract representations (models) of a system to understand, analyze, and
communicate the system's structure and behavior. It often includes diagrams like flowcharts, data flow diagrams, and
state diagrams.
13. System Engineering Hierarchy (CO2):
The system engineering hierarchy defines the decomposition of a system into levels, typically:
• System Level
• Subsystem Level
• Component Level
• Unit Level
14. Factors to Consider During System Modeling (CO3):
Some important factors to consider during system modeling include:
• System requirements and specifications.
• System complexity.
• Integration and interaction between components.
• Scalability and future growth.
15. Verification & Validation (CO5):
• Verification: Checking that the product complies with its specifications (e.g., design verification).
• Validation: Ensuring that the product satisfies its intended use and requirements (e.g., system testing).
Iterative Waterfall Model
The Iterative Waterfall Model is a variation of the classical Waterfall model that allows for revisiting previous phases after a
cycle is completed, offering a bit more flexibility. Here's a breakdown of its phases:
1. Feasibility Study:
o Analyzes the project's viability in terms of budget, time, and technical resources.
2. Requirement Analysis:
o Gathers detailed system requirements and documents them to form the basis for system design.
3. Design:
o The system architecture is designed, covering both high-level and low-level design elements.
4. Coding:
o The design is implemented by writing code for the system, followed by integration of various modules.
5. Testing:
o The developed system undergoes rigorous testing to ensure it meets the specified requirements and functions
correctly.
6. Maintenance:
o After deployment, ongoing maintenance is performed to fix issues, enhance functionality, and adapt to changing
needs.
Unlike the classic model, this version allows for iteration, meaning you can revisit earlier phases based on feedback or issues
discovered during testing.
V-Mode
V-Model (Verification and Validation Model)
The V-Model is a software development model that emphasizes the parallel execution of development and testing activities,
aligning each development phase with its corresponding testing phase.
Key Phases:
1. Business Requirements ↔ Acceptance Testing
• Ensure that the final product meets the business needs and fulfills the client's requirements.
2. System Requirements ↔ System Testing
• Validate the complete system functionality according to the defined system requirements.
3. High-Level Design ↔ Integration Testing
• Check the interaction between integrated modules to ensure they work together as intended.
4. Detailed Design ↔ Unit Testing
• Test individual components or units based on the detailed design specifications to ensure they function correctly.
5. Coding ↔ Unit Testing
• Code implementation is directly verified through unit tests to ensure the smallest pieces of the system work as
expected.
Prototyping Model
The Prototyping Model is a software development approach where a prototype (a preliminary version of the system) is built,
tested, and refined through multiple iterations based on user feedback.
Key Phases:
1. Requirement Gathering:
o Initial requirements are gathered, but they are not fully defined.
2. Quick Design:
o A quick and rough design of the system is created to build a prototype.
3. Prototyping:
o A prototype is developed to understand the system's functionality and gather user feedback.
4. User Evaluation:
o The prototype is evaluated by the users, and feedback is collected to refine the requirements.
5. Refinement:
o Based on feedback, the prototype is refined and reworked in iterations until the final system meets the users’
needs.
6. Final Product Development:
o Once the prototype is approved, the final system is developed with fully defined requirements.
The model helps in better understanding user requirements and reducing risks, but can lead to scope creep if not managed
carefully.
Evolutionary Model
This model is an incremental development approach where the software is developed and refined through multiple cycles, or
iterations. Here’s a brief explanation:
1. Initial Rough Requirements: The process starts with gathering initial requirements, which are not detailed or
complete.
2. Specification: Based on the initial requirements, a specification of the system is created.
3. Development: The system is then developed into an initial version.
4. Validation: Each version undergoes validation to ensure it meets the requirements.
5. Iterations: After validation, further refinements are made, leading to intermediate versions. This process repeats until
the final version is developed.
In summary, the evolutionary model allows continuous refinement of the product through several iterations, leading to
gradual improvement.
RAD Model
The Rapid Application Development (RAD) model is a type of software development methodology that emphasizes quick
development and iteration of prototypes. It focuses on user feedback and involves the following key phases
1. Business Modelling: This phase identifies the information flow between various business functions, outlining how
data is processed and shared.
2. Data Modelling: The information from the business modelling phase is refined to define the data objects necessary
for the system.
3. Process Modelling: This phase focuses on creating the flow of data and specifying the transformations the data must
undergo to meet business needs.
4. Application Generation: The actual coding and software development occur here, where the system is built based on
the models created in earlier phases.
5. Testing & Turnover: Finally, the developed software is tested and deployed. Any necessary changes are made,
ensuring the system is functional and meets user expectations.
Each module (1, 2, 3) goes through the same iterative process, allowing for rapid prototyping and faster delivery of the
system in segments. This modularity speeds up development and facilitates continuous user feedback.
Unified Model
The Unified Model, also known as the Unified Process (UP) or Rational Unified Process (RUP), is an iterative and incremental
software development framework. It focuses on addressing risks early in the development process and follows a phased
approach with multiple iterations. Here’s a brief explanation:
1. Inception: The project's initial phase, where the scope, requirements, and high-level architecture are defined. The
focus is on understanding what to build`.
2. Elaboration: In this phase, detailed analysis, design, and risk assessment occur. Key architecture decisions are made,
and any high-risk areas are addressed.
3. Construction: The actual development of the system happens here. Iterative coding, testing, and integration lead to
working software being incrementally produced.
4. Transition: The final phase, focusing on user training, deployment, and bug fixes. The system is fine-tuned based on
user feedback and prepared for full release.
The Unified Model emphasizes use-case driven, architecture-centric, and iterative development, making it highly adaptable
to changing requirements and focusing on delivering a reliable, well-structured system.

You might also like