0% found this document useful (0 votes)
4 views

Module 2 UQ Fully Solved

The document outlines the structure of a Software Requirements Specification (SRS) document, detailing its main components such as Introduction, Overall Description, Specific Requirements, and Appendices. It also explains key concepts in software design, including personas, scenarios, user stories, and feature identification, as well as the importance of requirements elicitation and various methods for gathering requirements. Additionally, it discusses design concepts and architectural styles used in software design, emphasizing the significance of these elements in creating effective and maintainable software systems.

Uploaded by

protopolygon
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 views

Module 2 UQ Fully Solved

The document outlines the structure of a Software Requirements Specification (SRS) document, detailing its main components such as Introduction, Overall Description, Specific Requirements, and Appendices. It also explains key concepts in software design, including personas, scenarios, user stories, and feature identification, as well as the importance of requirements elicitation and various methods for gathering requirements. Additionally, it discusses design concepts and architectural styles used in software design, emphasizing the significance of these elements in creating effective and maintainable software systems.

Uploaded by

protopolygon
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/ 33

Module 2

December 2021
Note: The document contains questions from the past three years, so some of the questions may be
repeated. This is why the document has more pages.

Summarize the structure of an SRS document. (3)

A Software Requirements Specification (SRS) document is structured to comprehensively


detail the system requirements and facilitate clear understanding among stakeholders. The
main components are as follows:

1. Introduction

• Purpose: Outlines the objective of the SRS and identifies the intended audience.
• Scope: Defines the boundaries of the system, describing what the software will and
will not do.
• Definitions, Acronyms, and Abbreviations: Lists terms used to avoid ambiguity.
• References: Provides a list of documents, reports, or other resources referenced in the
SRS.
• Overview: Gives a brief outline of the contents and structure of the SRS.

2. Overall Description

• Product Perspective: Explains how the system fits within a larger context, including
its relationships with other systems or products.
• Product Functions: Summarizes the main functionalities of the system.
• User Characteristics: Describes the typical user profile, including skill levels and
any special training required.
• Constraints: Lists restrictions like regulatory policies, hardware limitations, or design
mandates.
• Assumptions and Dependencies: States assumptions made during the requirement
definition and any dependencies the project may have.

3. Specific Requirements

• Functional Requirements: Details the specific interactions the software must


support, often with use cases or user stories that explain system behavior in various
scenarios.
• External Interface Requirements:
o User Interfaces: Specifies the look and functionality of the user interface.
o Hardware Interfaces: Describes hardware interactions.
o Software Interfaces: Outlines connections with other software systems.
o Communication Interfaces: Specifies protocols and data formats for
communication.
• Non-Functional Requirements:
o Performance Requirements: Includes response time, throughput, and
resource usage.
o Security Requirements: Details access controls, authentication, and data
protection.
o Usability Requirements: Specifies the ease of use and user experience
expectations.
o Reliability, Availability, and Maintainability: Outlines system uptime
expectations and maintenance needs.
• System Features: Breaks down features in detail, each with purpose, input, and
output descriptions.
• Validation and Verification: Lists the criteria for testing and acceptance.

4. Appendices and Supporting Information

• Appendices: Contains supplementary information such as data tables or diagrams that


support the main content.
• Index: Provides a reference for easy navigation.
• Glossary: Defines terms specific to the project that require clarification for the
readers.

Explain Personas, Scenarios, User stories and Feature identification (3)

In software engineering and design, personas, scenarios, user stories, and feature
identification are essential tools for understanding user needs and defining system
functionality:

1. Personas

• Definition: Personas are fictional characters created to represent the different user
types that might interact with a system. They are based on user research and include
detailed descriptions of their demographics, goals, motivations, pain points, and
behavior patterns.
• Purpose: Helps designers and developers keep the end users in mind throughout the
development process, ensuring the product meets user expectations and needs.
• Example: “John, a 35-year-old data analyst, uses analytics software daily and
prioritizes tools with robust visualization capabilities and ease of use.”

2. Scenarios

• Definition: Scenarios describe specific situations where a user interacts with the
system to achieve a goal. They provide context on how the user navigates through the
system and highlight potential challenges and system responses.
• Purpose: Illustrates the use of the system in real-world contexts, which helps in
understanding user interactions and identifying necessary features or improvements.
• Example: “John needs to generate a custom report by 10 AM for a meeting. He logs
into the analytics platform, uses the drag-and-drop interface to select data fields, and
applies filters before exporting the report.”

3. User Stories

• Definition: User stories are short, simple descriptions of a feature told from the
perspective of the end user. They typically follow the format: “As a [type of user], I
want [an action] so that [a benefit or outcome].”
• Purpose: Helps break down the system requirements into manageable, actionable
tasks that are easy to understand by both developers and non-technical stakeholders.
They focus on user needs and guide development priorities.
• Example: “As a data analyst, I want to filter data by date range so that I can
generate time-specific reports.”

4. Feature Identification

• Definition: Feature identification involves determining the functionalities or


components that the system should have to meet user needs and fulfill user stories.
• Purpose: Ensures that all necessary capabilities are identified and planned for
development, allowing teams to focus on features that provide the most value to users.
• Process: Involves reviewing personas, user stories, and scenarios to identify and
prioritize features. This step bridges the gap between understanding user requirements
and actual system development.
• Example: From the user story about filtering data by date, the feature identified could
be “Implement a customizable date filter in the reporting tool.”

Together, these components help create a user-focused approach to system design, ensuring
the final product is intuitive, functional, and aligned with user needs and expectations.

Illustrate Requirement elicitation and analysis process with the help of a diagram. (8)

Illustrating the Requirement Elicitation and Analysis Process involves showcasing the
steps and interactions needed to gather, analyze, and validate the requirements for a project.
Below is a detailed description along with how a typical process diagram would look:

Steps in the Requirement Elicitation and Analysis Process:

1. Stakeholder Identification:
o Identify all potential stakeholders who are affected by or have an interest in
the system.
o Ensure key stakeholders such as clients, end-users, and regulatory bodies are
included.
2. Requirement Gathering:
o Use techniques like interviews, surveys, focus groups, and observations to
collect initial requirements.
o Document stakeholders’ needs and expectations.
3. Workshops and Brainstorming:
o Conduct collaborative workshops to facilitate the exchange of ideas and refine
the initial requirements.
o Use brainstorming sessions for generating new ideas or finding solutions to
challenges.
4. Prototyping:
o Create low-fidelity or high-fidelity prototypes or mock-ups to illustrate system
functionalities.
o Gather feedback from stakeholders to better understand their needs.
5. Document Analysis:
o Review existing documentation, such as business reports, existing system
documents, or manuals, to gather background information.
6. Requirement Categorization:
o Classify requirements into different types such as functional (features and
functions), non-functional (performance, usability), and domain-specific
requirements.
7. Requirement Analysis and Refinement:
o Analyze gathered requirements for consistency, completeness, and feasibility.
o Identify conflicting requirements and work with stakeholders to resolve them.
8. Requirement Validation:
o Verify the accuracy and completeness of the requirements through stakeholder
reviews and feedback.
o Use techniques like reviews, walkthroughs, or prototyping feedback for
validation.
9. Requirement Prioritization:
o Rank requirements based on factors such as importance, urgency, and impact
to ensure the most critical needs are addressed first.
10. Requirement Specification:

