0% found this document useful (0 votes)
4 views21 pages

ASE Notes

The document provides an overview of Agile software development, highlighting its iterative approach, key methods like Scrum and XP, and the advantages over traditional models. It discusses feasibility analysis, UML, various types of software testing, and principles of Lean Software Development. Additionally, it outlines the roles in an Agile team, characteristics of effective teams, and guidelines for setting up an Agile team.

Uploaded by

nikhathsimran
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)
4 views21 pages

ASE Notes

The document provides an overview of Agile software development, highlighting its iterative approach, key methods like Scrum and XP, and the advantages over traditional models. It discusses feasibility analysis, UML, various types of software testing, and principles of Lean Software Development. Additionally, it outlines the roles in an Agile team, characteristics of effective teams, and guidelines for setting up an Agile team.

Uploaded by

nikhathsimran
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

*Module 1*

1. What is Agile software development?

Agile Software Development is an iterative and incremental approach to building


software where requirements and solutions evolve through collaboration between
cross-functional teams and customers.

Key points :

 Focuses on customer satisfaction through early and continuous delivery

 Encourages flexibility and quick response to changing requirements

 Promotes continuous feedback and improvement

 Emphasizes team collaboration over rigid processes

 Common Agile methods include Scrum, XP (Extreme Programming), Kanban

2. Five key Agile methods and practices?


Here are five key Agile methods and practices :

1. Scrum
A popular Agile framework that divides work into time-boxed sprints (usually 2–
4 weeks). It uses roles like Product Owner, Scrum Master, and Development
Team to deliver incremental product versions.

2. Extreme Programming (XP)


Focuses on high-quality code and customer satisfaction using practices like
pair programming, continuous integration, test-driven development (TDD),
and frequent releases.

3. Kanban
A visual workflow management method that uses boards to track tasks (To Do,
In Progress, Done). It emphasizes continuous delivery and limiting work in
progress (WIP).
4. Lean Software Development
Derived from Lean manufacturing principles. It aims to eliminate waste, optimize
processes, deliver faster, and focus on value to the customer.

5. Daily Stand-up Meetings


A common Agile practice where team members meet briefly (15 minutes) to
discuss what was done, what will be done, and blockers, ensuring
transparency and quick issue resolution.

3. What are the advantages and disadvantages of Traditional Software


Development?

Traditional Software Development

Traditional software development follows a linear and sequential approach, where


each phase (requirements, design, coding, testing, deployment, maintenance) must be
completed before moving to the next.
Advantages

1. Simple and easy to understand

2. Well-defined documentation

3. Suitable for small and stable projects

4. Easy to manage

Disadvantages

1. Inflexible to changes

2. Late testing and feedback

3. Customer involvement is minimal


4. High risk for complex projects

4. Types of Feasibility Analysis?


Types of Feasibility Analysis

Feasibility analysis is the process of evaluating whether a proposed software project is


practical, viable, and worth implementing.

1. Technical Feasibility

Assesses whether the required technology, tools, hardware, and technical expertise
are available to develop the system.
2. Economic Feasibility

Evaluates the cost–benefit aspect of the project, including development cost,


operational cost, and expected benefits or return on investment.
3. Operational Feasibility

Determines whether the system will be accepted and effectively used by users,
considering organizational culture, user training, and support.
4. Legal Feasibility

Checks whether the project complies with legal and regulatory requirements, such as
data protection laws, licensing, and intellectual property rights.
5. Schedule (Time) Feasibility

Analyzes whether the project can be completed within the given time frame using
available resources.

5. What is UML?

UML (Unified Modeling Language) is a standard visual modeling language used to


design, visualize, specify, and document the structure and behavior of software
systems.
It provides a set of standardized diagrams to represent how a system is built and how
it behaves, making communication easier among developers, designers, and
stakeholders.

Key points :
 Used mainly in object-oriented software development

 Helps in system analysis and design

 Improves clarity, documentation, and communication


 Maintained by OMG (Object Management Group)

6. Types of testing?

Types of Software Testing

Software testing is the process of evaluating a system or application to ensure it


works as expected and is free from defects.
1. Unit Testing

Testing of individual components or modules to verify that each unit functions correctly.
2. Integration Testing

Testing the interaction between integrated modules to detect interface defects.


3. System Testing

Testing the complete and integrated system to ensure it meets specified requirements.
4. Acceptance Testing

