SEPM
SEPM
SEPM
Q-1 What is software? What is the difference between the software process and
software
product?
The software process refers to the series of activities, methods, and practices
followed to develop, deploy, and maintain software. It includes phases such as
requirements gathering, design, implementation, testing, deployment, and
maintenance.
The focus is on how software is created and managed, ensuring quality and
efficiency throughout the development lifecycle. Common models for software
processes include Waterfall, Agile, and Spiral.
Software Product:
A software product is the final output resulting from the software process. It is a
functioning software application or system that meets specified requirements and is
ready for use by end-users.
Software products can be commercial (sold to customers) or open-source (freely
available for modification and distribution).
Q-4 Explain software lifecycle of spiral model and discuss various activities in
each phase?
The Spiral Model is a software development lifecycle (SDLC) that combines iterative
development with the systematic aspects of the traditional waterfall model. It
emphasizes risk management and allows for incremental refinement of the software
through repeated cycles (or spirals). Each cycle consists of four main phases:
1. Planning:
In this phase, project objectives, requirements, and constraints are defined. Risk
analysis is conducted to identify potential challenges and uncertainties.
Stakeholder input is crucial for outlining project scope and deliverables.
2. Risk Analysis:
The focus here is on identifying and evaluating risks associated with the project.
Various risk mitigation strategies are developed, helping to ensure that potential
problems are addressed early in the process. This phase may involve prototyping to
test critical assumptions.
3. Engineering:
This phase encompasses the actual development of the software. Activities include
design, coding, and testing. The software is built incrementally, with each
iteration producing a working version. User feedback is gathered to refine
requirements and improve functionality.
4. Evaluation:
In the final phase, the developed software is evaluated against user needs and
project goals. Feedback is collected from stakeholders, and any necessary
adjustments are made. This phase also involves planning for the next spiral cycle,
leading to continuous improvement and refinement.
Cost estimation models are essential tools in software development that help
predict the financial resources required to complete a project. These models aid
project managers in budgeting, resource allocation, and risk management. Here are
some commonly used cost estimation models:
1. Expert Judgment:
This model relies on the experience and intuition of experts within the
organization. Experts assess the scope and complexity of the project, providing
estimates based on similar past projects. While it is quick, it can be subjective
and prone to bias.
2. Analogous Estimation:
This method uses data from previous similar projects to estimate costs for the
current project. By comparing features, size, and complexity, project managers can
derive estimates. It's relatively simple but may not account for unique project
factors.
3. Parametric Estimation:
This model employs statistical relationships between historical data and project
variables. It uses parameters (like lines of code or function points) to calculate
costs. It provides more accuracy and can scale for larger projects but requires
extensive historical data.
4. Bottom-Up Estimation:
In this approach, project components are broken down into smaller tasks, and costs
are estimated for each task. These estimates are then aggregated to determine the
total project cost. While it is detailed and accurate, it can be time-consuming.
ASSIGNMENT- II
Q-1 What are the elicitation techniques used in the software requirements?
1. Interviews:
Conducting one-on-one or group interviews with stakeholders allows for in-depth
discussions about their needs, expectations, and challenges. This technique helps
clarify ambiguities and gather detailed information.
2. Surveys and Questionnaires:
These tools enable the collection of information from a larger audience quickly.
Well-structured surveys can provide quantitative data and insights into user
preferences and requirements.
3. Workshops:
Collaborative workshops bring together stakeholders, developers, and users to
brainstorm and discuss requirements in a structured environment. This technique
fosters creativity and consensus building, leading to a shared understanding of
requirements.
4. Prototyping:
Developing prototypes (either low-fidelity or high-fidelity) allows stakeholders to
visualize the software and provide feedback. This technique helps identify
requirements through direct interaction with a tangible representation of the
product.
5. Observation:
Observing users in their natural environment can reveal implicit requirements and
workflows that stakeholders may not articulate. This technique provides valuable
insights into user behavior and system interactions.
Functional Requirements:
Definition: Functional requirements specify what a system should do, detailing the
specific behaviors and functions it must support. They describe the interactions
between the system and its users or other systems.
Examples: Examples include user authentication, data entry forms, search
capabilities, and transaction processing. For instance, "The system shall allow
users to log in using their email and password" is a functional requirement.
Focus: The focus is on specific functionalities, business rules, and data
processing tasks.
Non-Functional Requirements:
Definition: Non-functional requirements define the quality attributes, system
performance, and constraints under which the system must operate. They do not
specify specific behaviors but rather how the system performs its functions.
Examples: Examples include performance metrics (e.g., response time), security
requirements, scalability, usability, reliability, and compliance standards. For
instance, "The system shall respond to user queries within 2 seconds" is a non-
functional requirement.
Focus: The focus is on the overall system characteristics, such as performance,
security, and maintainability.
Q-3 Explain about use-case modeling?Also mention a use case diagram of your Mini-
Project?
ASSIGNMENT- III
Q-1 What are the elicitation techniques used in the software requirements?
Elicitation techniques are vital for gathering software requirements, ensuring that
the needs of stakeholders are accurately understood and documented. Here are some
commonly used techniques:
1. Interviews:
Conducting structured or unstructured interviews with stakeholders allows for
direct communication to explore their needs, expectations, and challenges in
detail. This method helps clarify ambiguities and capture nuanced information.
2. Surveys and Questionnaires:
These tools are effective for collecting quantitative data from a larger audience.
Well-designed surveys can help assess user preferences, priorities, and
satisfaction, providing valuable insights into requirements.
3. Workshops:
Collaborative workshops bring together various stakeholders to brainstorm and
discuss requirements in a structured environment. This technique encourages
participation, promotes consensus, and helps identify conflicting requirements
early.
4. Prototyping:
Developing prototypes (low-fidelity or high-fidelity) allows stakeholders to
visualize the software, facilitating immediate feedback on design and
functionality. Prototyping helps refine requirements based on user interaction.
5. Observation:
Observing users in their actual work environments can uncover implicit requirements
and workflows that stakeholders may overlook. This technique provides insights into
user behavior and system interactions.
Q-2 Differentiate between functional and non-functional requirement?
Functional Requirements:
Definition: Functional requirements specify what a system should do. They detail
the specific behaviors, features, and functions that the software must support to
meet user needs.
Examples: Common examples include user authentication, data processing, transaction
management, and reporting functionalities. For instance, a functional requirement
might state, "The system shall allow users to create, read, update, and delete
(CRUD) records."
Focus: The focus is primarily on user interactions and the operations the system
must perform. They outline the actions that users can take and how the system
should respond.
Non-Functional Requirements:
Definition: Non-functional requirements describe the quality attributes,
performance metrics, and constraints of the system rather than specific behaviors.
They define how the system performs its functions.
Examples: Examples include performance criteria (e.g., response time), security
standards, usability, reliability, and scalability. For instance, a non-functional
requirement might state, "The system shall respond to user requests within 2
seconds."
Focus: The focus is on the overall system characteristics and operational qualities
that enhance user experience and satisfaction.
ASSIGNMENT- III
Q-1 Discuss about the basic principles of software design in software engineering?
1. Separation of Concerns:
This principle advocates for dividing a software system into distinct sections,
each addressing a separate concern. By isolating functionality, it improves
maintainability and reduces complexity.
2. Modularity:
Design software in self-contained modules or components that can be developed,
tested, and maintained independently. This approach enhances reusability and
simplifies debugging and updates.
3. Abstraction:
Abstraction involves simplifying complex systems by focusing on high-level
functionalities while hiding unnecessary details. This principle helps manage
complexity and allows designers to think in terms of concepts rather than
implementation specifics.
4. Encapsulation:
Encapsulation restricts access to the internal state of an object and exposes only
necessary methods. This principle promotes data hiding and protects the integrity
of the system, making it easier to manage changes.
5. Single Responsibility Principle:
Each module or class should have one reason to change, focusing on a single
responsibility or functionality. This principle promotes clarity and reduces the
impact of changes.
Q-2 What are SA and SD? Discuss about the component based design and its
advantages?
Component-Based Design:
Component-Based Design is an approach that emphasizes building software systems
using reusable, interchangeable components. Each component encapsulates specific
functionality and can be independently developed, tested, and maintained.
Q-3 Explain Software Modeling and also prepare a DFD and Sequence Diagram of your
Mini
Project?
Data Flow Diagrams (DFD): Illustrate how data moves through a system, depicting
inputs, outputs, processes, and data stores.
Sequence Diagrams: Show the interactions between objects over time, emphasizing the
order of messages exchanged during a specific scenario.
Example DFD for a Library Management System:
Processes:
Borrow Book
Return Book
Search Catalog
Data Stores:
Books Database
Member Database
External Entities:
Member
Librarian
ASSIGNMENT- IV
Q-2 Discuss the differences between black box and white box testing models?
Black Box Testing and White Box Testing are two fundamental testing methodologies
used in software development, each serving distinct purposes and employing
different techniques.
Q-3 What is unit testing in software engineering? Explain with suitable example
def test_calculate_interest():
assert calculate_interest(1000, 5, 2) == 100 # 1000*5*2/100 = 100
assert calculate_interest(2000, 3, 1) == 60 # 2000*3*1/100 = 60
assert calculate_interest(500, 10, 0) == 0 # 0 interest for 0 time
ASSIGNMENT- V
Q-1 Discuss about some SCM functions in software engineering with suitable
examples?
1. Version Control:
Function: Tracks changes to source code and documents over time, allowing
developers to manage different versions of software.
Example: Using systems like Git, developers can create branches to experiment with
new features without affecting the main codebase. When ready, changes can be merged
back into the main branch.
2. Build Management:
Function: Automates the process of compiling source code into executable programs,
ensuring that all dependencies are correctly integrated.
Example: Tools like Maven or Gradle automate the build process, allowing teams to
generate builds consistently and manage dependencies effectively.
3. Change Control:
Function: Manages changes to software artifacts to ensure that modifications are
evaluated, approved, and documented before implementation.
Example: A change request might be submitted to add a new feature. The change
control board reviews the request, assesses its impact, and decides whether to
approve or reject it.
4. Release Management:
Function: Plans, schedules, and controls the development and delivery of software
releases.
Example: Coordinating the release of software updates or new versions, such as
deploying a new version of a web application to production environments.
Q-2 What is meant by software quality? Explain the metrics for maintenance?
Software Quality refers to the degree to which a software product meets specified
requirements, satisfies user needs, and adheres to standards throughout its
lifecycle. High-quality software is reliable, efficient, maintainable, and user-
friendly. It encompasses various attributes, including functionality, performance,
usability, reliability, and security.
Defect Density:
Definition: The number of defects identified in the software relative to its size
(usually measured in lines of code).
Importance: Helps gauge the quality of the software and identify areas needing
improvement.
Mean Time to Repair (MTTR):
Definition: The average time taken to fix a defect after it has been identified.
Importance: Indicates the efficiency of the maintenance process; shorter MTTR
suggests a more effective maintenance team.
Change Request Rate:
Definition: The total expenses incurred during the maintenance phase, including
labor, tools, and other resources.
Importance: Understanding maintenance costs is crucial for budgeting and resource
allocation.
Code Reading: Manually reviewing source code to gain insights into its structure
and functionality. This helps identify patterns, algorithms, and dependencies.
Testing and Debugging: Running the software and using debugging tools to observe
its behavior and identify key functionalities, helping to clarify how different
parts of the program interact.