• Document the finalized requirements in a Software Requirements Specification (SRS)


for clear communication and future reference.

Diagram Representation:

Below is a textual representation of the Requirement Elicitation and Analysis Process


diagram:

+--------------------------+
| Stakeholder |
| Identification |
+--------------------------+

+--------------------------+
| Requirement Gathering |
+--------------------------+

+--------------------------+
| Workshops & Brainstorm |
+--------------------------+

+--------------------------+
| Prototyping |
+--------------------------+

+--------------------------+
| Document Analysis |
+--------------------------+

+--------------------------+
| Requirement |
| Categorization |
+--------------------------+

+--------------------------+
| Requirement Analysis & |
| Refinement |
+--------------------------+

+--------------------------+
| Requirement Validation |
+--------------------------+

+--------------------------+
| Requirement |
| Prioritization |
+--------------------------+

+--------------------------+
| Requirement |
| Specification |
+--------------------------+

This detailed diagram helps in visualizing the flow of activities from identifying stakeholders
to documenting and specifying requirements. It ensures that requirements are effectively
gathered, analyzed, and validated, forming a strong foundation for the design and
development phases of the project.

Why is requirements elicitation considered as a critical task in requirements


engineering? Explain any two methods for requirements elicitation. (6)

Requirement elicitation is considered a critical task in requirements engineering due to the


following reasons:

Importance of Requirements Elicitation:

1. Foundation for Project Success: Requirement elicitation is essential for defining the
project's scope and objectives clearly. It ensures that the development team
understands what needs to be built, aligning with stakeholder expectations. Any
misstep in this phase can lead to building a product that doesn't meet user needs,
resulting in wasted resources and potential project failure.
2. Minimizing Miscommunication and Rework: By thoroughly gathering and
understanding requirements, teams can avoid ambiguities and misinterpretations that
often lead to costly rework. Early and effective elicitation ensures that requirements
are well-understood and agreed upon, reducing the risk of errors or changes during
later stages of development.

Two Methods for Requirements Elicitation:

1. Interviews:
o Description: This method involves direct, one-on-one conversations with
stakeholders to gather information about their needs, expectations, and pain
points. Interviews can be structured (with predefined questions), semi-
structured (a combination of predefined questions and open-ended
discussions), or unstructured (free-form conversations).
o Advantages: Interviews provide in-depth insights and help clarify complex or
nuanced requirements. They foster direct communication, allowing
stakeholders to express their needs in detail and the interviewer to ask follow-
up questions for clarity.
o Example: A software development team might interview end-users of a
customer support system to understand their workflow and the challenges they
face in their daily operations.
2. Workshops:
o Description: Workshops involve gathering multiple stakeholders in a
collaborative environment to discuss and elicit requirements collectively.
These sessions may include brainstorming, group discussions, and activities
aimed at generating ideas and resolving conflicts.
o Advantages: Workshops facilitate active participation and encourage different
stakeholders to share their perspectives, which helps uncover comprehensive
and balanced requirements. They are also useful for building consensus and
prioritizing requirements.
o Example: A project team may hold a workshop with managers, employees,
and IT staff to gather input for a new enterprise resource planning (ERP)
system, ensuring all relevant aspects are considered and agreed upon.

Both methods help bridge the gap between stakeholders’ expectations and the technical
requirements of the project, ensuring a robust understanding and clear communication of
what needs to be developed.

Briefly explain design concepts in Software Engineering. (8)

Design concepts in Software Engineering are fundamental principles that guide the
development of a system’s structure and behavior. These concepts help ensure that software
is built with quality, maintainability, scalability, and efficiency in mind. Here are detailed
explanations of key design concepts:

1. Abstraction:

• Definition: Abstraction is the process of simplifying complex systems by breaking


them down into more manageable components. It focuses on essential features while
hiding the underlying complexity.
• Example: In object-oriented programming, a class is an abstraction that represents a
real-world entity with properties (attributes) and behaviors (methods), omitting
unnecessary details.

2. Modularity:

• Definition: Modularity refers to dividing a system into distinct, self-contained


modules or components, each responsible for a specific piece of functionality. This
enhances code manageability, reusability, and easier maintenance.
• Example: A web application might have separate modules for user authentication,
data management, and user interface rendering.
3. Cohesion and Coupling:

• Cohesion:
o Definition: Cohesion measures how closely related the functions within a
module are. High cohesion means that a module's tasks are highly related and
focused, which is desirable for maintainability and clarity.
o Example: A module that handles all database operations should only include
functions relevant to database access, maintaining high cohesion.
• Coupling:
o Definition: Coupling refers to the degree of interdependence between
modules. Low coupling is ideal as it means modules can be modified
independently with minimal impact on others.
o Example: A module for user input validation should not be tightly linked with
the module for data processing to maintain low coupling.

4. Encapsulation:

• Definition: Encapsulation involves bundling data and the methods that operate on that
data within a single unit, such as a class, and restricting access to some components to
protect the integrity of the system.
• Example: Using private and public access specifiers in a class ensures that internal
details are hidden and only necessary information is exposed to other parts of the
program.

5. Hierarchy:

• Definition: Hierarchy is a design concept that establishes a system of layered


structures in which elements or components are arranged in a ranked or ordered way.
• Example: The use of class inheritance in object-oriented programming creates a
hierarchy where a subclass inherits attributes and methods from its parent class.

6. Separation of Concerns:

• Definition: This principle states that different concerns or functionalities of a system


should be separated into distinct sections or modules. This enhances system clarity
and reduces complexity.
• Example: In a Model-View-Controller (MVC) framework, the model handles data,
the view manages the user interface, and the controller handles input and application
logic.

7. Refinement:

• Definition: Refinement is the process of elaborating or expanding the design to a


more detailed level by adding more specific elements while maintaining the overall
structure.
• Example: An initial high-level design may outline system components, which are
then refined into detailed specifications with precise attributes and operations.

8. Design Patterns:
• Definition: Design patterns are proven solutions to common design problems or
scenarios within software development. They provide templates for how to structure
classes and objects.
• Example: The Singleton pattern ensures that a class has only one instance and
provides a global point of access to that instance. The Observer pattern allows one
object to notify other objects of state changes, commonly used in event-handling
systems.

Benefits of Applying Design Concepts:

• Improved Maintainability: Clear and modular design leads to easier updates and
maintenance.
• Reusability: Well-structured components can be reused across different projects.
• Scalability: Proper design allows for system scaling with minimal restructuring.
• Flexibility: Reduces the impact of changes and enables easier integration of new
features.

These design concepts collectively contribute to creating software that is efficient, scalable,
maintainable, and aligned with user and business needs.

Explain different architectural styles used in Software design. (6)