Performed by the customer or end users to confirm that the system meets business
requirements.
(Types: Alpha testing, Beta testing)
5. Regression Testing

Re-testing the software after changes or bug fixes to ensure existing functionality is not
affected.
6. Black Box Testing

Testing without knowledge of internal code structure, focusing on input–output behavior.


7. White Box Testing

Testing with knowledge of internal code, focusing on logic, paths, and conditions.
8. Performance Testing

Testing system performance under load (includes load testing and stress testing).

7. What is incremental development?

Incremental Development is a software development approach in which the system is


designed, implemented, and delivered in small, manageable parts called
increments.

Each increment adds new functionality to the existing system, and every release
produces a working and usable version of the software.

Key points:

 Development is divided into multiple increments

 Each increment goes through analysis, design, coding, and testing


 Working software is delivered frequently

 User feedback from each increment is used to improve the next one

 Reduces risk and allows early detection of errors


Example:

A library system may first deliver user login, then book search, followed by
issue/return features in later increments.

8. What is Test Driven Development (TDD)?

Test Driven Development (TDD) is a software development practice in which tests


are written before the actual code.

Development follows a short, repeated cycle called Red–Green–Refactor:

 Red – Write a test and see it fail

 Green – Write the minimum code to pass the test


 Refactor – Improve the code without changing functionality

Key points :

 Tests are created before implementation

 Ensures high code quality and fewer defects

 Encourages simple, modular, and maintainable code

 Widely used in Agile and Extreme Programming (XP)

9. What is Traditional Software Development? Explain the Waterfall Model.


(5M / 10M)
Traditional Software Development

Traditional Software Development follows a sequential and structured approach,


where the entire software development process is divided into distinct phases. Each
phase must be completed fully before moving to the next, with little scope for
changes once a phase is finished.
The Waterfall Model is the most widely used traditional model.
Waterfall Model

The Waterfall Model is a linear and sequential software development model where
progress flows steadily downwards like a waterfall through well-defined phases.
Phases of the Waterfall Model

1. Requirement Analysis

o Collects and documents all user requirements

o Requirements are frozen before development starts


2. System Design

o Defines system architecture, data flow, and interfaces

o Converts requirements into technical design


3. Implementation (Coding)

o Actual coding of the software based on design

o Each module is developed separately


4. Testing

o Identifies and fixes defects

o Ensures the system meets requirements


5. Deployment

o Software is delivered and installed for users


6. Maintenance

o Handles bug fixes, updates, and enhancements


Advantages of the Waterfall Model

 Simple and easy to understand

 Clear documentation and milestones

 Easy to manage due to fixed phases


Disadvantages of the Waterfall Model

 Inflexible to requirement changes

 Testing occurs late in the cycle


 Not suitable for complex or evolving projects

10. What is Lean Software Development? Explain its seven principles.(5m)

Lean Software Development

Lean Software Development is an Agile methodology adapted from Lean


manufacturing (Toyota Production System) that focuses on delivering maximum
value to the customer by eliminating waste and improving efficiency in the software
development process.
Seven Principles of Lean Software Development

1. Eliminate Waste

Remove anything that does not add value, such as unnecessary features, delays,
rework, and excessive documentation.
2. Build Quality In

Ensure quality at every stage through practices like continuous testing, code reviews,
and automation, instead of fixing defects later.

3. Create Knowledge

Encourage learning through experimentation, feedback, and iteration, helping teams


make better decisions.
4. Defer Commitment

Make important decisions as late as possible to allow flexibility and adapt to changing
requirements.
5. Deliver Fast

Release software quickly in small increments to get early feedback and reduce risk.

6. Respect People

Empower team members, encourage collaboration, and trust individuals to make


decisions.
7. Optimize the Whole
Focus on improving the entire system, not just individual components or teams.

11. Explain the core components of Scrum and its flow (7 steps). (5M / 10M)
Scrum

Scrum is an Agile framework used to manage and develop complex software products
through iterative and incremental development using time-boxed sprints.
Core Components of Scrum

Scrum is built around three main components: Roles, Artifacts, and Events.

1. Roles

 Product Owner – Defines and prioritizes product requirements in the Product


Backlog.
 Scrum Master – Facilitates Scrum practices and removes impediments.

 Development Team – Designs, develops, tests, and delivers the product


increment.
2. Artifacts

 Product Backlog – Ordered list of all features and requirements.

 Sprint Backlog – Subset of items selected for the current sprint.

 Increment – A potentially shippable product produced at the end of each sprint.

