Final-Lab Manual-Software Engineering-18-12-2024
Final-Lab Manual-Software Engineering-18-12-2024
1
Experiment No:1
Aim: To finalize the project topic and define the problem statement by analyzing user
needs, identifying key challenges, and framing objectives for software development.
Theory
1. Topic Finalization:
o Select a relevant and feasible project topic aligned with industry or societal needs.
o Ensure the topic integrates software engineering principles and involves a mix of
functional and non-functional requirements.
2. Problem Definition:
The importance of this phase lies in providing clarity of purpose, ensuring alignment with project
goals, and mitigating risks early in the project lifecycle.
Learning Objective:
To identify and select an appropriate project topic.
To establish a solid foundation for further stages of the software development process.
Learning Outcome:
3. Justify the need for the software system based on real-world challenges.
2
Course Outcomes (COs):
CO1: Understand and explain the fundamentals of software engineering, the software
process frameworks, and umbrella activities to manage and improve software
development.
CO3: Identify and formulate functional and non-functional requirements for software
systems, and perform cost estimation using various models.
L3 (Apply): Apply problem-solving techniques to finalize the project topic and define the
problem statement.
PO2: Problem Analysis: Identify and analyze complex engineering problems for defining
software requirements.
PSO3: Design structured problem definitions to develop web-based solutions for societal
challenges.
3
Discussion:
The experiment highlighted the significance of topic selection and problem definition in
ensuring project success. The exercise also emphasized considering stakeholder needs,
constraints, and the system environment.
Conclusion:
The process of topic finalization and problem definition forms a critical part of the software
development lifecycle. A well-defined problem ensures clarity, reduces risks, and serves as a
foundation for developing innovative and effective software solutions.
4
Experiment No. 2: Literature Survey on Software Modeling
Aim:
To conduct a literature survey on various software development models and select the most
suitable model for the project based on its requirements, constraints, and desired outcomes.
Theory:
The literature survey allows teams to understand these models and select the one that aligns best
with their project’s objectives and constraints.
Learning Objective:
To understand different software development models and their characteristics.
To select the most suitable model for the project based on the findings.
5
Learning Outcome:
CO2: Analyze and compare traditional and agile software development models, including
their applicability to various project scenarios.
L4 (Analyze): Evaluate the strengths and weaknesses of models to select the most suitable
one for the project.
PO2: Problem Analysis: Analyze the characteristics of various models to solve complex
problems.
PO5: Engineering Tool Usage: Utilize research tools and resources to perform a detailed
literature survey.
PO11: Life-Long Learning: Develop the ability to explore and evaluate emerging software
engineering models.
6
1. Identified and documented the characteristics of various software development
models.
3. Selected the most suitable model for the project and justified the choice.
Discussion:
The literature survey emphasized the importance of understanding different software
development models to ensure their proper alignment with project requirements. The
selected model balances flexibility, risk, and development speed.
Conclusion:
7
8
Experiment No. 3: Technical Article on Software Development Methodology
Aim:
To write a detailed technical article about the selected software development methodology for
the project, including its description, applications, pros and cons, and justification for selection.
Theory:
Learning Objective:
To understand and describe a selected software development methodology in detail.
Learning Outcome:
CO2: Analyze and compare traditional and agile software development models, including
their applicability to various project scenarios.
CO5: Evaluate and mitigate software project risks and apply configuration management
practices to maintain project integrity.
9
Cognitive Levels of Attainment as per Bloom’s Taxonomy:
L2 (Understand): Comprehend the chosen methodology and its characteristics.
PO2: Problem Analysis: Analyze the suitability of the methodology for specific project
needs.
PO11: Life-Long Learning: Develop the ability to independently research and analyze
new and existing software methodologies.
Discussion:
The detailed article highlights the selected methodology’s characteristics, its applicability
to the project, and an evaluation of its pros and cons. The choice of methodology was
justified based on its ability to meet project requirements effectively.
Conclusion:
10
Experiment No. 4: Write Software Requirements Specification (SRS) Document for Your
Project
Aim:
To create a detailed Software Requirements Specification (SRS) document for the assigned
project, clearly outlining functional and non-functional requirements, constraints, assumptions,
and dependencies.
Theory:
Learning Objective:
To understand the importance of an SRS document in the software development process.
Learning Outcome:
11
Course Outcomes (COs):
CO1: Understand and explain the fundamentals of software engineering, the software
process frameworks, and umbrella activities to manage and improve software
development.
CO3: Identify and formulate functional and non-functional requirements for software
systems, and perform cost estimation using various models.
CO5: Evaluate and mitigate software project risks and apply configuration management
practices to maintain project integrity.
L4 (Analyze): Analyze and evaluate the project requirements to ensure completeness and
feasibility.
PO5: Engineering Tool Usage: Utilize appropriate tools and techniques to draft a
professional SRS document.
Discussion:
The SRS document highlights the system requirements and constraints to ensure
12
successful implementation. The document adheres to IEEE 830 standards and serves as a
key reference for subsequent phases of software development.
Conclusion:
Developing an SRS document helps in formalizing the understanding of project requirements
and serves as a contract between stakeholders and the development team. It provides clarity and
minimizes misunderstandings, ensuring that the developed software meets the desired
specifications.
1. Introduction
Definitions, Acronyms, and Abbreviations: List all relevant terms and acronyms.
2. Overall Description
Product Perspective: Describe how the product fits into the larger system.
User Characteristics: Specify user roles and characteristics.
3. Functional Requirements
4. Non-Functional Requirements
13
This structure ensures that students can create a clear and professional SRS document for their
projects, aligned with real-world standards.
14
Experiment No. 5: Use Case and Gantt Chart Development
Aim:
To create use case diagrams and Gantt charts for the project, representing functional
requirements and project timelines effectively.
Theory:
Key Components:
Actors: External entities interacting with the system (e.g., users, devices).
Use Cases: Specific functions or features of the system.
Relationships: Associations between actors and use cases (e.g., include, extend).
2. Gantt Charts :
A Gantt chart is a project management tool used to represent the project schedule. It shows tasks,
their durations, dependencies, and progress over time.
Key Components:
Dependencies: Relationships between tasks (e.g., Task A must finish before Task B
starts).
Learning Objective:
To understand the role of use case diagrams in capturing functional requirements.
To gain proficiency in creating Gantt charts for effective project scheduling and tracking.
To apply analytical and design skills for project management and system design.
15
Learning Outcome:
3. Demonstrate the ability to plan, schedule, and track project progress effectively.
CO5: Evaluate and mitigate software project risks and apply configuration management
practices to maintain project integrity.
L5 (Evaluate): Evaluate project timelines and dependencies using Gantt charts to ensure
efficient scheduling.
PO3: Design/Development of Solutions: Design Gantt charts to plan and manage project
deliverables.
PO10: Project Management and Finance: Utilize project management tools to organize
tasks and resources effectively.
16
Discussion:
o The use case diagram identified key interactions between actors and the system.
o The Gantt chart highlighted task durations, dependencies, and the critical path for
project completion.
Conclusion:
Use case diagrams and Gantt charts are essential tools for understanding system requirements
and managing project timelines. By developing these artifacts, students gained insights into
system design and project management, ensuring better planning and execution of their project.
3. Establish relationships (e.g., include, extend) between actors and use cases.
4. Use tools like Lucidchart, Microsoft Visio, or draw.io to create the diagram.
3. Create a Gantt chart using tools like MS Project, Excel, or online Gantt chart tools.
4. Review and refine the chart to ensure it reflects the project schedule accurately.
17
Sample Gantt Chart:
18
19
20
Experiment No. 6: Draw Data Flow Diagram for Your Project
Aim:
To design a Data Flow Diagram (DFD) for the project, representing the flow of information and
processes involved in the system.
Theory:
A Data Flow Diagram (DFD) is a graphical representation of data flow within a system. It
illustrates how data moves between processes, data stores, and external entities (sources/sinks) in
a system. DFDs help in understanding the system's functionality and identifying bottlenecks or
inefficiencies.
3. External Entities: Represented as squares, they denote sources or sinks that interact with
the system.
4. Data Flows: Represented as arrows, they show the flow of data between entities,
processes, and data stores.
Levels of DFD:
Level 0 (Context Diagram): Provides an overview of the system with a single process.
Level 1: Breaks down the main process into sub-processes.
Learning Objective:
To understand the role of Data Flow Diagrams in system design and analysis.
To learn to represent processes, data stores, and data flows effectively.
To develop analytical skills for visualizing the flow of information in the system.
21
Learning Outcome:
3. Demonstrate the ability to use DFDs for identifying system functionality and data
dependencies.
CO5: Evaluate and mitigate software project risks and apply configuration management
practices to maintain project integrity.
L5 (Evaluate): Evaluate the data flow and ensure its correctness and completeness.
PO5: Engineering Tool Usage: Use modern tools to create accurate DFDs.
PO10: Project Management and Finance: Plan and document system processes for better
project management.
PSO2: Integrate data flow representation into effective system modeling and real-time
problem-solving.
22
Discussion:
o The DFD successfully depicted the data flow and system processes.
Conclusion:
Drawing Data Flow Diagrams is a crucial step in understanding and designing system processes.
Through this experiment, students gained the ability to represent system functionality and data
flow visually, ensuring clarity in system design and development.
3. Map data flows between sub-processes, data stores, and external entities.
23
Sample Data Flow Diagrams:
Context diagram
24
DATA FLOW DIAGRAM
PATIENT
HOSPITAL MANAGEMENT
Get admitted
25
TREATMENT
LEVEL – 1 Data Flow Diagram (DFD)
Patient
Patient Registration
26
LEVEL – 2 Data Flow Diagram (DFD)
27
Experiment No. 7: Estimate the Cost of Your Project
Aim:
To estimate the cost of the software project using appropriate cost estimation techniques and
models.
Theory:
Cost estimation in software engineering is the process of predicting the resources, effort, time,
and money required to develop a software project. Accurate cost estimation helps in planning,
budgeting, and resource allocation, ensuring the success of the project.
4. Analogy-Based Estimation: Compares the current project with similar past projects to
estimate costs.
5. Parametric Models: Uses parameters like effort, schedule, and quality to calculate costs.
Project size
Team experience and expertise
Project complexity
Resource availability
The function point method was originally developed by Bij Albrecht. A function point is a rough
estimate of a unit of delivered functionality of a software project. Function points (FP) measure
size in terms of the amount of functionality in a system. Function points are computed by first
calculating an unadjusted function point count (UFC). Counts are made for the following
categories
28
• Number of user inputs
Each user input that provides distinct application oriented data to the software is counted.
Each user output that provides application oriented information to the user is counted. In this
context "output" refers to reports, screens, error messages, etc. Individual data items within a
report are not counted separately.
An inquiry is defined as an on-line input that results in the generation of some immediate
software response in the form of an on-line output. Each distinct inquiry is counted.
• Number of files
All machine-readable interfaces that are used to transmit information to another system are
counted.
Once this data has been collected, a complexity rating is associated with each count according to
Table
Each count is multiplied by its corresponding complexity weight and the results are summed to
provide the UFC. The adjusted function point count (FP) is calculated by multiplying the UFC
by a technical complexity factor (TCF) also referred to as Value Adjustment Factor (VAF).
Components of the TCF are listed in Table 2
29
Table 2. Components of the technical complexity factor.
Each component is rated from 0 to 5, where 0 means the component has no influence on the
system and 5 means the component is essential (Pressman, 1997). The VAF can then be
calculated as:
The factor varies from 0.65 (if each Fi is set to 0) to 1.35 (if each Fi is set to 5) (Fenton, 1997).
The final function point calculation is:
30
Convert AFP into SLOC using appropriate conversion factor.
PROGRAM/ CODE:
//function point size estimation model
import java.util.*;
class FP
{
int weight[][]={{3,4,5},{4,5,7},{3,4,6},{7,10,15},{5,7,10}};
Scanner sc=new Scanner(System.in);
int menu()
{
System.out.println("1.Low"+"\n"+"2.Average"+"\n"+"3.High");
System.out.println("Enter choice");
int n=sc.nextInt();
return(n);
}
int wfactor(int r,int h)
{
return(weight[r-1][h-1]);
}
void calc()
{
int v=0;
int sum=0;
System.out.println("Enter external input value");
v=sc.nextInt();
sum=sum+v*wfactor(1,menu());
System.out.println("Enter external input value");
v=sc.nextInt();
31
sum=sum+v*wfactor(1,menu());
System.out.println("Enter external output value");
v=sc.nextInt();
sum=sum+v*wfactor(2,menu());
System.out.println("Enter external inquiries value");
v=sc.nextInt();
sum=sum+v*wfactor(3,menu());
System.out.println("Enter internal logical file value");
v=sc.nextInt();
sum=sum+v*wfactor(4,menu());
System.out.println("Enter internal logical file value");
v=sc.nextInt();
sum=sum+v*wfactor(4,menu());
System.out.println("Enter external interface value");
v=sc.nextInt();
sum=sum+v*wfactor(5,menu());
System.out.println("Enter high transaction rate");
int ra=sc.nextInt();
RESULT/ OUTPUT:
Enter external input value
10
1.Low
2.Average
3.High
Enter choice
1
Enter external input value
10
32
1.Low
2.Average
3.High
Enter choice
3
Enter external output value
15
1.Low
2.Average
3.High
Enter choice
2
Enter external inquiries value
13
1.Low
2.Average
3.High
Enter choice
2
Enter internal logical file value
2
1.Low
2.Average
3.High
Enter choice
3
Enter internal logical file value
2
1.Low
2.Average
3.High
Enter choice
1
Enter external interface value
7
1.Low
2.Average
3.High
Enter choice
2
Enter high transaction rate
5
Enter multiple comm. protocol
5
UFP= 300
AFP= 225.0
33
PROGRAM CODE:
//COCOMO MODEL
import java.util.*;
class COCOMO
{
public static void main(String args[])
{
Scanner s=new Scanner(System.in);
System.out.println("Enter Size");
double si=s.nextDouble();
System.out.println("Enter Software Reliability");
double r=s.nextDouble();
System.out.println("Enter use of software tools");
double st=s.nextDouble();
System.out.println("Enter product complexity");
double c=s.nextDouble();
System.out.println("Enter Execution time complexity");
double ec=s.nextDouble();
double EAF=r*st*c*ec;
double a=3.2;
double b=1.05;
double E=a*Math.pow(si,b)*EAF;
System.out.println("Value of organic project="+Math.ceil(E));
double a1=3.0;
double b1=1.12;
double E1=a1*Math.pow(si,b1)*EAF;
RESULT /OUTPUT:
Enter Size
200
Enter Software Reliability
1.15
Enter use of software tools
.91
Enter product complexity
34
.85
Enter Execution time complexity
1
Value of organic project=742.0
Value of Semidetach project=1008.0
Value of Embedded project=1438.0
Learning Objective:
To understand various cost estimation techniques and their applications.
Learning Outcome:
3. Evaluate the impact of resource allocation and project complexity on cost estimation.
CO5: Evaluate and mitigate software project risks and apply configuration management
practices to maintain project integrity.
PO3: Design/Development of Solutions: Design and calculate cost estimation models for
the project.
PO10: Project Management and Finance: Manage project costs by applying engineering
management principles.
35
Programme Specific Outcome (PSOs):
PSO1: Apply knowledge of cost estimation models to develop sustainable IT solutions.
Discussion:
o The selected cost estimation technique provided detailed cost breakdowns for
various project components.
Conclusion:
Cost estimation is a vital step in software project planning, ensuring proper allocation of
resources and project success. Through this experiment, students gained practical experience in
applying cost estimation techniques and understanding the factors affecting project costs.
3. Break down costs into subcomponents like development, testing, and deployment.
36
Function Point Analysis Tools
37
Experiment No. 8: RMMM Plan Development
Aim:
To develop a Risk Management, Mitigation, and Monitoring (RMMM) plan for your software
project.
Theory:
Risk Management in software engineering involves identifying potential risks, assessing their
impact, and developing strategies to manage them effectively. A comprehensive RMMM Plan
ensures that risks are identified early, mitigated proactively, and monitored throughout the
software development lifecycle.
1. Risk Identification
o Identify potential risks that may impact project objectives, such as technical risks,
resource risks, and schedule risks.
2. Risk Assessment
o Assess the probability of risk occurrence and its potential impact on the project
using qualitative or quantitative methods.
3. Risk Mitigation
4. Risk Monitoring
o Continuously monitor identified risks and detect new risks throughout the project
lifecycle.
38
Enhances project stability and success.
Learning Objective:
To understand the principles of risk management in software projects.
Learning Outcome:
L5 (Evaluate): Evaluate the effectiveness of the RMMM plan and suggest improvements.
PO5: Engineering Tool Usage: Utilize tools to monitor and document risks effectively.
PO10: Project Management and Finance: Apply risk management principles to optimize
project outcomes.
39
PSO2: Integrate various technologies to address and mitigate risks in real-time project
scenarios.
Discussion:
Conclusion:
Developing an RMMM plan is crucial for ensuring project success. By completing this
experiment, students gained hands-on experience in risk management, enhancing their ability to
predict and manage challenges effectively in software engineering projects.
2. Assess Risks
1. Assign a probability (Low, Medium, High) and impact (Low, Medium, High) to each
risk.
2. Create a risk matrix to prioritize risks based on their probability and impact.
40
5. Prepare the RMMM Plan
1. Compile all risk-related information into a structured RMMM document.
2. Include risk descriptions, assessment data, mitigation strategies, and monitoring plans.
Procedure:
Risk Identification:
Conduct brainstorming sessions with the development team to identify potential risks.
Review project documents such as requirements, design, and use cases to foresee possible risk
areas.
Example Risks for HMS:
Inaccurate billing due to wrong data entry.
Database crashes or slowdowns due to poor optimization.
Failure in integrating with third-party systems (e.g., payment gateways).
Risk Analysis:
For each identified risk, assess its likelihood (high, medium, low) and its potential impact
(severe, moderate, minor).
Example Analysis for HMS:
Inaccurate billing: Likelihood = High, Impact = Severe.
Database crashes: Likelihood = Medium, Impact = High.
Third-party integration failure: Likelihood = Low, Impact = Moderate.
41
Risk Mitigation:
For each risk, develop strategies to reduce its impact or likelihood.
Example Mitigation Strategies for HMS:
Inaccurate billing: Implement validation checks for input data and perform testing on the billing
module.
Database crashes: Use a robust, scalable database design; implement database backup and
recovery strategies.
Third-party integration failure: Use well-documented APIs and perform mock integration tests.
Risk Monitoring:
Set up monitoring to track the identified risks. Use tools like JIRA or Trello to log risks and track
their status.
Regularly review the risks during sprint meetings or progress reviews.
Risk Management:
Continuously update the RMMM plan as new risks arise or existing risks evolve. Update the risk
register with new information.
Assign owners for each risk who are responsible for ensuring mitigation actions are executed.
Risk Mitigation, Monitoring, and Management Plan for Hotel Management System (HMS)
42
Experiment No. 9: GUI Design and Implementation of Mini Project
Aim:
To design and implement a Graphical User Interface (GUI) for the mini-project using
appropriate tools and techniques, ensuring usability and functionality.
Theory:
Graphical User Interface (GUI) design is a crucial aspect of software engineering that focuses on
creating user-friendly and visually appealing interfaces. A well-designed GUI enhances user
experience, ensures accessibility, and improves the overall usability of the system.
1. User-Centered Design:
o Focuses on the users’ needs, goals, and preferences.
o Visual Studio
o JavaFX
o PyQt
1. Requirement analysis.
43
2. Wireframe or mockup creation.
Learning Objectives:
To understand the principles of GUI design.
Learning Outcomes:
PO5: Modern Tool Usage: Utilize advanced tools and technologies for GUI design and
development.
PO8: Ethics: Ensure GUI designs are inclusive and accessible to all users.
PO10: Project Management and Finance: Manage GUI design as part of the overall
project timeline and resources.
PSO3: Design, develop, and test software with a focus on user interaction and usability.
44
Result & Discussion:
Result: A functional GUI was designed and implemented for the mini-project.
Discussion:
o The interface is consistent with the project requirements and integrates seamlessly
with the back-end.
Conclusion:
GUI design is an integral part of software development, directly impacting the usability and
success of the application. Through this experiment, students gained practical experience in
designing and implementing a GUI for a mini-project using modern tools and adhering to design
principles.
For data security, there are two level of authentications. All the fields can be accessed by high authorities
whereas fields containing data related to rooms, reservation, payment and customer can be operated by
low level management like operators, staff, manager, attendance, salary can be operated by high level
authority.
After login, depending upon the purpose user can access forms like –
Customer form to fill customer details
Room form to fill room detail
Reservation form to fill reservation detail
Payment form to fill payment related details.
There is additional form bill to print bill after all the transaction related to room reservation are over.
Report –
Reports provided by this system are as listed –
1. Bill
45
2. Attendance record monthly basis
3. Payment record monthly basis
4. Inventory record monthly basis
5. Staff and their salary record
6. reservation details and room availability record
7. Items left, ordered, etc. sheet.
Bill –
Bill basically consist of customer name, room number, type of service chosen, reservation number. This
bill will be given to the customer after payment.
Stocksheet –
This sheet has items code, type, quality present and if ordered during than span quantity. For providing
mere flexibility, for few there in three different sheets, one displayed on monthly basis showing all
record.
Payment Record –
This shows which all payments have been received this month or week.
Attendance Sheet –
This sheet can be accessed by manager and he keeps record of attendance as well as salary of staff.
46
2. Startup after Login
47
3. Change password
4. Search engine
48
5. Reports quick launch
6. Manage payments
49
1. Type of patient
2. Inpatient
3. out Patient
50
3.1.1 Payment form (print copy)
7. Maintaining appointments
51
1. Manage outpatients
2. Manage inpatients
52
53
Experiment No. 10: Develop Test Cases for Testing Mini Project
Aim:
To develop test cases for the mini-project, ensuring comprehensive testing of all functionalities
and verifying adherence to project requirements.
Theory:
Testing is a critical phase in software development, aimed at identifying and rectifying errors in
the system to ensure it performs as intended. Test cases are documented scenarios that validate
the functionality of the software by specifying inputs, execution steps, and expected outcomes.
Types of Testing:
54
TestRail (for test case management)
Learning Objectives:
To learn how to write test cases systematically.
Learning Outcomes:
PO5: Modern Tool Usage: Utilize tools and techniques for testing.
PO10: Project Management and Finance: Efficiently plan and execute the testing process
within project timelines.
PSO3: Test and validate software solutions to meet societal and user requirements.
Discussion:
55
o Test results highlighted areas for improvement.
Conclusion:
Through this experiment, students learned how to design, document, and execute test cases
systematically. They also gained practical experience in identifying and resolving software
issues, which is essential for delivering quality software solutions.
3. Categorize test cases into types, such as functional, integration, or system tests.
56
Test Case Template:
TC002 Test invalid User Enter invalid Display error Same as Pass
login credentials username message expected
exist and
password
TC003 Test edge case N/A Leave fields Display Login page Pass
for input fields blank and validation does not
submit error proceed
57
Experiment No. 11: Case Study on Software Configuration Management (SCM)
Aim:
To study and analyze the principles, processes, and tools of software configuration management
(SCM) by exploring a case study.
Theory:
1. Configuration Items (CIs): Files, code modules, documents, or artifacts under version
control.
2. Version Control: Managing multiple versions of files or code. Examples: Git, SVN.
4. Build Management: Automating the creation of executable software from source code.
Importance of SCM:
58
Learning Objectives:
1. To understand the importance of SCM in software projects.
Learning Outcomes:
PO5: Use modern tools and techniques for software development and management.
Discussion:
59
o Insights into the importance of version control and change management were
gained.
o The selected SCM tool's impact on software development and team collaboration
was discussed.
Conclusion:
This experiment provided an understanding of SCM processes and tools. By analyzing a case
study, students learned how SCM ensures project integrity, reduces risks, and improves software
quality.
60
Example Questions for Case Study Analysis
1. Describe the role of version control in the selected case study.
2. What SCM tools were used, and why were they chosen?
61