In Software Design, architectural styles provide different approaches for structuring a


system. These styles help define the relationships and interactions between system
components and guide the overall organization of software. Here are some commonly used
architectural styles:

1. Layered Architecture:

• Description: This style divides the system into layers, where each layer has a specific
role and interacts only with the layers directly adjacent to it. Common layers include
presentation, business logic, and data access.
• Advantages:
o Separation of concerns makes it easier to manage and maintain.
o Enhanced modularity and scalability.
• Example: Many enterprise applications, including web applications that use the
Model-View-Controller (MVC) pattern, follow a layered architecture.

2. Client-Server Architecture:

• Description: This style involves splitting the system into client and server
components. The client requests services, and the server processes those requests and
returns the results.
• Advantages:
o Centralized control, allowing for easier management and updates.
o Scalability through adding more servers or clients.
• Example: Web applications where a client (web browser) communicates with a
server (web server or database server).

3. Event-Driven Architecture:
• Description: This architecture relies on events and event handlers. Components
communicate by producing and consuming events, which are managed through an
event bus or message broker.
• Advantages:
o Decoupling of components for greater flexibility.
o Real-time response capability to system changes.
• Example: Systems that use Apache Kafka or RabbitMQ to handle asynchronous
messaging and event-driven processes.

4. Microservices Architecture:

• Description: This style structures an application as a collection of loosely coupled


services that are independently deployable. Each microservice focuses on a specific
functionality and communicates with others through lightweight protocols like HTTP
or messaging queues.
• Advantages:
o Scalability and flexibility in deploying and updating services independently.
o Improved fault isolation; a failure in one service doesn’t affect the entire
system.
• Example: Large-scale applications like Netflix and Amazon implement
microservices for more modular and manageable services.

5. Service-Oriented Architecture (SOA):

• Description: Similar to microservices, SOA organizes the system into services, but
these services often share a common communication bus and can be more tightly
coupled than microservices.
• Advantages:
o Reusability of services across different applications.
o Enhanced integration capabilities for various systems.
• Example: Enterprise applications that need to integrate various business functions
such as customer relationship management (CRM) and supply chain management.

6. Pipe-and-Filter Architecture:

• Description: In this style, data flows through a series of processing units called
filters, which transform the data incrementally. The output of one filter serves as the
input to the next.
• Advantages:
o High modularity and reusability of filters.
o Easy to add or remove processing steps without disrupting the overall system.
• Example: Unix command line tools and compilers use this pattern, where data is
passed through a series of transformation commands.

Benefits of Understanding Architectural Styles:

• Guidance on Structuring Complex Systems: Choosing an appropriate style helps


create a clear structure and flow for the system.
• Enhanced Maintainability and Scalability: Architectural styles provide proven
patterns that ease long-term maintenance and scale with growing system demands.
• Facilitated Communication: Clearly defined architectures make it easier for teams to
understand and communicate the overall system design.

Each style has its strengths and best-use scenarios, and often, real-world systems use a
combination of these styles to meet specific project needs.

December 2022
How do you prepare a software requirement specification? 3 Marks

To prepare a Software Requirements Specification (SRS), follow a structured process to


ensure that all functional and non-functional requirements are well-documented and clear.
Here’s a step-by-step approach:

1. Requirement Gathering:

• Interviews and Workshops: Conduct interviews and workshops with stakeholders


(end-users, clients, project managers) to understand their needs, goals, and
expectations.
• Document Analysis: Review existing documents, such as business plans, product
specifications, and any legacy system documentation, to identify relevant
requirements.
• Use Cases and User Stories: Gather user scenarios or user stories that describe how
different users will interact with the system.

2. Structure the SRS Document:

The SRS document should be well-organized into the following key sections:

• Introduction:
o Purpose: Define the purpose of the system and its intended audience.
o Scope: Clarify what the system will do and what is out of scope.
o Definitions and Acronyms: Include any terminology and acronyms used
throughout the document.
• System Overview: Provide a high-level description of the system’s functionality, its
main components, and how they interact.
• Functional Requirements:
o Define in detail the specific functionalities that the system must support (e.g.,
user login, data processing, report generation).
o Use use cases or user stories to describe interactions between users and the
system.
o Ensure that requirements are clear, precise, and testable.
• Non-Functional Requirements:
o Performance: Define system performance criteria, such as response time,
throughput, or resource utilization.
o Security: Specify security requirements, including authentication,
authorization, and data encryption.
o Usability: Outline requirements for the user interface, accessibility, and user
experience.
o Scalability: Describe the system’s ability to handle increased loads and
growth.
• Constraints: Identify any limitations or constraints (e.g., technological constraints,
regulatory requirements, hardware limitations).
• Assumptions and Dependencies: List any assumptions made during the requirement
gathering process and external dependencies (e.g., third-party software, hardware
platforms).

3. Review and Validation:

• Stakeholder Reviews: Organize review sessions with stakeholders to validate that the
documented requirements accurately reflect their needs.
• Feasibility Checks: Assess the technical, operational, and financial feasibility of the
requirements to ensure they are realistic.
• Consistency and Completeness: Verify that the requirements are consistent (no
conflicts or contradictions) and complete (no missing pieces).

4. Refinement and Finalization:

• Based on feedback from stakeholders, refine the SRS document to ensure it is


comprehensive and unambiguous.
• Ensure all requirements are traceable, meaning they can be linked to specific business
objectives or user needs.
• Obtain formal approval from key stakeholders (e.g., clients, users, project managers).

5. Versioning and Updates:

• Maintain version control for the SRS document, as changes in requirements may arise
during the project lifecycle.
• Keep track of updates, ensuring that all stakeholders are informed about
modifications.

Key Characteristics of a Good SRS:

• Clarity: The document should be clear, concise, and free of ambiguity.


• Consistency: Requirements should not conflict with each other.
• Completeness: All necessary requirements should be included and accounted for.
• Testability: Each requirement should be verifiable through testing.
• Traceability: Each requirement should be traceable to its origin, such as stakeholder
needs or business goals.

Compare functional and non-functional requirements. 5 marks

Comparison Between Functional and Non-Functional Requirements:

Aspect Functional Requirements Non-Functional Requirements


Specify how the system should
Specify what the system should do.
Definition perform its tasks. They describe
They describe the behavior and
system qualities, attributes, and
Aspect Functional Requirements Non-Functional Requirements
functions of the system in response constraints, rather than specific
to user inputs or system events. functions.
To define the system's operational
To define the core features and
Purpose constraints, performance criteria, and
functions the system must support.
quality attributes.
Focuses on system behavior and
Focuses on system performance,
interactions (e.g., input processing,
Focus reliability, usability, security, and
calculations, data storage, and
other quality aspects.
retrieval).
- User authentication (e.g., login - Response time of the system
functionality) - System uptime (availability)
Examples - Generating reports - Security requirements (e.g.,
- Data processing encryption)
- Sending notifications - Usability (e.g., intuitive UI)
Measurable based on specific Measurable based on performance
Measurement outputs (e.g., number of transactions metrics (e.g., load time, system
processed, data validation). reliability, scalability).
Tend to remain more stable
Tend to change more frequently throughout the development process
Change
during the software lifecycle due to but may evolve over time based on
Frequency
changes in user needs or features. evolving technology or user
expectations.
Can be tested directly through Verified through performance
functional testing or use case testing, security audits, and
Verification
validation (e.g., unit tests, integration stress/load testing (e.g., how the
tests). system performs under heavy load).
In an online banking system: "The In an online banking system: "The
Example in
system should allow a user to system should respond to any
Context
transfer money between accounts." transaction request within 2 seconds."