3. Events

 Sprint – Fixed time period (1–4 weeks) to complete selected work.

 Sprint Planning – Decides what work will be done in the sprint.

 Daily Scrum – Short daily meeting to track progress.

 Sprint Review – Demonstrates the completed increment.

 Sprint Retrospective – Reflects on improvements for the next sprint.

Scrum Flow – 7 Steps

1. Create Product Backlog


Product Owner prepares and prioritizes requirements.
2. Sprint Planning
Team selects items from the Product Backlog to work on.
3. Create Sprint Backlog
Selected items are broken into tasks.
4. Sprint Execution
Development team works on tasks during the sprint.
5. Daily Scrum Meeting
Team meets daily to discuss progress and obstacles.
6. Sprint Review
Completed work is demonstrated to stakeholders.
7. Sprint Retrospective
Team analyzes performance and plans improvements.

12. Explain the core practices of XP. (10M)(100%)

Extreme Programming (XP)

Extreme Programming (XP) is an Agile software development methodology that


emphasizes high-quality code, customer satisfaction, and rapid delivery.
It focuses on continuous feedback, simplicity, and teamwork.

Core Practices of XP

XP is based on several core practices that help developers write better code,
respond to changes, and improve collaboration. Key practices include:

1. Planning Game
 Customer and developers collaborate to plan iterations.

 Requirements are prioritized, and small, achievable goals are set for each
iteration.
2. Small Releases

 Deliver frequent, incremental releases of working software.

 Early delivery allows customer feedback and reduces risks.

3. Metaphor

 Use a shared system metaphor or simple analogy to describe how the system
works.
 Helps team members understand the architecture and design.

4. Simple Design

 Design the simplest solution that works.


 Avoid over-engineering and unnecessary features.
5. Test-Driven Development (TDD)

 Write automated tests before code.

 Ensures high code quality and early detection of errors.


6. Refactoring

 Continuously improve code structure without changing behavior.

 Keeps code clean, maintainable, and efficient.

7. Pair Programming

 Two developers work together on the same code:


o Driver writes code

o Observer/Navigator reviews and guides

 Improves code quality and knowledge sharing.


8. Collective Code Ownership

 Everyone can change any code in the system.

 Encourages team responsibility and faster bug fixes.

9. Continuous Integration

 Integrate and test code frequently (several times a day).

 Detects integration problems early.


10. Sustainable Pace (40-Hour Week)

 Maintain a healthy work pace to avoid burnout.

 Promotes long-term productivity and quality.


11. Customer On-Site

 A real customer representative works with the team daily.


 Ensures requirements are clear and updated continuously.

12. Coding Standards

 Follow consistent coding conventions.

 Improves readability and maintainability of code.


13. What is Rational Unified Process (RUP)? Explain its four phases. Explain
its workflows.(10M)
Rational Unified Process (RUP)

RUP is an iterative and incremental software development process framework


developed by Rational Software.
It provides a disciplined approach to assigning tasks and responsibilities within a
software development project and ensures high-quality software that meets user
requirements.
Four Phases of RUP

1. Inception

o Define project scope, objectives, and feasibility.

o Identify key requirements and risks.


2. Elaboration

o Analyze requirements in detail.


o Establish the core system architecture.

o Reduce major technical risks.

3. Construction

o Develop the system iteratively.


o Includes coding, integration, and testing.
4. Transition

o Deploy the system to end users.

o Conduct user training, acceptance testing, and bug fixes.

Core Workflows of RUP

RUP defines nine core workflows (also called disciplines) that span the development
lifecycle. They are divided into Engineering Workflows and Supporting Workflows:

1. Business Modeling

 Understand the business context and processes where the system will
operate.
 Create business use-case models to guide development.

2. Requirements

 Capture, analyze, and manage functional and non-functional requirements.

 Use use-case models to define system behavior.

3. Analysis and Design

 Develop software architecture and detailed design.

 Transform requirements into models and components.

4. Implementation

 Actual coding of the system based on the design.


 Break work into components and integrate incrementally.

5. Test

 Verify and validate the system against requirements.

 Includes unit, integration, system, and acceptance testing.


6. Deployment

 Deliver the system to users.

 Includes installation, user training, and deployment of updates.


7. Configuration and Change Management

 Manage changes to requirements, code, and documents.

 Maintain version control and system integrity.

