???????? ??????????? ??? ???
???????? ??????????? ??? ???
Kanban - Kanban is a Lean approach to Agile that focuses on visualizing and managing workflow. It is flexible and
suitable for both software development and non-software projects. Kanban emphasizes continuous flow and incremental
improvements.
Key Principles Of Kanban:
1. Visualize the Workflow: Kanban uses a visual board with columns to represent the workflow stages. Each task or
item is represented by a card, and it moves through the columns from left to right as it progresses.
2. Limit Work in Progress (WIP): Kanban places limits on the number of items that can be in progress at any given
time. This prevents overloading the team and helps maintain a steady flow of work.
3. Manage Flow: The goal is to make the flow of work as smooth and efficient as possible. Kanban measures lead time
(how long it takes to complete a task) and cycle time (how long a task spends in active development).
4. Make Process Policies Explicit: Teams should define clear policies for each workflow stage, making it easier to
understand how work should be handled.
5. Continuous Improvement: Teams regularly review their Kanban board and process to identify bottlenecks and areas
for improvement. Changes are made incrementally.
Module 2 : Software Requirements Analysis And Modeling.
Q1 Explain SRS In Detail. (VIMP)
Ans.
An SRS, or Software Requirements Specification, is a comprehensive document that outlines the functional and non-
functional requirements of a software system or application. It serves as a critical communication tool between
stakeholders, including clients, project managers, developers, and testers, to ensure a common understanding of what the
software should accomplish.
1. Introduction:
• Purpose: The purpose section explains the intent of the document and why the software system is being
developed.
• Scope: This section defines the scope of the project, including what the software will and will not do.
• Definitions, Acronyms, and Abbreviations: It provides a list of terms and abbreviations used in the document for
clarity.
2. Overall Description:
• Product Perspective: Describes how the software fits into the larger system, including interactions with other
systems or components.
• Product Functions: Provides an overview of the primary functions the software will perform.
• User Characteristics: Defines the different types of users who will interact with the software.
• Constraints: Lists any technical, legal, or regulatory constraints that affect the software development.
• Assumptions and Dependencies: Outlines any assumptions made during the requirement-gathering process and
any external dependencies that the software relies on.
3. Specific Requirements:
• Functional Requirements: Detailed descriptions of the software's functions, use cases, and interactions with users.
• Non-Functional Requirements: Describes qualities or attributes of the software, such as performance, security, and
usability. Non-functional requirements may include speed, scalability, reliability, and security requirements.
• External Interface Requirements: Defines how the software will interact with external systems, including APIs,
databases, and hardware components.
• System Features: Provides a detailed breakdown of the software's features and capabilities.
• Data Requirements: Describes the data the software will create, manipulate, or store.
4. System Models:
• Use Case Diagrams: Visual representations of how users interact with the system, showing actors, use cases, and
their relationships.
• Data Flow Diagrams (DFD): Diagrams that illustrate how data flows through the system, including data sources,
processes, and data destinations.
5. Appendices:
• Glossary: An alphabetical list of terms and their meanings, providing clarity for those who may not be familiar
with the terminology.
• Change Log: A record of changes made to the SRS over time, with details about the date of change, the change
description, and the person responsible for the change.
Tracking - Tracking is the ongoing process of monitoring and controlling the progress of a software project to ensure it
stays on track with the established schedule and objectives.
Key Element Of Tracking:
1. Progress Monitoring: Regularly assessing the status of individual tasks and the project as a whole to check if it's
progressing as planned.
2. Issue Identification: Identifying and addressing any obstacles, delays, or issues that arise during the project.
3. Resource Management: Ensuring that resources, such as team members, are allocated and managed efficiently.
4. Risk Management: Identifying potential risks and taking steps to mitigate them to prevent schedule slippage.
5. Change Control: Managing changes to the project scope or requirements and assessing their impact on the schedule.
6. Quality Assurance: Monitoring and ensuring that the project meets its quality and functionality goals.
7. Communication: Keeping stakeholders informed about the project's progress and addressing their concerns or
questions.
8. Documentation: Maintaining accurate records of project progress, issues, and changes.
Coupling - Coupling refers to the degree of interdependence or connection between different modules or components in a
software system. Low coupling is generally desirable because it leads to more modular, reusable, and maintainable code.
Types Of Coupling:
1. No Coupling (Content Coupling): This is the worst type of coupling, where one module directly accesses and
modifies the internal variables or functions of another module. Changes in one module can have a direct and often
harmful impact on another.
2. Data Coupling: Modules communicate by passing data, but they don't directly access or manipulate each other's
internal contents. This is a step up from content coupling, but it's still considered relatively high.
3. Stamp Coupling: Stamp coupling occurs when modules share a complex data structure, like a record or object, and
only use parts of it that are relevant to their functions. While it's better than data coupling, it still has some level of
interdependence.
4. Control Coupling: Modules communicate by passing control information, such as flags or status indicators, to
influence the behavior of another module. This is considered a form of coupling.
5. External Coupling: Modules depend on external shared interfaces, like a common data format or protocol. While
they don't access each other's internals, they rely on external conventions, making them somewhat coupled.
6. Common Coupling: Modules share a common global variable or resource. Changes to the common resource affect
multiple modules, making it a form of coupling.
7. Content Coupling (Pathological Coupling): This is the highest level of coupling, where modules directly access and
modify each other's internal contents, making them strongly interconnected and difficult to maintain.
• Unit Testing
• Integration Testing
• System Testing
• Functional Testing
• Acceptance Testing
• Smoke Testing
• Regression Testing
• Performance Testing
• Security Testing
• User Acceptance Testing
• Useful to uncover errors in logic, function, and implementation for any representation of the software.
• The purpose of FTR is to verify that the software meets specified requirements.
• To ensure that software is represented according to predefined standards.
• It helps to review the uniformity in software that is developed in a uniform manner.
• To make the project more manageable.
• Scope: Change control deals with changes at the project level, including requirements, design, and documentation, in
addition to source code. Version control primarily focuses on managing source code and other development artifacts.
• Purpose: Change control ensures that changes are correctly evaluated, approved, and integrated into the project,
maintaining alignment with project objectives. Version control is primarily concerned with tracking and managing the
history of individual files and facilitating collaboration among team members.
Change control and version control are complementary practices in software engineering. Change control focuses on
managing and controlling changes at the project level, ensuring that they align with project goals. Version control, on the
other hand, focuses on managing changes to individual files, promoting collaboration, and tracking the history of code and
other development assets. Both practices are essential for successful software development and project management.