Summary:

• Functional Requirements define the specific behaviors and functionalities of a


system, describing what the system should do.
• Non-Functional Requirements focus on the quality attributes and performance
characteristics of the system, describing how well the system should perform its
functions.

Both types of requirements are essential for delivering a well-rounded system that meets user
expectations and operates efficiently under various conditions.

Describe the various activities under Requirements engineering process. 7 marks

The Requirements Engineering (RE) process is a critical phase in software development,


focusing on gathering, defining, and managing requirements throughout the software life
cycle. It involves a series of well-defined activities to ensure that the final system meets the
needs of stakeholders. The various activities in the Requirements Engineering process are
as follows:

1. Requirement Elicitation:

• Description: This is the process of gathering requirements from stakeholders,


including users, clients, and other relevant parties. It involves understanding their
needs, expectations, and constraints for the system.
• Methods Used: Interviews, surveys, workshops, document analysis, use cases, user
stories, and observations.
• Goal: To collect a comprehensive set of requirements, both functional and non-
functional, for the system.

2. Requirement Analysis:

• Description: Once the requirements are gathered, they need to be analyzed to ensure
they are clear, consistent, and feasible. This activity focuses on understanding the
problem domain and identifying any ambiguities, contradictions, or conflicts in the
requirements.
• Methods Used: Modeling techniques (e.g., data flow diagrams, UML diagrams),
prototyping, and stakeholder validation.
• Goal: To refine the requirements, resolve conflicts, and identify any gaps or missing
requirements.

3. Requirement Specification:

• Description: In this activity, the requirements are documented formally in a Software


Requirements Specification (SRS) document. The specification defines the system’s
functional and non-functional requirements, along with any constraints, assumptions,
and dependencies.
• Methods Used: Structured formats such as IEEE SRS standards, natural language
descriptions, and formal specification languages.
• Goal: To produce a clear, detailed, and unambiguous document that can be used as
the basis for system design, development, and testing.

4. Requirement Validation:

• Description: This activity ensures that the requirements are correct, complete, and
align with stakeholder expectations. It involves reviewing the SRS with stakeholders
to verify that the documented requirements reflect their needs.
• Methods Used: Reviews, walkthroughs, prototyping, and acceptance testing.
• Goal: To validate the requirements and make sure they are achievable and correct,
thus avoiding costly errors in later phases.

5. Requirement Management:

• Description: This ongoing activity involves tracking and managing changes to the
requirements as the project progresses. Requirements often change due to evolving
business needs, technical constraints, or stakeholder feedback.
• Methods Used: Configuration management tools, traceability matrices, and version
control systems.
• Goal: To maintain the consistency and integrity of the requirements throughout the
development process and ensure that changes are well-documented and
communicated.

6. Prioritization:

• Description: Not all requirements are equally important. This activity involves
prioritizing the requirements based on factors such as business value, technical
feasibility, and urgency.
• Methods Used: MoSCoW (Must have, Should have, Could have, Won’t have),
voting, or cost-benefit analysis.
• Goal: To identify the most critical requirements that should be implemented first,
ensuring that the most important system features are delivered early.

7. Traceability:

• Description: Traceability involves establishing links between requirements and other


software artifacts, such as design documents, test cases, and source code. This activity
ensures that each requirement is addressed at each stage of the software development
lifecycle.
• Methods Used: Traceability matrices, tools like JIRA or DOORS.
• Goal: To ensure that every requirement is accounted for in the design,
implementation, and testing phases, and to facilitate impact analysis if a requirement
changes.

Summary of Activities in Requirements Engineering:

• Elicitation: Gathering requirements from stakeholders.


• Analysis: Refining and resolving conflicts in requirements.
• Specification: Documenting the requirements in a formal specification.
• Validation: Ensuring that the requirements meet stakeholder needs.
• Management: Tracking and managing changes to the requirements.
• Prioritization: Determining which requirements are the most important.
• Traceability: Ensuring that every requirement is traced throughout the development
process.

These activities are iterative and may overlap, requiring continuous interaction with
stakeholders to ensure that the final system meets the desired functionality and quality.

Outline the concept of traceability matrix and Requirements management planning. 7


marks

1. Traceability Matrix:

A Traceability Matrix is a tool used to ensure that all requirements are covered and traced
throughout the software development lifecycle. It maps each requirement to its corresponding
design, development, and testing elements, ensuring that no requirement is overlooked and
that the system adheres to the original specifications.

Concept and Purpose:

• Definition: A traceability matrix is a document that links requirements to the


deliverables, such as design, code, and tests, ensuring that every requirement is
addressed at every phase of the development.
• Purpose: It is used to:
o Ensure full coverage: Guarantees that each requirement is implemented and
tested.
o Track changes: Helps in tracking any changes to the requirements and their
impact on the project.
o Facilitate impact analysis: If any requirement changes, the traceability matrix
helps in identifying the affected components (design, code, tests).
o Improve verification and validation: Helps verify that the system meets all
requirements and validate the system’s functionality during testing.

Structure:

A traceability matrix typically consists of:

• Requirement ID: A unique identifier for each requirement.


• Requirement Description: A short description of the requirement.
• Design Elements: References to design documents or components that satisfy the
requirement.
• Test Cases: Corresponding test cases that ensure the requirement is validated.
• Status: Current status of the requirement (e.g., implemented, tested, pending).

Example:
Requirement Requirement Test Case
Design Element Status
ID Description ID

UI Design, Auth
REQ-01 User login functionality TC-01 Passed
Module

REQ-02 Data export feature Export Module TC-02 Pending

2. Requirements Management Planning:

Requirements Management Planning is the process of establishing a plan to manage, track,


and control the requirements throughout the project lifecycle. This process ensures that the
requirements are properly handled, changes are managed, and the project meets the desired
goals.
Concept and Purpose:

• Definition: It involves defining strategies, processes, and tools for managing


requirements. This includes ensuring that requirements are captured, controlled, and
communicated throughout the project.
• Purpose:
o Ensure consistency: Prevents inconsistent or conflicting requirements by
providing a structured approach for handling requirements.
o Facilitate changes: Establishes a process for managing changes to
requirements, including assessing the impact of changes on the project.
o Track progress: Ensures that requirements are implemented on time and that
no requirement is neglected.
o Maintain traceability: Ensures that requirements can be traced through the
development process, from design to testing.

Key Activities in Requirements Management Planning:

1. Requirements Identification:
o Identifying all the stakeholders, gathering their needs, and specifying the
requirements clearly.
2. Change Management:
o Establishing procedures for handling changes to the requirements. This
includes tracking changes, analyzing their impact, and getting stakeholder
approval.
3. Version Control:
o Maintaining versions of the requirements documents to track revisions and
updates, ensuring that the latest version is always used.
4. Prioritization:
o Prioritizing the requirements based on their importance, business value, and
implementation cost. This ensures that the most critical requirements are
addressed first.
5. Requirement Traceability:
o Establishing a process for linking requirements to the various stages of the
project (design, development, testing). This allows for easy tracking of how
each requirement is being fulfilled.
6. Verification and Validation:
o Setting up processes to ensure that each requirement is verified (has been
implemented correctly) and validated (meets stakeholder needs).

Tools for Requirements Management:

• Software tools: Requirements management tools such as JIRA, DOORS, and Helix
RM can automate and streamline the process of tracking and managing requirements.

Example of Requirements Management:

For a project, the requirements management plan may include:

• A strategy for gathering requirements through interviews with stakeholders.


• A change control process where changes to requirements must be formally requested,
evaluated for impact, and approved by the change control board.
• A process for versioning the requirements specification document to keep track of
revisions.

Use Cases in Software Engineering:

A Use Case is a description of a system’s behavior in response to a request from an external


actor (such as a user or another system). It defines the interactions between the system and
the external entities in order to achieve a specific goal. Use cases help capture the functional
requirements of a system by outlining the expected user actions, the system's responses, and
the expected outcomes.

Key Elements of a Use Case:

1. Actor: An entity that interacts with the system (e.g., a user or another system).
2. Use Case: A specific interaction between the actor and the system that results in a
specific goal or outcome.
3. System Boundary: The boundary that separates the system from the external
environment, defining what is inside and outside the system.
4. Relationships:
o Association: The connection between actors and use cases.
o Include: A use case that is always performed as part of another use case.
o Extend: A use case that optionally extends the behavior of another use case.

ATM Use Case Diagram:

In the context of an ATM system, the use case diagram illustrates how a user interacts with
the system to perform various banking operations such as withdrawing money, checking
account balance, etc. Below is a breakdown of actors and use cases followed by the
corresponding use case diagram.

Actors in the ATM System:

• Customer: The user who interacts with the ATM to perform various banking tasks.
• Bank Server: The backend system that communicates with the ATM to process
requests and validate transactions.
• ATM: The physical machine that facilitates customer interaction and processing.

Use Cases in the ATM System:

1. Authenticate User: The customer is required to enter a PIN to authenticate their


identity.
2. Withdraw Cash: The customer can withdraw money from their account.
3. Check Account Balance: The customer can view the current balance in their account.
4. Deposit Funds: The customer can deposit cash or checks into their account.
5. Print Receipt: The ATM system generates a receipt for each transaction.
6. Exit Session: The customer can finish their session and exit the ATM system.

**Use Case Diagram for ATM:


**(Refer the bottom of this document for actual use case diagram)

+--------------------------------------------------+
| ATM System |
| +--------------------------------------------+ |
| | Customer | |
| | (Actor) | |
| | +------------------------------------+ | |
| | | 1. Authenticate User |<------|
| | | 2. Withdraw Cash |<------|
| | | 3. Check Account Balance |<------|
| | | 4. Deposit Funds |<------|
| | | 5. Print Receipt |<------|
| | | 6. Exit Session |<------|
| | +------------------------------------+ | |
|| | |
| +--------------------------------------------+ |
| +--------------------------------------------+ |
| | Bank Server | |
| | (Actor) | |
| | +------------------------------------+ | |
| | | 7. Verify Transaction |<------|
| | +------------------------------------+ | |
| +--------------------------------------------+ |
+--------------------------------------------------+

Explanation of Use Case Diagram:

1. Customer (Actor) interacts with the ATM system and can:


o Authenticate User: The system verifies the customer’s identity by checking
the entered PIN.
o Withdraw Cash: The customer can request a certain amount of money to be
withdrawn from their account.
o Check Account Balance: The customer can view their available balance.
o Deposit Funds: The customer deposits money into their account.
o Print Receipt: After performing any transaction, the system provides a
receipt.
o Exit Session: The customer logs out and finishes their transaction session.
2. Bank Server (Actor) handles:
o Verify Transaction: After the customer initiates a transaction (such as
withdrawing cash), the bank server checks whether the transaction is valid and
whether funds are available.

Relationships:

• The Customer has associations (interactions) with all the use cases, indicating the
customer can perform these actions.
• The Bank Server is associated with the Verify Transaction use case, as it is
responsible for validating the customer’s transaction requests.
This use case diagram helps in understanding the core functionalities that the ATM system
must support and the interactions between the system and external entities.

Explain Personas, Scenarios and Feature identification. 7 marks

Personas, Scenarios, and Feature Identification

In software engineering and product design, creating a user-centered design is crucial to


ensure that the system meets the needs of the users. The concepts of Personas, Scenarios,
and Feature Identification are integral to this process, and they help in clearly understanding
and defining user requirements and translating them into system features.

1. Personas:

Personas are fictional, generalized representations of real users. They help designers,
developers, and stakeholders understand the different types of users that will interact with a
system, ensuring that the product is designed with the user’s needs in mind.

Purpose of Personas:

• To create empathy and understanding for users and their needs.


• To guide design decisions by focusing on the characteristics and behaviors of the
target users.
• To prioritize features and functions based on real-world user needs.

Components of a Persona:

• Name: A fictional name to humanize the persona.


• Demographics: Age, gender, education, and occupation.
• Background: Information about the persona’s lifestyle, job, experience, and other
relevant details.
• Goals: What the persona is trying to achieve with the system.
• Challenges: Problems or barriers the persona faces when interacting with the system.
• Behavior Patterns: How the persona behaves while using the system (e.g.,
preferences, technology skills, etc.).
• Motivations: Why the persona uses the system and what drives them to interact with
it.

Example:

• Persona Name: John, 35, Financial Advisor


o Goal: Wants an intuitive interface to quickly check and update client
portfolios.
o Challenge: Finds current tools too complex and time-consuming.
2. Scenarios:

Scenarios describe specific situations or contexts in which the user will interact with the
system. They help demonstrate how a persona will use the system to achieve their goals in a
particular environment.

Purpose of Scenarios:

• To understand how users will engage with the system in real-life contexts.
• To define a step-by-step interaction flow based on the personas’ goals and challenges.
• To identify possible issues and refine the system’s design by understanding the
context in which it will be used.

Components of a Scenario:

• Context: The situation or environment in which the user is operating.


• Objective: The specific goal the persona wants to achieve.
• Steps: The sequence of actions the user will take to accomplish the goal.
• Outcome: The result or resolution of the scenario.

Example:

• Scenario: John, the financial advisor, is in his office, reviewing a client's portfolio.
He logs into the system to check for any recent stock changes and update the
portfolio.
o Step 1: John opens the portfolio management tool.
o Step 2: He selects the client’s name from the list.
o Step 3: He reviews stock performance and makes adjustments.
o Outcome: John successfully updates the portfolio and logs out.

3. Feature Identification:

Feature Identification is the process of determining which functionalities or features the


system should have in order to meet the user’s needs, goals, and requirements. It directly
arises from the insights gained from personas and scenarios.

Purpose of Feature Identification:

• To translate user needs and behaviors (as defined in personas and scenarios) into
actionable system features.
• To prioritize features based on their importance to the user and business.
• To ensure that all critical functionalities required by users are included in the system.

Steps in Feature Identification:

1. Identify User Needs: Analyze the personas to understand their needs and pain points.
2. Define Key Goals: Determine the major goals that users want to achieve.
3. Map Functional Requirements: Based on scenarios, identify the functionalities that
will help users meet their goals.
4. Prioritize Features: Rank the features based on their importance to the user, business
needs, and technical feasibility.

Example:

For John (the financial advisor), after reviewing the scenarios, some potential features might
be:

• Quick Portfolio Summary: A feature that allows John to quickly access an overview
of his client's portfolio.
• Real-time Stock Updates: A feature that provides real-time updates on stock prices.
• Client Profile Management: A feature for managing and storing client information
and preferences.

Summary of Key Concepts:

1. Personas:
o Definition: Fictional characters representing real users to help understand
their goals, needs, and challenges.
o Purpose: Provides insights into user behavior and helps in making user-
centered design decisions.
2. Scenarios:
o Definition: Descriptions of specific user interactions with the system within a
particular context.
o Purpose: Helps in visualizing how the system will be used in real-world
situations, identifying potential issues, and refining design.
3. Feature Identification:
o Definition: The process of identifying and defining the functionalities the
system must provide based on the personas’ needs and the scenarios.
o Purpose: Ensures the system has all the necessary features to meet user needs
and achieve business goals.

By using personas, scenarios, and feature identification together, designers and developers
can ensure that the system is designed to meet the real needs of users, leading to a more
successful and user-friendly product.

December 2023

Mention any three reasons to justify software architecture is important. 3 marks

Here are three reasons why software architecture is important:

1. Establishes a Foundation for System Structure:


o Software architecture defines the high-level structure of a system, including its
components and their interactions. This clear structure helps ensure that the
system is scalable, maintainable, and adaptable to future changes.
2. Facilitates Communication Among Stakeholders:
o A well-defined software architecture serves as a blueprint for developers,
designers, managers, and other stakeholders. It ensures that all parties have a
common understanding of the system’s design, which improves collaboration
and reduces misunderstandings.
3. Supports Non-Functional Requirements:
o Software architecture plays a critical role in addressing non-functional
requirements such as performance, security, and scalability. Proper
architectural decisions can optimize the system for factors like load handling,
data protection, and future growth.

List out the generic activities needed in requirement engineering process. 3 marks

The generic activities in the requirements engineering process are:

1. Requirements Elicitation:
o Gathering requirements from stakeholders through interviews, surveys,
workshops, and other techniques to understand their needs and expectations.
2. Requirements Analysis:
o Analyzing the gathered requirements to identify inconsistencies, conflicts, and
ambiguities, and ensuring that they align with the project goals.
3. Requirements Specification:
o Documenting the validated and prioritized requirements in a clear, detailed,
and organized manner, often in the form of a Software Requirements
Specification (SRS) document.
4. Requirements Validation:
o Ensuring that the requirements are complete, feasible, and correct by
reviewing them with stakeholders and verifying their alignment with business
objectives.
5. Requirements Management:
o Managing changes to the requirements throughout the project lifecycle,
including tracking, updating, and ensuring that modifications are
communicated and implemented correctly.

Explain functional and non-functional requirements in software engineering. 7 marks

Functional and Non-Functional Requirements in Software Engineering

In software engineering, requirements define what a software system should do and how it
should perform. These requirements are typically classified into two categories: Functional
Requirements and Non-Functional Requirements. Both play vital roles in the development
of software systems.

1. Functional Requirements:

Functional requirements describe what the system should do. They specify the core
functionalities, features, and behaviors that the system must exhibit when it is in use. These
requirements are directly related to the tasks the system needs to accomplish in order to meet
the users' needs.

Characteristics:

• Actions and Features: They describe the system's specific behavior, such as input
processing, data handling, user interactions, and outputs.
• User Interaction: They define how users interact with the system, including user
interfaces and workflow.
• Business Logic: These requirements define the logic that drives the business
processes and operations of the system.

Examples:

• The system must allow users to log in using a username and password.
• The application must process payments through credit cards and generate receipts.
• The system should send an email notification when an order is shipped.

Importance:

• Functional requirements ensure that the software can perform the required tasks that
meet the stakeholders' needs.
• They serve as the foundation for developing use cases, test cases, and system design.

2. Non-Functional Requirements:

Non-functional requirements describe how the system performs its tasks, rather than
specifying the tasks themselves. They set the constraints or quality attributes the system must
satisfy, such as performance, security, reliability, and usability.

Characteristics:

• Quality Attributes: Non-functional requirements focus on how well the system


functions, such as speed, responsiveness, and availability.
• System Constraints: They may define operational conditions, such as hardware,
software, or network constraints.
• Performance and Reliability: These requirements help in defining expectations for
performance metrics (e.g., response time, throughput) and system uptime.

Examples:

• The system must be capable of handling 1000 concurrent users.


• The system should respond to user requests within 2 seconds.
• Data must be encrypted to ensure security and compliance with privacy laws.
• The system should ensure 99.9% uptime, meaning no more than 8 hours of
downtime per year.
Importance:

• Non-functional requirements influence the user experience, system performance, and


scalability.
• They ensure that the system is not only functional but also efficient, secure, reliable,
and usable in real-world conditions.
• These requirements help in making design decisions and guide performance testing.

Comparison Between Functional and Non-Functional Requirements:

Aspect Functional Requirements Non-Functional Requirements

Describes what the system Describes how well the system should
Definition
should do. perform.

Core features and behaviors of Quality attributes (performance, security,


Focus
the system. etc.).

User authentication, payment Response time, reliability, scalability,


Examples
processing, reporting. security.

Can be verified through Can be verified through non-functional


Verification
functional testing. testing like performance testing.

Directly impacts system Affects system efficiency, usability, and


Impact
functionalities. performance.

What is a software component? Explain the process of designing class-based


components. 7 marks

Software Component and Class-Based Component Design

A software component is a modular, self-contained unit of functionality that can be reused


across different parts of a system or even in different systems. It typically encapsulates a set
of related functionalities, data, or logic that can interact with other components through well-
defined interfaces. Components are key building blocks in modern software development,
allowing for better modularity, maintainability, and scalability.

1. What is a Software Component?

A software component is:

• Self-contained: It encapsulates specific functionality and can function independently