8. Project Management

 Plan, monitor, and control the project.

 Track progress, manage risks, and allocate resources.


9. Environment
 Provide tools, processes, and infrastructure to support development.

 Includes IDEs, modeling tools, and automation support.


*Module 2*

1. People in an Agile team. (2M)

The people in an Agile team typically include:

1. Product Owner (PO) – Represents the customer, manages the product backlog,
and ensures the team delivers value.
2. Scrum Master – Facilitates the Agile process, removes obstacles, and ensures
the team follows Agile practices.
3. Development Team Members – Cross-functional members (developers, testers,
designers, etc.) who build and deliver the product increment.
These are the three key roles in a standard Agile (Scrum) team.

Characteristics of an Agile team.(2m)


Cross-functional – Members have diverse skills (development, testing, design) to
deliver a complete product increment.
1. Self-organizing – The team manages its own work without heavy supervision.

2. Collaborative – Strong communication and teamwork within the team and with
stakeholders.
3. Flexible and Adaptive – Can quickly respond to changing requirements or
priorities.
4. Committed to Continuous Improvement – Regularly reflects on performance
and adapts processes.

These points capture the key traits of an Agile team.

2. Setting up an Agile team. (2M / 5M)

Define Roles and Responsibilities:

 Product Owner: Manages backlog, represents stakeholders.

 Scrum Master: Facilitates Agile practices, removes obstacles.

 Development Team: Cross-functional members who design, develop, test, and


deliver product increments.

Select Team Members:

 Choose members with complementary skills.

 Ensure mix of developers, testers, designers, and any other required expertise.
Determine Team Size:

 Keep it small (5–9 members) for better communication and efficiency.


Establish Collaboration and Communication:

 Promote daily stand-ups, sprint planning, and retrospectives.


 Use Agile tools (like Jira, Trello) for tracking work.
Foster Agile Mindset:

 Encourage self-organization, adaptability, and continuous improvement.


 Train the team in Agile principles and practices if needed.

3. Developing team skills and why teams should be trained together.

1. Developing Team Skills:


 Agile teams require both technical skills (coding, testing, design) and soft skills
(communication, collaboration, problem-solving).

 Skills are developed through:


o Workshops and training on Agile practices and tools.

o Pair programming or mentoring to share knowledge.

o Hands-on experience in sprints and projects.

o Continuous learning and feedback during retrospectives.

2. Why Teams Should Be Trained Together:

 Promotes Collaboration: Team members learn to work cohesively rather than


as individuals.
 Builds Shared Understanding: Everyone understands Agile principles, roles,
and workflows consistently.
 Enhances Communication: Reduces misunderstandings and improves
coordination.
 Encourages Team Cohesion: Fosters trust and collective responsibility for
project success.
In short: Training together strengthens both skills and team dynamics, making the
Agile team more effective.

4. What is planning? Explain PERT and Gantt charts. (5M)(100%)

Planning is the process of defining project goals, tasks, schedules, and resources
required to achieve the objectives efficiently. It involves deciding what to do, how to do
it, who will do it, and when it will be done. Planning ensures that projects are
completed on time, within budget, and with desired quality.

1. PERT Chart (Program Evaluation and Review Technique):

 A PERT chart is a network diagram used to plan, schedule, and control


complex projects.
 Purpose: Helps identify the critical path (longest sequence of dependent tasks)
to estimate the minimum project duration.
 Features:

o Tasks are represented as nodes or arrows.


o Shows task dependencies and time estimates (optimistic, most likely,
pessimistic).
o Useful for uncertain or complex projects.
2. Gantt Chart:

 A Gantt chart is a bar chart that represents the project schedule over time.

 Purpose: Shows start and finish dates of tasks and helps track progress.

 Features:

o Tasks are listed vertically; time is shown horizontally.


o Bars represent task duration.

o Can show dependencies, milestones, and completed work.


Difference:

Feature PERT Chart Gantt Chart

Type Network diagram Bar chart

Focus Task dependencies, critical path Task schedule and duration

Best for Complex/uncertain projects Simple scheduling and tracking

Visualization Nodes/arrows Horizontal bars

5. Appreciative Inquiry (AI) – Explain the 4-D cycle. (5M)


Appreciative Inquiry (AI):

 AI is a positive approach to organizational change that focuses on identifying


strengths, successes, and opportunities rather than problems.

 It encourages collaboration, innovation, and continuous improvement by


asking “What works well?” instead of “What’s wrong?”
The 4-D Cycle of AI:

