unit-2 software notes
unit-2 software notes
TOPIC:Domain Analysis
Domain Analysis is the process of studying and defining the requirements, structures,
and features of a particular domain (such as finance, healthcare, e-commerce, etc.) to
build reusable and robust software solutions. By identifying common concepts,
terminology, and processes, domain analysis enables software engineers to capture the
essential characteristics of a domain, providing a clear and consistent framework for
developing applications that operate in that domain.
In essence, domain analysis addresses the question: What are the standard
requirements, functionalities, and data models required across similar applications
within a particular domain?
1. Standardization: Define a standardized terminology and set of concepts for the domain to
avoid misinterpretation or redundancy.
2. Reusability: Identify reusable components, patterns, and modules that can be used across
multiple applications within the same domain.
3. Efficiency: Streamline the development process by leveraging existing domain knowledge,
reducing redundant efforts.
4. Consistency: Ensure a cohesive understanding and design of the domain, making it easier to
maintain, extend, or integrate future applications.
Domain Analysis involves several key steps, each of which plays a role in creating a
detailed model of the domain:
1. Domain Scoping
Define the boundaries and limitations of the domain to focus on relevant aspects.
Determine the scope by identifying which subdomains, processes, and features are essential
to the applications in that domain.
2. Domain Modeling
Construct a domain model that captures the domain’s key concepts, relationships, and
behaviors.
Create class diagrams, entity-relationship diagrams (ERDs), and other UML diagrams to
represent the relationships and structure of domain entities.
The domain model acts as a blueprint for how objects interact within the software.
Determine the shared characteristics (commonalities) that are consistent across all
applications in the domain.
Identify the aspects of the domain that can vary (variabilities) across different
implementations, such as optional features or customization points.
Based on the domain analysis, design reusable software components such as classes,
modules, and libraries.
These components encapsulate the commonalities identified in the domain, enabling
developers to reuse them across multiple projects.
Document the findings, models, and reusable components generated during domain analysis
to facilitate consistent understanding and usage.
Effective documentation ensures that other teams or future projects can leverage the
domain analysis without repeating the research phase.
The outputs of domain analysis include various artifacts that capture the domain’s
characteristics, which can be reused in future projects. Key outputs include:
Use Cases and Scenarios: Typical interactions and workflows within the domain that guide
software design.
Several techniques are used in domain analysis to ensure that the domain’s nuances
are accurately captured:
1. Knowledge Elicitation: Gather knowledge from domain experts, stakeholders, and end-users
through interviews, workshops, and brainstorming sessions.
2. Document Analysis: Review existing documentation, guidelines, standards, and system
requirements to understand the domain’s foundational elements.
3. Scenario Analysis: Develop real-world scenarios to understand how different components
within the domain interact and evolve over time.
4. Data Modeling: Use ERDs, class diagrams, and other UML tools to capture the domain’s data
structure and relationships.
In the healthcare domain, domain analysis plays a critical role in designing software
systems for hospitals, clinics, and insurance providers. Here’s how domain analysis
might unfold:
Domain Scoping: Define the healthcare domain scope to include patient management,
billing, scheduling, and medical records, while excluding pharmacy inventory.
Domain Modeling: Develop a domain model capturing key entities like Patient,
Doctor, Appointment, and MedicalRecord. Use UML class diagrams to represent
these relationships and interactions.
Commonalities: All healthcare systems require a Patient record, Doctor information, and
Appointment scheduling.
Variabilities: Some systems may require specialized modules, such as radiology or pharmacy
integration, depending on the organization’s specific needs.
1.
Conclusion
Domain Analysis is essential for creating software that aligns with the specific needs
and characteristics of a particular industry. By identifying reusable components,
standardizing terminology, and capturing domain knowledge, software engineers can
build applications that are consistent, flexible, and maintainable across similar
projects. This process also enhances collaboration among developers, as the shared
domain knowledge facilitates a common understanding and approach to software
development within that domain.
In software engineering, the Problem Definition and Scope are two crucial
components in the early phases of requirement gathering. They help to define what
the system is meant to achieve and the boundaries within which it will operate. Let's
break each one down with clear explanations and examples.
1. Problem Definition
The Problem Definition involves understanding and articulating the problem that the
software is intended to solve. It answers the question: "What is the issue or need that
requires a solution?" The purpose is to identify the underlying issues, challenges, or
opportunities that the system must address.
Understanding the Problem Domain: This involves analyzing the context in which the
software will be used, understanding the stakeholders' needs, and determining what the
system should accomplish.
Identifying Stakeholders: Who is impacted by the problem? Stakeholders can be customers,
end users, businesses, or even regulatory authorities.
Analyzing Current Systems (if any): If there’s an existing system, the problem definition
often includes identifying what’s wrong with it or what improvements are necessary.
2. Scope
The Scope defines the boundaries of the project. It outlines what the system will and
will not do, specifying the functional and non-functional requirements, as well as
constraints. The scope helps to prevent scope creep (uncontrolled changes or
continuous growth in a project’s scope).
Functional Scope: This defines what the system should do—its features, capabilities, and
behaviors.
Non-functional Scope: This outlines the system's quality attributes such as performance,
security, usability, and reliability.
Exclusions: It’s just as important to specify what the system will not do to avoid confusion
later.
Constraints: These include limitations such as budget, technology, time, or regulatory
requirements.
Example of Scope:
For the hospital’s EHR system, the scope might look like this:
Functional Scope:
Non-functional Scope:
Exclusions:
The system will not handle scheduling of patient appointments (this could be handled by a different
system).
The system will not manage financial billing (again, handled by another system).
Constraints:
The system must be compatible with existing hospital hardware (e.g., computers and tablets used by
medical staff).
Problem Definition helps to understand why the system is needed and what high-level
problems it will solve.
Scope describes what the system will do (and not do) to solve the defined problem, setting
clear boundaries and expectations.
Clear Understanding: Helps stakeholders and developers understand the problem and avoid
miscommunication.
Focus: Ensures the system addresses the core issues and avoids unnecessary features or
functions that could lead to delays and cost overruns.
Success Criteria: Provides a baseline against which the system’s progress and success can be
measured.
Problem Definition:
Customers are finding it difficult to access their bank accounts while on the go.
Customers need a secure, easy-to-use app for checking balances, making transfers, and paying bills
from their smartphones.
Scope:
Functional Scope:
Non-functional Scope:
Exclusions:
The app will not offer investment advice or stock trading (this would be
part of a separate service).
Constraints:
Summary
Problem Definition defines the issue or need that requires a software solution.
Scope establishes the boundaries of the project, detailing what the system will and won’t do,
along with any limitations. Both are essential for ensuring that the system meets the
stakeholders' needs without exceeding time, budget, and resource constraints.
Requirements are classified into different types, based on the nature of what they
describe and their level of detail. Below, we explain the types of requirements in
detail, providing examples and clear explanations.
1. Functional Requirements
Functional requirements specify what the system should do. They describe the
expected behavior or functions that the system must support. These requirements are
usually described in terms of inputs, processes, and outputs.
Key Characteristics:
Login system: "The system must allow users to log in using their username and password."
Order processing: "The system must allow users to place an order for products, add items to
a shopping cart, and proceed to checkout."
Reporting: "The system must generate monthly sales reports that can be exported in PDF
format."
Example Scenario:
Users must be able to create an account, log in, and recover passwords.
Customers can search for products by category or keyword.
Users should be able to add items to their shopping cart and check out using credit card
payments.
2. Non-Functional Requirements
Key Characteristics:
Performance: "The system should handle 1000 simultaneous users without degradation in
performance."
Security: "All user data must be encrypted using AES-256 encryption."
Usability: "The system should be intuitive enough for a novice user to complete a transaction
in under 5 minutes."
Availability: "The system must be available 99.9% of the time."
Example Scenario:
3. User Requirements
User requirements describe the needs and expectations of the system’s users. These
requirements are typically high-level and focus on what the users expect to
accomplish with the system.
Key Characteristics:
Login: "As a user, I should be able to log in to the system using my email and password."
Product Search: "As a user, I should be able to search for products by entering keywords or
categories."
Example Scenario:
"As a customer, I want to view my transaction history so that I can keep track of my
spending."
4. System Requirements
Key Characteristics:
Hardware: "The system must run on a server with at least 8 GB of RAM and a 2.5 GHz
processor."
Software: "The system should be developed using Java 11 and Spring Framework."
Example Scenario:
For the EHR (Electronic Health Record) System, a system requirement could be:
"The system must be built on a multi-tier architecture with separate layers for presentation,
business logic, and database."
5. Interface Requirements
Interface requirements describe how the system will interact with other systems or
components. They specify data formats, protocols, and the flow of information
between systems.
Key Characteristics:
API Integration: "The system must provide a RESTful API to retrieve customer order data."
User Interface: "The system must provide a web-based interface with a navigation menu on
the left side of the page."
Example Scenario:
"The system must integrate with the bank’s existing ATM system using an ISO 8583
standard."
"The mobile app should use OAuth 2.0 to authenticate users with the bank's server."
6. Business Requirements
Business requirements describe the high-level goals and objectives that the system
must meet to support the business needs or strategic objectives. These requirements
often align with the business goals of the organization.
Key Characteristics:
Revenue Generation: "The system should increase online sales by 25% within the first year
of deployment."
Cost Efficiency: "The new system should reduce the time taken to process customer orders
by 30%, lowering operational costs."
Example Scenario:
"The system must improve the customer conversion rate by 10% through a streamlined
checkout process."
7. Regulatory Requirements
Regulatory requirements refer to the standards and legal requirements that the
system must adhere to. These requirements are often mandatory and non-negotiable,
ensuring compliance with industry regulations or laws.
Key Characteristics:
Data Privacy: "The system must comply with GDPR (General Data Protection Regulation) in
the handling of user data."
Accessibility: "The system must meet WCAG 2.1 accessibility standards to ensure it is usable
by people with disabilities."
Example Scenario:
"The system must comply with HIPAA (Health Insurance Portability and Accountability Act) to
ensure patient data is secure and confidential."
Conclusion:
TOPIC:
1. Interviews
Interviews involve direct interaction with stakeholders to gather their input. These can
be structured (with a predefined set of questions), unstructured (open-ended), or semi-
structured (a combination of both).
Advantages:
Time-consuming.
May lead to biased or incomplete information if not managed well.
Example:
For an Online Banking System, a project manager might conduct interviews with:
Customers to understand their needs, such as mobile banking access, security features, and
transaction speed.
Bank employees to gather functional requirements like account management or transaction
processing.
Surveys and questionnaires are useful for collecting data from a large group of people
in a short time. These are typically closed-ended (e.g., multiple-choice) or scaled (e.g.,
Likert scale: strongly agree to strongly disagree) to allow easy data analysis.
Advantages:
Disadvantages:
Example:
For the Online Shopping System, a survey might be sent to users asking questions
such as:
Use cases and user stories are tools used to describe system functionality from the
perspective of end users.
Use Cases: Provide detailed descriptions of how users will interact with the system. Each use
case describes a specific interaction between a user and the system, along with the steps
involved.
User Stories: Short, informal descriptions of a feature told from the perspective of an end
user, typically in the form: "As a [user], I want [goal] so that [reason]."
Advantages:
Helps stakeholders visualize system behavior.
Supports collaboration between technical and non-technical stakeholders.
Disadvantages:
User stories can be too simplistic and may need further elaboration.
Use cases can become overly detailed and complex.
Example:
"As a user, I want to like and comment on posts so that I can engage with my friends."
A use case for the same scenario might describe the steps for a user liking a post, such
as:
4. Brainstorming
Advantages:
Disadvantages:
Example:
For a Mobile Game, a team of game designers and users might brainstorm to come
up with features like levels, player progression, in-app purchases, and game themes.
5. Prototyping
Disadvantages:
Can lead to a focus on immediate, short-term solutions rather than long-term architecture.
Users may expect the prototype to be the final product.
Example:
Advantages:
Disadvantages:
Example:
For a Hospital Management System, observing nurses and doctors during their daily
routines might reveal inefficiencies in patient record management, helping to refine
the system’s design.
7. Document Analysis
Advantages:
Disadvantages:
Historical documents may be outdated or incomplete.
The context may have changed since the document was created.
Example:
For a Government Portal project, document analysis of existing forms, reports, and
user feedback might help identify requirements such as simplifying data submission
processes or improving the accessibility of public services.
Advantages:
Disadvantages:
Example:
For a Payroll System, a JAD session might involve payroll officers, HR staff, IT
developers, and end-users discussing requirements such as salary calculation, tax
deduction rules, and integration with other systems.
9. Storyboarding
Advantages:
Disadvantages:
Example:
For a Movie Streaming App, a storyboard might depict the user journey from
browsing through the app to selecting and watching a movie, helping the team design
a smoother interface.
Advantages:
Disadvantages:
Example:
For a Healthcare Mobile App, a focus group might involve patients, doctors, and
nurses discussing features like appointment scheduling, medication reminders, and
secure messaging.
Conclusion
In software engineering, there are numerous techniques for gathering and analyzing
requirements, each with its own strengths and weaknesses. Often, a combination of
techniques is used to ensure that the requirements are well understood, complete, and
aligned with stakeholders' needs.
The choice of technique depends on factors like the type of project, the stakeholders
involved, and available resources. It's crucial to choose the right methods and actively
engage stakeholders throughout the process to ensure a successful software project.
In software engineering, requirement documents are essential tools that capture and
communicate the needs, expectations, and constraints of the stakeholders for a given
project. These documents serve as the foundation for designing, developing, and
validating the system. However, over time, requirements may evolve due to changing
business needs, market conditions, or unforeseen challenges. Hence, reviewing and
managing changes to these requirements is a critical aspect of the software
development lifecycle.
A requirement document is a formal written record that specifies the functional and
non-functional requirements for a software system. The document serves as a
communication tool between stakeholders (customers, developers, testers, etc.) and
ensures that everyone has a clear understanding of the system's objectives and
constraints.
Describes high-level business objectives and goals the system must achieve.
Focuses on the "why" of the project—why the system is being developed and how it aligns with
business needs.
Example: A bank may produce a BRD stating, "The new online banking platform
should increase customer satisfaction by offering a more intuitive user interface and
reducing transaction time by 30%."
Example:
"The system must allow users to log in with their username and password and must support two-
factor authentication for enhanced security."
Focuses specifically on the system's functions or features—what the system should do from a user
perspective.
Often includes use cases or user stories to describe specific user interactions.
Example: "The system must allow users to reset their password by sending a one-
time link to their registered email address."
Specifies the quality attributes of the system, such as performance, security, scalability, and usability.
Example: "The system should be able to process at least 1000 transactions per
second."
Example:
1. "The system must provide a RESTful API to allow third-party systems to retrieve user
transaction data."
2. Reviewing Requirements
Peer Reviews
Involves team members (developers, analysts, testers) reviewing the requirements for technical
accuracy and completeness.
Example:A developer might point out that the "upload document" requirement is unclear—does it
support multiple file formats or just PDFs?
Walkthroughs
In a walkthrough, the author of the requirements document (usually a business analyst or system
architect) presents the document to stakeholders and walks them through the requirements.
The goal is to get feedback on the document's clarity, completeness, and alignment with business
goals.
Example:
In an E-commerce System, the business analyst might walk through the shopping cart functionalities
with the product owners to ensure all use cases are addressed.
Inspections
1.
A formal review process where a specific team (including an independent moderator) systematically
checks the requirements document for defects, ambiguities, or inconsistencies.Often includes a
checklist of items to review.
Prototyping
Creating prototypes (mockups or wireframes) to visualize and simulate the requirements in action.
This helps in identifying potential usability issues or misalignments with user needs.
Example: For a Mobile Banking App, a prototype of the mobile app's user interface
might be developed and reviewed by users to confirm whether the app layout meets
their expectations.
Ensures that the software will meet the needs of the users and stakeholders.
Helps catch potential issues early, saving time and resources in later stages.
Promotes alignment between business objectives and technical implementation.
Requirements are often subject to change during the software development lifecycle.
These changes could arise from new business needs, regulatory changes, market
dynamics, or feedback from users. Therefore, it's essential to have a formal process
for managing these changes to prevent scope creep and ensure that all stakeholders
are aligned.
Establish a formal process for handling changes in requirements, often called change control or
change management.
Changes should be documented, reviewed, and approved before being implemented in the system.
Version Control
Maintain different versions of the requirement documents to track changes over time and ensure that
everyone is working with the latest version.
Each version should be clearly labeled, and the changes should be logged (who requested the change,
the reason, and the impact on the project).
Example: A software development project might use a version control system like
Git to track updates to the SRS document and ensure that team members are working
with the most current version.
An RTM is a tool used to track and manage the relationship between requirements and other project
artifacts (designs, code, tests).
When requirements change, the RTM helps ensure that the changes are reflected throughout the
lifecycle—from design to testing.
Impact Analysis :For each change request, an impact analysis is conducted to assess
how the change will affect the project's scope, timeline, resources, and budget.
This helps to prevent unnecessary changes that could derail the project.
1. Clear Documentation: Always document changes formally with reasons, impact analysis, and
approvals to ensure transparency.
2. Stakeholder Communication: Keep stakeholders informed about changes and their
implications for the project.
3. Change Prioritization: Not all changes are equally important. Prioritize changes based on
business value, technical feasibility, and urgency.
4. Scope Control: Regularly review the scope to prevent scope creep. Ensure that changes align
with the project’s overall goals.
5. Traceability: Use tools like RTM to ensure that all requirements are tracked and that changes
are linked to their impact on design, testing, and development.
Conclusion