of other components.
• Reusable: Once designed, it can be reused in various contexts without requiring
significant changes.
• Interoperable: Components interact with each other through defined interfaces,
ensuring modularity and reducing dependencies.
• Configurable: Many components can be configured to meet specific requirements
without altering their internal logic.
• Composed of Data and Behavior: A component encapsulates both data (attributes)
and behavior (methods or functions).

Examples of Software Components:

• Database Components: Handle operations such as query execution, database


connection, and data retrieval.
• Authentication Components: Manage user authentication and authorization, like
login and role-based access.
• Payment Processing Components: Handle payment operations, including
communication with external payment gateways.

2. Process of Designing Class-Based Components

Class-based components are designed using object-oriented principles, where the core
functionality is encapsulated within a class. The design process for class-based components
involves multiple steps, from identifying requirements to implementing and testing the class.

Key Steps in Designing Class-Based Components:

1. Identify Requirements and Responsibilities:


o Begin by understanding the system’s requirements and the role of the
component within the system.
o Responsibilities: Define what responsibilities the class will have (e.g., data
processing, input validation).
o Interfaces: Specify how the class will interact with other components (e.g.,
through method calls, events, or APIs).
2. Define the Class Interface:
o A well-designed class has a clear, intuitive interface. This interface defines the
operations the class provides and how it can be accessed by other components
or systems.
o The interface typically includes public methods that can be called from
outside the class.
o Example: A UserAuthentication class might provide methods like login(),
logout(), and isAuthenticated().
3. Identify the Data Structure and Attributes:
o Define the attributes (or properties) that represent the internal state of the
class.
o Consider the data types of the attributes, whether they are primitive data types
(e.g., integer, string) or more complex types (e.g., other objects or collections).
o Example: In the UserAuthentication class, attributes might include username,
passwordHash, and isLoggedIn.
4. Design Methods and Operations:
o Design the methods (or functions) that encapsulate the behavior of the class.
o Methods should implement the logic required to meet the class's
responsibilities, and they should follow principles such as encapsulation and
abstraction.
o Method Signature: Define the input parameters, return type, and functionality
for each method.
o Example: A method like login() might take a username and password as
input, check them against stored credentials, and return a success or failure
message.
5. Ensure Proper Encapsulation:
o Keep class attributes private or protected to restrict access from outside the
class. Use getter and setter methods to expose only necessary parts of the
internal state.
o Encapsulation ensures that the class is responsible for managing its internal
state and logic, protecting it from unauthorized access and modification.
o Example: Use setPassword() and getPassword() methods instead of allowing
direct access to the password attribute.
6. Consider Reusability and Extensibility:
o Design the class to be easily reusable in different contexts. This includes
making the class flexible by ensuring it can be extended with new features
without modifying the existing code.
o Follow principles such as inheritance and polymorphism to enable extending
functionality and providing different implementations when needed.
o Example: A PaymentProcessor class might allow different types of payment
methods (credit card, PayPal) through subclassing.
7. Implementation and Testing:
o After the design, implement the class in the chosen programming language,
ensuring that it adheres to the design principles.
o Write unit tests for the class methods to ensure correctness and reliability.
The tests should cover different scenarios and edge cases to validate the class
behavior.
o Example: Test the login() method with valid and invalid credentials to ensure
proper authentication.
8. Document the Class:
o Document the class’s purpose, methods, attributes, and expected behavior.
Well-documented code improves maintainability and helps other developers
understand how to use the component.

Example of Class-Based Component Design

Here’s an example of a BankAccount class that could be part of a larger financial application.

python
Copy code
class BankAccount:
def __init__(self, account_holder, balance=0.0):
self.__account_holder = account_holder # Private attribute
self.__balance = balance # Private attribute

def deposit(self, amount):


"""Deposit money into the account"""
if amount > 0:
self.__balance += amount
return f"Deposited {amount}. New balance: {self.__balance}"
return "Deposit amount must be positive."

def withdraw(self, amount):


"""Withdraw money from the account"""
if amount > 0 and amount <= self.__balance:
self.__balance -= amount
return f"Withdrew {amount}. New balance: {self.__balance}"
return "Invalid withdrawal amount."

def get_balance(self):
"""Get current balance"""
return self.__balance

def get_account_holder(self):
"""Get account holder's name"""
return self.__account_holder

• Attributes: The class has two private attributes: account_holder and balance.
• Methods: The methods define operations like deposit(), withdraw(), and
get_balance(), which are essential functionalities of a bank account.
• Encapsulation: The attributes are encapsulated and accessed through public methods.

Explain the different stages in requirement elicitation. 7 marks

Stages in Requirement Elicitation

Requirement elicitation is the process of gathering and identifying the needs and expectations
of stakeholders for a software system. It involves understanding what the stakeholders want
from the system and ensuring that the gathered requirements are complete, clear, and feasible.
The process of requirement elicitation involves several stages, each focusing on specific
activities to gather and refine the requirements.

Here’s an overview of the different stages involved in requirement elicitation:

1. Planning the Elicitation Process:

Before starting the actual gathering of requirements, the team must plan the elicitation
process. This stage involves:
• Identifying Stakeholders: Identify all the key stakeholders (e.g., end-users,
customers, project sponsors, system administrators) who have an interest in the
system and will provide input regarding requirements.
• Selecting Elicitation Techniques: Choose appropriate techniques for gathering
requirements based on the nature of the project. Techniques can include interviews,
surveys, brainstorming, document analysis, and observations.
• Setting Elicitation Objectives: Clearly define the goals for the elicitation process.
What specific information needs to be gathered, and what are the desired outcomes?
• Scheduling Elicitation Sessions: Organize the necessary resources, allocate time for
interviews or workshops, and coordinate the efforts of team members.

2. Requirements Discovery:

In this stage, the focus is on gathering all potential requirements from the identified
stakeholders. It includes:

• Interviews: Conduct one-on-one or group interviews with stakeholders to ask open-


ended questions about their needs and expectations.
• Workshops: Hold collaborative sessions with various stakeholders to discuss and
brainstorm requirements.
• Surveys and Questionnaires: Distribute surveys or questionnaires to gather input
from a wider group of stakeholders.
• Document Analysis: Analyze existing documentation such as previous project
documents, standards, or business process descriptions to uncover implicit
requirements.
• Observation: Observe users in their natural work environment to understand their
tasks and workflows.

During this phase, it’s important to listen actively and capture all relevant details.
Stakeholders may express needs that are not initially apparent, so open-ended questions help
uncover hidden requirements.

3. Requirements Classification and Prioritization:

Once the requirements are gathered, they need to be organized, classified, and prioritized:

• Classification: Group the requirements into categories, such as functional, non-