1. Discovery (D1) – Identify what works well

o Focus on the strengths and best practices of the organization or team.

o Ask questions like: “When have we been at our best?”


o Goal: Discover the positive core that can be leveraged.
2. Dream (D2) – Envision the future

o Imagine what the organization or team could become if its strengths are
fully utilized.

o Encourage creativity and vision-building.

o Goal: Create a shared vision of an ideal future.


3. Design (D3) – Plan and prioritize actions

o Develop strategies, processes, and structures to achieve the dream.

o Decide what needs to change or be implemented to reach the envisioned


future.

o Goal: Design the systems and processes aligned with the vision.
4. Destiny/Delivery (D4) – Implement and sustain

o Take action to achieve the designed strategies.

o Foster continuous learning, empowerment, and ownership within the


team.

o Goal: Sustain positive change and build momentum for ongoing


improvement.

5. Techniques for requirement elicitation and developing the requirement


documents. (5M)

Techniques for Requirement Elicitation and Developing Requirement Documents


1. Requirement Elicitation Techniques

Requirement elicitation is the process of gathering the needs and expectations of


stakeholders for a system or project. Common techniques include:
1. Interviews:

o Conduct one-on-one or group discussions with stakeholders.

o Helps understand their expectations, pain points, and requirements.


2. Questionnaires/Surveys:

o Useful for gathering input from a large group.


o Helps identify common requirements and priorities.
3. Workshops:

o Collaborative sessions with stakeholders and development team.

o Encourages discussion, clarification, and consensus on requirements.


4. Observation:

o Study the current system or processes in use.

o Helps identify real needs and inefficiencies.


5. Prototyping:

o Create a working model or mock-up of the system.

o Stakeholders provide feedback, helping refine requirements.


6. Brainstorming:

o Team members generate ideas freely to explore potential requirements.


7. Document Analysis:

o Study existing documents, manuals, and reports to gather requirements.

2. Developing Requirement Documents

After elicitation, requirements are documented clearly to guide development. Key steps:
1. Requirement Specification:

o Functional Requirements: What the system should do (features,


operations).
o Non-Functional Requirements: Performance, usability, security,
reliability.
2. Requirement Prioritization:

o Categorize requirements as Must-have, Should-have, Could-have,


Won’t-have (MoSCoW method).

3. Use Cases / User Stories:

o Describe interactions between users and the system.

o Helps developers understand real-world scenarios.


4. Requirement Review and Validation:

o Conduct reviews with stakeholders to ensure completeness, clarity, and


correctness.
o Update the document based on feedback.
5. Requirement Documentation Tools:

o Word, Excel, Jira, Confluence, or specialized requirement management


tools.

6. Team behavior in Extreme Programming (XP). (10M)

Extreme Programming (XP) is an Agile software development methodology that


emphasizes customer satisfaction, continuous feedback, and teamwork. In XP,
team behavior plays a crucial role in ensuring project success.

1. Key Aspects of Team Behavior in XP

1. Collaborative and Cooperative:

o XP teams work closely together, including developers, testers, and


customers.
o Encourages pair programming where two developers work together on
the same code, sharing knowledge and improving quality.
2. Communication:

o Open and frequent communication is essential.

o Daily stand-ups and informal conversations ensure that everyone is aware


of progress and issues.
3. Collective Ownership:

o All team members share responsibility for the codebase.

o Any developer can modify any part of the code, encouraging


accountability and teamwork.
4. Sustainable Pace:
o XP promotes a work-life balance to maintain productivity.

o Teams avoid overtime to prevent burnout, ensuring long-term efficiency.


5. Continuous Feedback:
o Regular customer feedback and peer code reviews help identify
improvements early.

o Teams are responsive and adapt quickly to changing requirements.


6. Respect and Trust:

o Team members respect each other’s opinions and expertise.

o Trust allows smooth collaboration and quick decision-making.


7. Learning and Improvement:

o Teams are committed to continuous learning through retrospectives and


experiments.

o Encourage improvement of coding practices, testing, and team dynamics.

2. Practices Supporting Team Behavior in XP

 Pair Programming: Enhances collaboration and knowledge sharing.


 Collective Code Ownership: Builds shared responsibility.

 Continuous Integration: Promotes teamwork and reduces integration issues.

 On-site Customer: Improves communication and quick feedback loops.

 Refactoring: Encourages shared understanding of code and quality


improvement.

You might also like