functional, system constraints, and interface requirements. This helps organize the
collected data and ensures all aspects are covered.
• Prioritization: Not all requirements are of equal importance. Prioritize the
requirements based on factors such as:
o Stakeholder importance: How critical is this requirement for the
stakeholders?
o Business value: What value does this requirement bring to the business or
project?
o Feasibility: How realistic is the requirement in terms of time, cost, and
technical feasibility?
• Tools for Prioritization: Techniques like MoSCoW (Must have, Should have, Could
have, Won't have), or the Kano model (basic, performance, and delight factors) can
be used to rank the requirements.

4. Requirements Analysis:

In this stage, the team takes the gathered requirements and begins to analyze them to ensure
they are clear, complete, and feasible:

• Analysis of Ambiguities: Identify any unclear or ambiguous requirements and seek


clarification from stakeholders.
• Conflict Resolution: Address any conflicting requirements between stakeholders or
between the requirements and system constraints.
• Feasibility Study: Assess whether the requirements are feasible within the scope,
budget, time, and technical capabilities of the project.
• Modeling: Create visual models like use cases, data flow diagrams (DFDs), or
prototypes to better understand and communicate the system’s behavior and
interactions.

The goal of this stage is to refine the requirements into clear, precise, and actionable items.

5. Requirement Validation:

Validation ensures that the requirements collected are correct, complete, and aligned with
stakeholder needs:

• Review Sessions: Conduct reviews of the gathered and analyzed requirements with
stakeholders to ensure the requirements are correct and relevant.
• Prototyping: Develop a prototype or mockup of the system to demonstrate the design
and gather feedback on how well the requirements are reflected in the system.
• Conflict Resolution: Resolve any inconsistencies or disagreements between
stakeholders regarding the requirements.
• Confirmation: Ensure that the requirements meet the stakeholder’s needs and align
with business objectives.

The objective of the validation stage is to confirm that the right requirements have been
gathered and that they accurately reflect stakeholder needs.

6. Requirement Documentation:
Once requirements are validated, the next step is documenting them in a clear and structured
manner. This documentation is crucial for providing a reference point for developers, testers,
and other stakeholders. It involves:

• SRS (Software Requirement Specification): Document the functional and non-


functional requirements in a standard format, providing a detailed description of the
system to be developed.
• Traceability: Ensure that each requirement is traceable to the relevant stakeholder
and business goal.
• Versioning: Keep track of changes to requirements over time to maintain version
control and ensure the most current set of requirements is being used.

7. Continuous Elicitation and Refinement:

Requirement elicitation is not a one-time activity. As the project progresses, new


requirements may emerge or existing ones may need to be refined due to changes in
technology, business needs, or feedback:

• Iterative Elicitation: Requirements may need to be revisited throughout the project


lifecycle. New insights from prototyping or changes in business strategy may
necessitate adjustments.
• Change Management: A proper change management process should be in place to
handle modifications to the requirements, ensuring that all stakeholders are informed
of changes and that these changes are tracked and documented.

Define Personas in software process. Also explain the different aspects of persona. 7
marks

Personas in the Software Process

In software engineering, personas are fictional characters that represent typical users of a
system, designed to help the development team understand the needs, behaviors, and goals of
the target audience. Personas are used to guide decisions throughout the design and
development process by making the user experience more relatable and ensuring that the
system meets the needs of its end-users.

By creating personas, designers and developers can visualize the various user types and align
the software with their expectations, making it more user-centric. These personas help ensure
that the final product is tailored to the actual users' needs and behaviors.

Different Aspects of a Persona

Personas are typically based on real-world data gathered from users and represent different
segments of the target audience. The various aspects of a persona include:
1. Demographics:

• Age: The persona's age can influence design decisions related to UI, interaction
patterns, and user experience.
• Gender: Gender can affect preferences for language, colors, and content design.
• Occupation: A persona’s job and responsibilities shape their interaction with the
system, as different roles will have different goals and needs.
• Education: The level of education can determine the complexity of language, tools,
and concepts used within the application.
• Location: Geographical location may influence language preferences, cultural
context, and regional functionalities.

2. Goals and Objectives:

• Personas have specific goals that they want to achieve by using the software or
system. These goals are central to guiding design decisions.
• Functional goals: What tasks the user wants to perform with the system (e.g., making
purchases, finding information).
• Personal goals: These relate to personal desires or motivations that drive how the
persona interacts with the system (e.g., to be more productive, improve work-life
balance).

3. Behavioural Characteristics:

• This aspect defines how the persona behaves in the context of using the system. It
includes their technology comfort level, decision-making patterns, and preferred
methods of interaction.
• Tech-savvy or novice: A persona may be highly experienced with technology or a
beginner, which impacts their user interface (UI) preferences and system expectations.
• Time management: Some personas may prioritize efficiency, while others may take
more time to explore.
• Motivations: Why does the persona use the product? Understanding their motivations
helps design features that will appeal to them (e.g., saving time, learning something
new, staying connected).

4. Frustrations and Pain Points:

• Identifying the frustrations and challenges that a persona faces helps the development
team design solutions to address these issues. These might include past experiences
with similar products, gaps in existing solutions, or usability problems.
• For instance, a persona might find an existing system difficult to navigate or may
have limited access to the necessary technology.
5. Technology Usage:

• Understanding what technologies or devices a persona typically uses is crucial to


determining the design's usability and feasibility. This could include details such as:
o Device preferences: Does the persona primarily use a smartphone, tablet, or
desktop?
o Platform familiarity: Is the persona familiar with a specific operating system
(Windows, macOS, Linux) or a particular software ecosystem (iOS, Android)?
o Technology proficiency: Are they experienced in using advanced tools or do
they need simpler, more intuitive interfaces?

6. Scenario and Context of Use:

• This defines the situations in which the persona interacts with the software,
considering the broader context of use.
• Environmental factors: Where will the persona typically use the system (e.g., at
home, in an office, on the go)?
• Use scenarios: What problems are they trying to solve, and what features will they
use? This provides real-life situations that help visualize the user’s needs and the tasks
they are trying to accomplish.
• Frequency of use: Is the persona a frequent user or an occasional user, and does their
behavior change accordingly?

7. User Quotes or Stories:

• Often, personas include direct quotes or anecdotes that represent the persona’s voice.
These stories help the development team connect with the persona emotionally and
better understand their mindset.
• For example, a persona might say, “I’m always in a rush and need my tools to be
simple and fast” or “I want to use this app while on my commute to save time.”

Example of a Persona:

Persona: "Tech-Savvy Sara"

• Demographics:
o Age: 28
o Occupation: Marketing Manager at a tech startup
o Location: Urban area (New York City)
o Education: Bachelor's degree in Marketing
• Goals:
o Wants to quickly generate reports and analyze data for marketing campaigns.
o Seeks a platform with both mobile and desktop compatibility to work on the
go.
• Behavioral Characteristics:
o Comfortable with technology, often using multiple devices at once.
o Prefers efficient, fast-loading applications.
• Frustrations:
o Dislikes slow, complex systems that require a steep learning curve.
o Finds it frustrating when apps are not synchronized across devices.
• Technology Usage:
o Frequently uses smartphones (iPhone), laptops (MacBook), and cloud-based
services.
• Scenario:
o Needs to create a report during a train commute, often working with minimal
connectivity.

**Use case diagram of Bank ATM

(Refer some websites to get more UML diagrams)

You might also like