Se Practicals
Se Practicals
SOFTWARE ENGINEERING
(3161605)
Certificate
Place:
Date:
The main motto of any laboratory/practical/field work is to enhance required skills and create ability
amongst students to solve real-time problems by developing relevant competencies in the
psychomotor domain. By keeping this in view, GTU has designed a competency-focused outcome-
based curriculum for engineering degree programs where sufficient weightage is given to practical
work. It shows the importance of enhancement of skills amongst the students, and it pays attention to
utilizing every second of time allotted for practical amongst students, instructors, and faculty members
to achieve relevant outcomes by performing the experiments rather than merely study-type
experiments. It is a must for the effective implementation of a competency-focused outcome-based
curriculum that every practical is keenly designed to serve as a tool to develop and enhance relevant
competency required by the various industry among every student. These psychomotor skills are very
difficult to develop through traditional chalk-and-board content delivery methods in the classroom.
Accordingly, this lab manual is designed to focus on industry-defined relevant outcomes rather than
the old practice of conducting practical to prove concepts and theories.
By using this lab manual, students can go through the relevant theory and procedure in advance before
the actual performance, which creates interest, and students can have a basic idea prior to the
performance. This, in turn, enhances pre-determined outcomes amongst students. Each experiment in
this manual begins with competency, industry-relevant skills, course outcomes as well as practical
outcomes (objectives). The students will also achieve safety and necessary precautions to be taken
while performing practical.
This manual also provides guidelines to faculty members to facilitate student-centric lab activities
through each experiment by arranging and managing necessary resources in order that the students
follow the procedures with required safety and necessary precautions to achieve the outcomes. It also
gives an idea of how students will be assessed by providing rubrics.
Software Engineering is an application of a systematic, defined, and measurable approach that begins
with requirement specification and progresses with planning, modeling, and testing, and concludes
with deployment. It is a layered paradigm that comprises processes, methods, and tools with the
bedrock of quality focus. The Software Engineering approach's main purpose is committed to
developing the software products within the stipulated time and budget with more quality. Quality
product motivates firmness, commodity, and delight.
Utmost care has been taken while preparing this lab manual; however, there is always a chance of
improvement. Therefore, we welcome constructive suggestions for improvement and removal of
errors, if any.
Software Engineering (3161605) No: 210430116124
1. Teacher should provide the guideline with demonstration of practical to the students with
all features.
2. Teacher shall explain basic concepts/theory related to the experiment to the students before
starting of each practical
3. Involve all the students in performance of each experiment.
4. Teacher is expected to share the skills and competencies to be developed in the students
and ensure that the respective skills and competencies are developed in the students after
the completion of the experimentation.
5. Teachers should give opportunity to students for hands-on experience after the
demonstration.
6. Teacher may provide additional knowledge and skills to the students even though not
covered in the manual but are expected from the students by concerned industry.
7. Give practical assignment and assess the performance of students based on task assigned to
check whether it is as per the instructions or not.
8. Teacher is expected to refer complete curriculum of the course and follow the guidelines
for implementation.
1. Students are expected to carefully listen to all the theory classes delivered by the faculty
members and understand the COs, content of the course, teaching and examination scheme, skill
set to be developed etc.
2. Students shall organize the work in the group and make record of all observations.
3. Students shall develop maintenance skill as expected by industries.
4. Student shall attempt to develop related hand-on skills and build confidence.
5. Student shall develop the habits of evolving more ideas, innovations, skills etc. apart from those
Software Engineering (3161605) No: 210430116124
1. Student has to perform all the practical as described in the practical list.
2. For performing the practical list, student can able to work individually or work in a team as per
subject teacher guidelines.
3. After establishing the team, every team will have to identify the problem area / definition for
performing the laboratory work.
4. Every team has to approve their problem definition to respective faculty member within 15 days
of the beginning of the semester.
5. Once the problem definition is approved by the faculty member, every team has to perform all
the practical based on their respective problem definition.
Software Engineering (3161605) No: 210430116124
Index
(Progressive Assessment
Sheet)
Practical – 1
AIM: Study of various type of Software Process models with comparison and find out which process
model will be appropriate for your selected Project.
Objectives: To learn different process models and identify suitable model for the project development.
Theory:
A software process is defined as a collection of work activities, actions, and tasks that are
performed when some work product is to be created.
Waterfall model.
V model.
Incremental model.
RAD model.
Agile model.
Iterative model.
Spiral model.
Prototype model.
Waterfall Model:
The Waterfall model is a traditional and linear approach to software development that follows a
sequential and phased structure. It is one of the earliest models used in the field of software
engineering. The process is named "waterfall" because it resembles a waterfall where progress
flows in one direction—downwards through phases like Conception, Initiation, Analysis, Design,
Construction, Testing, Maintenance, and Deployment.
Here are the main phases of the Waterfall model:
Requirements: In this phase, the requirements for the software project are gathered and
documented. This involves understanding the needs of the end-users and defining the system's
functionality.
Design: Once the requirements are clear, the system architecture and design are created. This
includes high-level design and low-level design, specifying how the system will be built.
Software Engineering (3161605) No: 210430116124
Implementation: The actual coding or programming of the software takes place in this phase.
The design is translated into a programming language, and the system is built according to the
specifications.
Testing: After the implementation, the software undergoes testing to identify and fix any defects
or issues. This phase ensures that the software meets the specified requirements and functions as
intended.
Deployment: Once the software has been thoroughly tested and approved, it is deployed or
released to the end-users or customers.
Maintenance: The final phase involves maintaining and supporting the software. This may
include addressing any issues that arise in the live environment, making updates, and providing
ongoing support.
Advantages:
When compared with other methodologies, Waterfall focuses most on a clear, defined set of steps.
Its structure is simple—each project goes through these steps:
One of the defining steps of Waterfall is committing to an end product, goal, or deliverable at the
beginning, and teams should avoid deviating from that commitment. For small projects where
goals are clear, the Waterfall model is good for making your team aware of the overall goal from
the start, with less potential for getting lost in the details as the project moves forward.
Unlike Scrum, which divides projects up into individual sprints, Waterfall is good for keeping the
focus on the end goal at all times. If your team has a concrete goal with a clear end date, Waterfall
will eliminate the risk of getting bogged down as you work toward that goal.
Waterfall’s approach is highly methodical, so it should come as no surprise that the methodology
emphasizes a clean transfer of information at each step. When applied in a software setting, every
new step involves a new group of people, and though that might not be the case at your company,
you still should aim to document information throughout a project’s lifecycle. Whether you’re
passing projects off at each step or experience unexpected personnel changes, Waterfall prioritizes
accessible information so new additions to the team can get up to speed quickly if needed.
Software Engineering (3161605) No: 210430116124
Disadvantages:
One of the drawbacks of waterfall model is also one of its advantages: Waterfall is based entirely
on following a set of steps that keep teams always moving forward. The methodology, in its
traditional form, leaves almost no room for unexpected changes or revisions. So, if your team has
loyally followed the steps of Waterfall nearly to the end of the project but then faces an unplanned
roadblock that necessitates a change in scope or goals, pivoting won’t be easy. You’ll have put a
considerable amount of work into a project under very specific, rigid assumptions. A sudden
change to the parameters of the project could render much of the work you’ve carried out up to
that point useless, which can throw off the entire timeline.
Another limitation of the Waterfall model is that as an internal process, the Waterfall methodology
focuses very little on the end user or client involved with a project. Its main purpose has always
been to help internal teams move more efficiently through the phases of a project, which can work
well for the software world. However, if you work in an industry other than software, clients often
want to be involved during a project, adding opinions and clarifying what they want as the project
moves forward.
Testing is one of the biggest downsides of the using the traditional Waterfall approach. Saving the
testing phase until the last half of a project is risky, but Waterfall insists that teams wait until step
four out of six to test their products. Outside of the software industry, the testing phase could mean
showing a new website design to a client, A/B testing content, or taking any number of steps to
gain empirical data on the viability of the project. At this point, the project has likely taken
considerable time to complete, so large revisions could cause significant delays.
V Model:
V-Model also referred to as the Verification and Validation Model. In this, each phase of SDLC
must complete before the next phase starts. It follows a sequential design process same as the
waterfall model. Testing of the device is planned in parallel with a corresponding stage of
development.
Software Engineering (3161605) No: 210430116124
Figure 2: v model
Verification: It involves a static analysis method (review) done without executing code. It is the
process of evaluation of the product development process to find whether specified requirements
meet.
Advantage:
Easy to Understand.
Testing Methods like planning, test designing happens well before coding.
This saves a lot of time. Hence a higher chance of success over the waterfall model.
Avoids the downward flow of the defects.
Works well for small plans where requirements are easily understood.
Disadvantage:
Software is developed during the implementation stage, so no early prototypes of the software are
produced.
If any changes happen in the midway, then the test documents along with the required documents,
has to be updated.
Incremental Model:
Incremental Model is a process of software development where requirements divided into multiple
standalone modules of the software development cycle. In this model, each module goes through
the requirements, design, implementation and testing phases. Every subsequent release of the
module adds function to the previous release. The process continues until the complete system
achieved.
Requirement analysis: In the first phase of the incremental model, the product analysis expertise
identifies the requirements. And the system functional requirements are understood by the
requirement analysis team. To develop the software under the incremental model, this phase
performs a crucial role.
Design & Development: In this phase of the Incremental model of SDLC, the design of the
system functionality and the development method are finished with success. When software
develops new practicality, the incremental model uses style and development phase.
Testing: In the incremental model, the testing phase checks the performance of each existing
function as well as additional functionality. In the testing phase, the various methods are used to test
the behavior of each task.
Implementation: Implementation phase enables the coding phase of the development system. It
involves the final coding that design in the designing and development phase and tests the
functionality in the testing phase. After completion of this phase, the number of the product working
is enhanced and upgraded up to the final system product.
Advantages:
More flexible.
Disadvantage
Need for good planning
RAD Model:
RAD is a linear sequential software development process model that emphasizes a concise
development cycle using an element-based construction approach. If the requirements are well
understood and described, and the project scope is a constraint, the RAD process enables a
development team to create a fully functional system within a concise time period.
Business Modelling: The information flow among business functions is defined by answering
questions like what data drives the business process, what data is generated, who generates it,
where does the information go, who process it and so on.
Data Modelling: The data collected from business modeling is refined into a set of data objects
(entities) that are needed to support the business. The attributes (character of each entity) are
identified, and the relation between these data objects (entities) is defined.
Process Modelling: The information object defined in the data modeling phase are transformed
to achieve the data flow necessary to implement a business function. Processing descriptions are
created for adding, modifying, deleting, or retrieving a data object.
Application Generation: Automated tools are used to facilitate construction of the software;
even they use the 4th GL techniques.
Software Engineering (3161605) No: 210430116124
Testing & Turnover: Many of the programming components have already been tested since
RAD emphasis reuse. This reduces the overall testing time. But the new part must be tested, and
all interfaces must be fully exercised.
Advantages:
Disadvantage:
It required highly skilled designers.
Agile model:
The meaning of Agile is swift or versatile. "Agile process model" refers to a software
development approach based on iterative development. Agile methods break tasks into smaller
iterations, or parts do not directly involve long term planning. The project scope and requirements
are laid down at the beginning of the development process. Plans regarding the number of
iterations, the duration and the scope of each iteration are clearly defined in advance.
Software Engineering (3161605) No: 210430116124
Requirements gathering: In this phase, you must define the requirements. You should explain
business opportunities and plan the time and effort needed to build the project. Based on this
information, you can evaluate technical and economic feasibility.
Design the requirements: When you have identified the project, work with stakeholders to define
requirements. You can use the user flow diagram or the high-level UML diagram to show the work of
new features and show how it will apply to your existing system.
Construction/ iteration: When the team defines the requirements, the work begins. Designers and
developers start working on their project, which aims to deploy a working product. The product will
undergo various stages of improvement, so it includes simple, minimal functionality.
Testing: In this phase, the Quality Assurance team examines the product's performance and looks for
the bug.
Deployment: In this phase, the team issues a product for the user's work environment.
Feedback: After releasing the product, the last step is feedback. In this, the team receives feedback
about the product and works through the feedback.
Software Engineering (3161605) No: 210430116124
Advantages:
Frequent Delivery
Disadvantage:
Due to the shortage of formal documents, it creates confusion and crucial decisions taken
throughout various phases can be misinterpreted at any time by different team members.
Due to the lack of proper documentation, once the project completes and the developers allotted to
another project, maintenance of the finished project can become a difficulty.
Iterative model:
In this Model, you can start with some of the software specifications and develop the first version
of the software. After the first version if there is a need to change the software, then a new version
of the software is created with a new iteration. Every release of the Iterative Model finishes in an
exact and fixed period that is called iteration.
The Iterative Model allows the accessing earlier phases, in which the variations made respectively.
The final output of the project renewed at the end of the Software Development Life Cycle
(SDLC) process.
Software Engineering (3161605) No: 210430116124
Requirement gathering & analysis: In this phase, requirements are gathered from customers
and check by an analyst whether requirements will fulfil or not. Analyst checks that need will
achieve within budget or not. After all of this, the software team skips to the next phase.
Design: In the design phase, team design the software by the different diagrams like Data Flow
diagram, activity diagram, class diagram, state transition diagram, etc.
Implementation: In the implementation, requirements are written in the coding language and
transformed into computer programmes which are called Software.
Testing: After completing the coding phase, software testing starts using different test methods.
There are many test methods, but the most common are white box, black box, and grey box test
methods.
Deployment: After completing all the phases, software is deployed to its work environment.
Review: In this phase, after the product deployment, review phase is performed to check the
behaviour and validity of the developed product. And if there are any error found then the process
starts again from the requirement gathering.
Maintenance: In the maintenance phase, after deployment of the software in the working
environment there may be some bugs, some errors or new updates are required. Maintenance
involves debugging and new addition options.
Software Engineering (3161605) No: 210430116124
Advantages:
Disadvantage:
Spiral model
The spiral model, initially proposed by Boehm, is an evolutionary software process model that
couples the iterative feature of prototyping with the controlled and systematic aspects of the linear
sequential model. It implements the potential for rapid development of new versions of the
software. Using the spiral model, the software is developed in a series of incremental releases.
During the early iterations, the additional release may be a paper model or prototype. During later
iterations, more and more complete versions of the engineered system are produced.
Software Engineering (3161605) No: 210430116124
Objective setting: Each cycle in the spiral starts with the identification of purpose for that cycle, the
various alternatives that are possible for achieving the targets, and the constraints that exists.
Risk Assessment and reduction: The next phase in the cycle is to calculate these various
alternatives based on the goals and constraints. The focus of evaluation in this stage is located on the
risk perception for the project.
Development and validation: The next phase is to develop strategies that resolve uncertainties and
risks. This process may include activities such as benchmarking, simulation, and prototyping.
Planning: Finally, the next step is planned. The project is reviewed, and a choice made whether to
continue with a further period of the spiral. If it is determined to keep, plans are drawn up for the next
step of the project.
Advantages:
Disadvantage:
Prototype model:
The prototype model requires that before carrying out the development of actual software, a
working prototype of the system should be built. A prototype is a toy implementation of the
system. A prototype usually turns out to be a very crude version of the actual system, possible
exhibiting limited functional capabilities, low reliability, and inefficient performance as compared
to actual software. In many instances, the client only has a general view of what is expected from
the software product. In such a scenario where there is an absence of detailed information
regarding the input to the system, the processing needs, and the output requirement, the
prototyping model may be employed.
Advantages:
Errors can be detected much earlier as the system is made side by side.
Disadvantages:
Easy to fall back into the code and fix without proper requirement analysis, design, customer
evaluation, and feedback.
It is a time-consuming process
Software Engineering (3161605) No: 210430116124
Quiz:
Testing At the end of the development cycle At the end of each increment
2. State weather the following statements are true or false. Justify your answer.
a) Software development organizations which follow the iterative waterfall model for
product development provide maximum customer satisfaction.
b) The loops for spiral model are fixed.
Ans:
False: The iterative waterfall model is still a sequential and phased approach like the traditional
waterfall model. While it allows for some degree of iteration, it might not provide the maximum
customer satisfaction as it can be less adaptive to changing requirements during the development
process. Other iterative and incremental models like Agile or Scrum are often considered more
customer-centric due to their flexibility, continuous feedback loops, and early delivery of
functional increments.
Software Engineering (3161605) No: 210430116124
False: The Spiral model is characterized by loops or cycles, each representing a phase in the
software development process (e.g., planning, risk analysis, engineering, testing). However, the
number of loops is not fixed; it depends on the project's specific needs and complexities. The
model is inherently flexible, allowing for multiple iterations of the spiral to address evolving
requirements, incorporate feedback, and manage risks. The number of loops can vary based on
the project's unique circumstances.
Prototype model
Prototyping allows you to quickly test and validate design ideas, concepts, and features before
investing significant time and resources into full-scale development.
By creating a prototype, you can gather feedback from stakeholders and end-users early in the
process, helping to ensure that your final product meets their needs and expectations.
By applying Prototype model into our project, it can offer several benefits
– Identification of Design Flaws: Prototyping enables you to identify and address design
flaws, usability issues, and functionality gaps early in the development process. By testing
the prototype with real users, you can uncover any areas of confusion or frustration and
make necessary adjustments to improve the user experience.
– Reduced Development Costs: By identifying and addressing issues early in the process,
prototyping can help reduce the overall development costs. Fixing problems during the
design phase is typically less expensive than making changes during development or after
the product has been released.
– Faster Time-to-Market: Prototyping enables you to accelerate the development process and
bring your product to market faster. By quickly iterating on design ideas and features, you
can streamline the development cycle and reduce time spent on rework or revisions.
In summary, applying the Prototype model to our project can help us validate ideas, identify
design flaws, iterate quickly, reduce costs, accelerate time-to-market, enhance
communication, and mitigate risks.
Suggested Reference:
Rubrics 1 2 3 4 5 Total
Signature of Faculty:
Software Engineering (3161605) No: 210430116124
Practical – 2
AIM: Discuss the Project Management: Project Planning and Project Scheduling about your Project.
Objectives:
Theory:
Planning details for a portfolio-related website like "Personal Portfolio Website" can
encompass various aspects of its development and operation. Here are some key plan details:
1. Content Planning:
Plan the content structure of the website. This typically includes sections such as:
About Me/Bio: A brief introduction about yourself, your background, and your
expertise.
Portfolio: Showcase your work, projects, case studies, or accomplishments. Include
descriptions, images, and links where applicable.
Resume/CV: Provide a downloadable or accessible version of your resume or CV.
Services (if applicable): Outline the services you offer, along with pricing or package
details.
Testimonials: Include testimonials or reviews from past clients or employers.
Contact: Provide contact information or a contact form for inquiries or collaborations.
Blog (optional): If you plan to share insights, tutorials, or industry-related content,
consider including a blog section.
3. Technology Stack:
Choose the appropriate technology stack for building the website. Consider factors such as:
Content Management System (CMS): Decide whether to use a CMS like WordPress,
Joomla, or a static site generator like Jekyll or Hugo.
Frontend Framework: Select a frontend framework for designing the user interface (e.g.,
React, Vue.js).
Hosting: Choose a reliable hosting provider that meets your requirements for
performance, security, and scalability.
Domain Name: Register a domain name that reflects your personal brand or business.
Software Engineering (3161605) No: 210430116124
Quiz:
Lines of Code (LOC): Measures the size of the codebase, providing a rough estimate of
development effort.
Cyclomatic Complexity: Measures code complexity, helping to identify areas that may
require more effort for testing and maintenance.
Effort Estimation: Predicts human effort needed for development, relying on historical data
or estimation models like COCOMO.
Cost Estimation: Quantifies financial resources required for development and maintenance,
aiding in budget allocation.
Schedule Estimation: Predicts project completion time, based on historical data, team
experience, and productivity rates.
Defect Density: Measures defects relative to software size, assisting in assessing and
Software Engineering (3161605) No: 210430116124
Suggested Reference:
Rubrics 1 2 3 4 5 Total
Correct answer to
all questions
Signature of Faculty:
Software Engineering (3161605) No: 210430116124
Practical – 3
AIM: Prepare the Software Requirement Specification (SRS) document for selected project.
Objectives:
1. Learn how to provide a detailed overview of our software product, its parameters and goals.
2. Describes the project's target audience and its user interface, hardware and software requirements.
Theory:
A software requirements specification (SRS) is a document that is created when a detailed description of
all aspects of the software to be built must be specified before the project is to commence. It is important
to note that a formal SRS is not always written. In fact, there are many instances in which effort
expended on an SRS might be better spent in other software engineering activities. However, when
software is to be developed by a third party, when a lack of specification would create severe business
issues, or when a system is extremely complex or business critical, an SRS may be justified.
Prepared by
210430116123
210430116124
03-19-2024
Software Engineering (3161605) No: 210430116124
Table of Contents
Table of Contents 34
Revision History 34
1. Introduction 35
1.1 Purpose 35
1.2 Document Conventions 35
1.3 Intended Audience and Reading Suggestions 35
1.4 Product Scope 35
1.5 References 35
2. Overall Description 36
2.1 Product Perspective 36
2.2 Product Functions 36
2.3 User Classes and Characteristics 36
2.4 Operating Environment 36
2.5 Design and Implementation Constraints 36
2.6 User Documentation 36
2.7 Assumptions and Dependencies 37
3. External Interface Requirements 37
3.1 User Interfaces 37
3.2 Hardware Interfaces 37
3.3 Software Interfaces 37
3.4 Communications Interfaces 37
4. System Features 37
4.1 System Feature 1 37
4.2 System Feature 2 (and so on) 38
5. Other Nonfunctional Requirements 38
5.1 Performance Requirements 38
5.2 Safety Requirements 38
5.3 Security Requirements 38
5.4 Software Quality Attributes 38
5.5 Business Rules 38
6. Other Requirements 39
Appendix A: Glossary 39
Appendix B: Analysis Models 39
Appendix C: To Be Determined List 41
Revision History
Name Date Reason For Changes Version
Software Engineering (3161605) No: 210430116124
1. INTRODUCTION
1.1 Purpose
A portfolio website is a digital platform designed to showcase an individual's or a company's
work, achievements, skills, and capabilities. It serves as a comprehensive presentation of past
projects, creative endeavors, professional accomplishments, and relevant experiences. The primary
purpose of a portfolio website is to provide a centralized location where potential clients,
employers, collaborators, or other stakeholders can explore and evaluate the creator's expertise,
style, and suitability for specific opportunities.
1.5 References
Build a Portfolio Without Professional Experience Today (rumie.org)
How to create a portfolio (w3schools.com)
50 Best Portfolio Website Templates 2024 - Colorlib
Software Engineering (3161605) No: 210430116124
2. Overall Description
4. System Features
6. Other Requirements
Other requirements for a portfolio website may include compliance with data protection
regulations such as GDPR, ensuring user consent for data collection and processing. Additionally,
the website should adhere to industry standards for web design and accessibility, providing an
inclusive experience for all visitors, regardless of their abilities.
Appendix A: Glossary
1. Portfolio: A collection of work samples, projects, or achievements displayed to showcase skills,
expertise, and experience.
2. Homepage: The main landing page of a website, often containing an overview or introduction to
the individual and their work.
3. About Me: A section of the website dedicated to providing information about the individual,
including their background, skills, interests, and experiences.
4. Projects: A section showcasing the individual's past work or projects, including descriptions,
images, and links to further details.
5. Resume/CV: A digital version of the individual's resume or curriculum vitae, highlighting their
education, work experience, skills, and achievements.
6. Contact: A section or page with contact information, such as email address, phone number, and
possibly a contact form, allowing visitors to reach out to the individual.
7. Skills: A list or section detailing the skills and expertise possessed by the individual, often
categorized or ranked based on proficiency.
8. Testimonials: Quotes or feedback from clients, colleagues, or employers endorsing the
individual's skills, work ethic, or character.
9. Blog: An optional section where the individual can share thoughts, insights, or updates related to
their work, industry trends, or personal experiences.
10. Responsive Design: Design approach ensuring the website functions and looks good across
various devices and screen sizes, including desktops, tablets, and smartphones.
11. Navigation: The menu or system of links that allows visitors to navigate through different sections
or pages of the website.
Navigation: Evaluate the ease of navigation and intuitiveness of the website's structure and
menu system.
Responsiveness: Check if the website is optimized for various devices and screen sizes,
providing a seamless user experience.
Accessibility: Ensure that the website is accessible to users with disabilities, adhering to
WCAG (Web Content Accessibility Guidelines) standards.
Interactivity: Assess the level of interactivity and engagement offered by the website, such
as animations, hover effects, and interactive elements.
5. Functionality:
Contact Form: Check the functionality and ease of use of the contact form (if applicable).
Social Media Integration: Evaluate integration with social media platforms for easy
sharing and networking.
Portfolio Filtering/Sorting: If applicable, assess the ability to filter or sort portfolio items
based on categories, tags, or other criteria.
Search Functionality: Evaluate the presence and effectiveness of a search feature,
especially for websites with a large amount of content.
Performance: Assess the speed and loading times of the website, optimizing for fast
performance.
6. SEO (Search Engine Optimization):
Meta Tags: Evaluate the presence and optimization of meta tags, including title tags, meta
descriptions, and keywords.
Content Quality: Assess the quality, relevance, and uniqueness of the content for search
engine ranking.
Backlinks: Check for the presence of backlinks from reputable websites to improve search
engine visibility.
Site Structure: Evaluate the website's structure and hierarchy for optimal crawling and
indexing by search engines.
7. Analytics and Tracking:
Google Analytics: Assess the integration of Google Analytics or other analytics tools for
tracking website traffic, user behavior, and conversions.
Conversion Tracking: Evaluate the setup of goals and conversion tracking to measure the
effectiveness of the website in achieving its objectives.
8. Security:
SSL Certificate: Ensure the presence of an SSL certificate for secure communication
between the website and its visitors.
Data Privacy: Evaluate compliance with data privacy regulations, such as GDPR (General
Data Protection Regulation), especially if collecting personal information through contact
forms or analytics.
9. Maintenance and Updates:
Content Updates: Consider the ease of updating and adding new content to the website,
such as portfolio items or blog posts.
Software Updates: Evaluate the maintenance plan for keeping the website's software,
Software Engineering (3161605) No: 210430116124
Quiz:
Suggested Reference:
1. Ian Sommerville, Software engineering, Pearson education Asia
2. Roger S. Pressman, Software Engineering- A practitioner’s Approach, McGraw-Hill
International Editions
Rubrics 1 2 3 4 5 Total
Correct answer to
all questions
Signature of Faculty:
Software Engineering (3161605) No: 210430116124
Practical – 4
AIM: Draw the Data Flow Diagram for your selected Project.
Objectives:
To learn flow-oriented model through data flow diagrams.
Theory:
The DFD takes an input-process-output view of a system. That is, data objects flow into the
software, are transformed by processing elements, and resultant data objects flow out of the
software. The data flow diagram enables you to develop models of the information domain and
functional domain.
External
Name of the external entity is written inside the rectangle
entity
Data flow Data flow is represented by a directed arc with its data name
Software Engineering (3161605) No: 210430116124
Process: Processes are represented by circle. The name of the process is written into the circle.
The name of the process is usually given in such a way that represents the functionality of the
process. More detailed functionalities can be shown in the next Level if it is required. Usually it
is better to keep the number of processes less than 7. If we see that the number of processes
becomes more than 7 then we should combine some the processes to a single one to reduce the
number of processes and further decompose it to the next level .
External entity: External entities are only appeared in context diagram. External entities are
represented by a rectangle and the name of the external entity is written into the shape. These
send data to be processed and again receive the processed data.
Data store: Data stares are represented by a left-right open rectangle. Name of the data store is
written in between two horizontal lines of the open rectangle. Data stores are used as repositories
from which data can be flown in or flown out to or from a process.
Data flow: Data flows are shown as a directed edge between two components of a Data Flow
Diagram. Data can flow from external entity to process, data store to process, in between two
processes and vice-versa.
Background / Preparation:
Levels of DFD
DFD uses hierarchy to maintain transparency thus multilevel DFD’s can be created. Levels of DFD
are as follows:
0-level DFD: The primary external entities (boxes) produce information for use by the system
and consume information generated by the system
1-level DFD: It represents the main functions of the system and how they interact with each
other.
2-level DFD: It represents the processes within each function of the system and how they
interact with each other.
0 Level of DFD: zero-level Data Flow Diagram (DFD) for a personal portfolio website:
Display
Portfolio
Visitor (user)
1 Level of DFD: One-level Data Flow Diagram (DFD) for a personal portfolio website:
/*Display
Portfolio*/
Visitor (user)
Software Engineering (3161605) No: 210430116124
/*Request
Portfolio
Data*/
Server
(Backend)
/*Retrieve
Portfolio
Data*/
Database
(Projects, Contact Info, etc….)
2 Level of DFD: Two-level Data Flow Diagram (DFD) for a personal portfolio website:
/*Display
Portfolio*/
Visitor (user)
Software Engineering (3161605) No: 210430116124
/*Request
Portfolio
Data*/
Server
(Backend)
/*Retrieve
Portfolio
Data*/
Database
(Projects, Contact Info, etc….)
/*Display
Portfolio
Data*/
Visitor
(user)
Quiz:
1. In a data flow diagram, does an arrow represent a flow of control or something else?
Ans:
In a Data Flow Diagram (DFD), an arrow represents the flow of data between different
components of the system, rather than the flow of control. Arrows indicate the direction in which
data moves within the system, showing how data is passed from one component (such as a
process, external entity, or data store) to another.
Software Engineering (3161605) No: 210430116124
2. What is “information flow continuity” and how is it applied as a data flow diagram is refined?
Ans:
"information flow continuity" ensures that the flow of data remains consistent and unbroken as a
Data Flow Diagram (DFD) is refined. It means that data elements identified at higher levels of
abstraction are consistently represented and maintained at lower levels of detail. This principle
ensures consistency, traceability, and integration of data flows throughout the DFD refinement
process.
Suggested Reference:
Rubrics 1 2 3 4 5 Total
Correct answer to
all questions
Practical – 5
AIM: Draw the Entity-Relationship Diagram for your selected Project.
Objectives:
1. Identify entity sets, their attributes, and various relationships
2. Represent the data model through ER diagram
Theory:
Entity-Relationship model is used to represent a logical design of a database to be created. In ER
model, real world objects (or concepts) are abstracted as entities, and different possible
associations among them are modeled as relationships.
For example, student and school -- they are two entities. Students study in school. So, these two
entities are associated with a relationship "Studies in".
As another example, consider a system where some job runs every night, which updates the
database. Here, job and database could be two entities. They are associated with the
relationship "Updates".
Attributes of Entity
Attributes are the characteristics describing any entity belonging to an entity set. Any entity in a set
can be described by zero or more attributes.
For example, any student has got a name, age, an address. At any given time a student can study
only at one school. In the school he would have a roll number, and of course a grade in which he
studies. These data are the attributes of the entity set Student.
Keys
One or more attribute(s) of an entity set can be used to define the following keys:
Super key: One or more attributes, which when taken together, helps to uniquely identify an
entity in an entity set. For example, a school can have any number of students. However, if we
know grade and roll number, then we can uniquely identify a student in that school.
Software Engineering (3161605) No: 210430116124
Candidate key: It is a minimal subset of a super key. In other words, a super key might contain
extraneous attributes, which do not help in identifying an object uniquely. When such
attributes are removed, the key formed so is called a candidate key.
Primary key: A database might have more than one candidate key. Any candidate key chosen for a
particular implementation of the database is called a primary key.
Prime attribute: Any attribute taking part in a super key
Weak Entity
An entity set is said to be weak if it is dependent upon another entity set. A weak entity can't be
uniquely identified only by it's attributes. In other words, it doesn't have a super key.
For example, consider a company that allows employees to have travel allowance for their
immediate family. So, here we have two entity sets: employee and family, related by "Can claim
for". However, family doesn't have a super key. Existence of a family is entirely dependent on the
concerned employee. So, it is meaningful only with reference to employee.
ER model uses the "ISA" hierarchy to depict specialization (and thus, generalization).
Mapping Cardinalities
One of the main tasks of ER modeling is to associate different entity sets. Let's consider two entity
sets E1 and E2 associated by a relationship set R. Based on the number of entities in E1 and E2 are
associated with, we can have the following four type of mappings:
One to one: An entity in E1 is related to at most a single entity in E2, and vice versa
One to many: An entity in E1 could be related to zero or more entities in E2. Any entity in E2 could
be related to at most a single entity in E1.
Many to one: Zero or more number of entities in E1 could be associated to a single entity in E2.
However, an entity in E2 could be related to at most one entity in E1.
Many to many: Any number of entities could be related to any number of entities in E2, including
zero, and vice versa.
ER Diagram
From a given problem statement we identify the possible entity sets, their attributes, and
relationships among different entity sets. Once we have these information, we represent them
pictorially, called an entity-relationship (ER) diagram.
Software Engineering (3161605) No: 210430116124
Internships Projects
Address
Name
1 M
User Has Portfolio
Email_id
User_id
Mobile
Experience Education
Software Engineering (3161605) No: 210430116124
Quiz:
Rubrics 1 2 3 4 5 Total
Correct answer to
all questions
Signature of Faculty:
Software Engineering (3161605) No: 210430116124
Practical – 6
AIM: Draw Usecase Diagram for your selected Project .
Objectives:
1. To write different scenarios of the system’s execution.
2. To explore various UML use case diagram components to draw USECASE diagram.
Theory:
o A use case diagram is used to represent the dynamic behavior of a system. It encapsulates
the system's functionality by incorporating use cases, actors, and their relationships. It
models the tasks, services, and functions required by a system/subsystem of an
application. It depicts the high-level functionality of a system and also tells how the user
handles a system.
o Purpose of Use Case Diagrams
The main purpose of a use case diagram is to portray the dynamic aspect of a
system. It accumulates the system's requirement, which includes both internal as
well as external influences. It invokes persons, use cases, and several things that
invoke the actors and elements accountable for the implementation of use case
diagrams. It represents how an entity from the external environment can interact
with a part of the system.
Following are the purposes of a use case diagram given below:
1. It gathers the system's needs.
2. It depicts the external view of the system.
3. It recognizes the internal as well as external factors that influence the system.
4. It represents the interaction between the actors.
o In a use-case diagram, an actor is a user of the system (i.e. Something external to the
system; can be human or non-human) acting in a particular role.
o A use-case is a task which the actor needs to perform with the help of the system,
e.g., find details of a book or print a copy of a receipt in a bookshop.
o We can draw a box (with a label) around a set of use cases to denote the system
boundary, as on the previous slide (“library system”).
Inheritance can be used between actors to show that all use cases of one actor are
available to the other:
If several use cases include, as part of their functionality, another use case, we have a
special way to show this in a use-case diagram with an <<include>> relation.
Software Engineering (3161605) No: 210430116124
If a use-case has two or more significantly different outcomes, we can show this by
extending the use case to a main use case and one or more subsidiary cases.
Background / Preparation:
How to draw a Use Case diagram?
It is essential to analyze the whole system before starting with drawing a use case diagram, and
then the system's functionalities are found. And once every single functionality is identified, they
are then transformed into the use cases to be used in the use case diagram.
After that, we will enlist the actors that will interact with the system. The actors are the person or
a thing that invokes the functionality of a system. It may be a system or a private entity, such that
it requires an entity to be pertinent to the functionalities of the system to which it is going to
interact.
Once both the actors and use cases are enlisted, the relation between the actor and use case/
system is inspected. It identifies the no of times an actor communicates with the system.
Basically, an actor can interact multiple times with a use case or system at a particular instance
of time.
Following are some rules that must be followed while drawing a use case diagram:
1. A pertinent and meaningful name should be assigned to the actor or a use case of a
system.
2. The communication of an actor with a use case must be defined in an understandable
way.
3. Specified notations to be used as and when required.
4. The most significant interactions should be represented among the multiple no of
interactions between the use case and actors.
The purposes of use case diagrams can be as follows:
Software
User Interface
Authentication System
Search Engine
Order Management System
Payment Gateway
Content Management System
Notification System
Analytics System
Procedure / Steps:
o Developing Use Cases:
o Step One – Define the set of actors that will be involved in the story
Actors are people, devices, or other systems that use the system or product within
the context of the function and behavior that is to be described
Actors are anything that communicate with the system or product and that are
external to the system itself
o Step Two – Develop use cases, where each one answers a set of questions
Personal Portfolio
Website
//Manages
Software Engineering (3161605) No: 210430116124
User
//Registers, Logs in
Visitor
//Views
Portfolio Page
Quiz:
Include: Indicates that one use case includes another use case. It represents a relationship
where the behaviour of one-use case is always included in the behaviour of another use
case.
Extend: Indicates that one use case extends another use case. It represents a relationship
where the behaviour of one-use case can be optionally extended by another use case under
certain conditions.
Suggested Reference:
Rubrics 1 2 3 4 5 Total
Correct answer to
all questions
Signature of Faculty:
Software Engineering (3161605) No: 210430116124
Practical – 7
AIM: Solve the problem by applying basic COCOMO model.
Objectives:
1. Categorize projects using COCOMO, and estimate effort and development time
required for a project.
Theory
A software project is not just about writing a few hundred lines of source code to achieve a
particular objective. The scope of a software project is comparatively quite large, and such
a project could take several years to complete. However, the phrase "quite large" could
only give some (possibly vague) qualitative information. As in any other science and
engineering discipline, one would be interested to measure how complex a project is. One
of the major activities of the project planning phase, therefore, is to estimate various project
parameters in order to take proper decisions. Some important project parameters that are
estimated include:
Project size: What would be the size of the code written say, in number of lines, files,
modules?
Cost: How much would it cost to develop a software? A software may be just pieces of
code, but one has to pay to the managers, developers, and other project personnel.
Duration: How long would it be before the software is delivered to the clients?
Effort: How much effort from the team members would be required to create the
software?
In this experiment we will focus on two methods for estimating project metrics:
COCOMO
COCOMO (Constructive Cost Model) was proposed by Boehm. According to him, there
could be three categories of software projects: organic, semidetached, and embedded. The
classification is done considering the characteristics of the software, the development team
and environment. These product classes typically correspond to application, utility and
system programs, respectively. Data processing programs could be considered as
application programs. Compilers, linkers, are examples of utility programs. Operating
systems, real-time system programs are examples of system programs. One could easily
apprehend that it would take much more time and effort to develop an OS than an
attendance management system.
Organic: A development project is said to be of organic type, if The project deals with
developing a well understood application The development team is small The team
members have prior experience in working with similar types of projects
Semidetached: A development project can be categorized as semidetached type, if
The team consists of some experienced as well as inexperienced staff Team members may
have some experience on the type of system to be developed.
Embedded: Embedded type of development project is those, which Aims to develop a
software strongly related to machine hardware team size is usually large.
Boehm suggested that estimation of project parameters should be done through three
stages: Basic COCOMO, Intermediate COCOMO, and Complete COCOMO.
where
KDSI is the estimated size of the software expressed in Kilo Delivered Source
Instructions
a, b, c are constants determined by the category of software project
Effort denotes the total effort required for the software development, expressed in
person months (PMs)
Tdev denotes the estimated time required to develop the software (expressed in
months)
The value of the constants a, b, c are given below:
Software project a b c
Organic 2.4 1.05 0.38
Semi-detached 3.0 1.12 0.35
Embedded 3.6 1.20 0.32
COCOMO (Constructive Cost Model) is a well-known software cost estimation model developed
by Barry Boehm. It estimates the effort and cost required for software development based on
various factors. For a personal portfolio website, which is typically a small-scale project, we can
use the Basic COCOMO model, which estimates effort in person-months (PM).
The Basic COCOMO model uses the following equation to estimate effort (E) in person-months:
[ E = a * (KLOC)^b ]
Where:
Software Engineering (3161605) No: 210430116124
For a personal portfolio website, we can assume a small size, typically in the range of a few kilo
lines of code (KLOC). Let's assume ( KLOC = 5 ) for our example.
The constants ( a ) and ( b ) for the Basic COCOMO model are as follows:
[ E = 2.4 * (5)^{1.05} ]
Calculating this
Quiz:
1. Assume that the size of an organic type software product has been estimated to be 32,000 lines of
source code. Assume that the average salary of software engineers be Rs. 15,000/- per month. Determine
the effort required to develop the software product and the nominal development time.
Ans:
To determine the effort required to develop the software product and the nominal development time
using the Basic COCOMO model, we follow these steps:
1. Estimate Size: Given that the size of the software product is 32,000 lines of source code
(KLOC).
2. Apply Effort Equation: The effort estimation equation for Basic COCOMO is:
[ E = a * (KLOC)^b ]
Where:
- ( E ) = Effort in person-months (PM)
- ( a ) and ( b ) are constants determined by the type of project.
3. Select Constants: For organic type software projects, typical values for ( a ) and ( b ) are:
- ( a = 2.4 )
Software Engineering (3161605) No: 210430116124
- ( b = 1.05 )
[ E = 2.4 * (32)^{1.05} ]
So, the estimated effort required to develop the software product is approximately 25.178
person-months.
5. Calculate Nominal Development Time: The nominal development time is calculated using the
formula:
T = frac{E}{D} ]
Where:
- ( T ) = Development time in months
- ( E ) = Effort in person-months
- ( D ) = Number of developers working on the project
This estimation provides a rough estimate of the effort and time required to develop the software
product based on its size and type. Actual effort and time may vary depending on factors such as project
complexity, team experience, and development methodology.
Suggested Reference:
Rubrics 1 2 3 4 5 Total
Signature of Faculty:
Software Engineering (3161605) No: 210430116124
Practical – 8
AIM: Modeling UML Class Diagrams and Sequence diagrams.
Objectives:
Theory:
Class diagram
It is a graphical representation for describing a system in context of its static construction[1].
Class name
A class is uniquely identified in a system by its name. A textual string [2]is taken as class name. It
lies in the first compartment in class rectangle.
Attributes
Property shared by all instances of a class. It lies in the second compartment in class rectangle.
Operations
An execution of an action can be performed for any object of a class. It lies in the last compartment
in class rectangle.
Example
To build a structural model for an Educational Organization, ‘Course’ can be treated as a class which
contains attributes ‘courseName’ & ‘courseID’ with the operations ‘addCourse()’ &
‘removeCourse()’ allowed to be performed for any object to that class.
Software Engineering (3161605) No: 210430116124
Generalization/Specialization
It describes how one class is derived from another class. Derived class inherits the properties of its
parent class.
Geometric_Shapes is the class that describes how many sides a particular shape has. Triangle,
Quadrilateral and Pentagon are the classes that inherit the property of the Geometric_Shapes class.
So the relations among these classes are generalization. Now Equilateral_Triangle,
Isosceles_Triangle and Scalene_Triangle, all these three classes inherit the properties of Triangle
class as each one of them has three sides. So, these are specialization of Triangle class.
Relationships
Existing relationships in a system describe legitimate connections between the classes in that
system.
Association
It is an instance level relationship[i] that allows exchanging messages among the objects of both
ends of association. A simple straight line connecting two class boxes represent an association.
Software Engineering (3161605) No: 210430116124
We can give a name to association and also at the both end we may indicate role names and
multiplicity of the adjacent classes. Association may be unit-directional.
Example
Aggregation
It is a special form of association which describes a part-whole[i] relationship between a pair of
classes. It means, in a relationship, when a class holds some instances of related class, then that
relationship can be designed as an aggregation.
Example
For a supermarket in a city, each branch runs some of the departments they have. So, the relation
among the classes ‘Branch’ and ‘Department’ can be designed as an aggregation. In UML, it can
be shown as in the fig. below
Composition [i]
It is a strong from of aggregation which describes that whole is completely owns its part. Life
cycle of the part depends on the whole.
Example
Software Engineering (3161605) No: 210430116124
Let consider a shopping mall has several branches in different locations in a city. The existence
of branches completely depends on the shopping mall as if it is not exist any branch of it will no
longer exists in the city. This relation can be described as composition and can be shown as
below
Multiplicity
It describes how many numbers of instances of one class is related to the number of instances
of another class in an association.
Notation for different types of multiplicity:
o Sequence diagram:
The sequence diagram represents the flow of messages in the system and is also
termed as an event diagram. It helps in envisioning several dynamic scenarios. It
portrays the communication between any two lifelines as a time-ordered sequence
of events, such that these lifelines took part at the run time. In UML, the lifeline is
represented by a vertical bar, whereas the message flow is represented by a
vertical dotted line that extends across the bottom of the page. It incorporates the
iterations as well as branching.
o Purpose of a Sequence Diagram
Actor
A role played by an entity that interacts with the subject is called as an actor. It is out of
the scope of the system. It represents the role, which involves human users and external
hardware or subjects. An actor may or may not represent a physical entity, but it purely
depicts the role of an entity. Several distinct roles can be played by an actor or vice versa.
Activation
It is represented by a thin rectangle on the lifeline. It describes that time period in which
an operation is performed by an element, such that the top and the bottom of the rectangle
is associated with the initiation and the completion time, each respectively.
Software Engineering (3161605) No: 210430116124
Messages
The messages depict the interaction between the objects and are represented by arrows.
They are in the sequential order on the lifeline. The core of the sequence diagram is
formed by messages and lifelines.
Recursive Message: A self message sent for recursive purpose is called a recursive
message. In other words, it can be said that the recursive message is a special case of the
self message as it represents the recursive calls.
User Portfolio
User_id PortfolioId
Username User_id
Email Title
Password Description
Project Project
ProjectId ProjectId
PortfolioId PortfolioId
Title Title
Description Description
Link Link
Software Engineering (3161605) No: 210430116124
CreatePortfolio()
Portfolio Controller
User Website
CreatePortfolio()
CreateProject() CreateProject()
Project Portfolio Controller
Portfolio
Quiz:
1) In a sequence diagram, what does a box depict? What does a dashed line depict? What does a
arrow between boxes depict?
Ans:
In a sequence diagram:
Box: A box represents an object or actor within the system. It typically contains the name of
the object or actor, representing the role it plays in the sequence of interactions.
Arrow Between Boxes: An arrow between boxes depicts the direction of the message flow.
It indicates which object or actor is sending the message and which object or actor is
receiving the message in the sequence of interactions. The arrowhead points from the sender
to the receiver of the message.
Suggested Reference:
Rubrics 1 2 3 4 5 Total
Signature of Faculty:
Software Engineering (3161605) No: 210430116124
Practical – 9
AIM: Design the various test cases to perform the testing of the system and also perform the various
type of testing
Objectives: To explore and learn about different testing techniques and use them.
Theory:
o Software Testing is evaluation of the software against requirements gathered from users
and system specifications. Testing is conducted at the phase level in software
development life cycle or at module level in program code. Software testing comprises of
Validation and Verification.
o Software Validation
Validation is process of examining whether or not the software satisfies the user
requirements. It is carried out at the end of the SDLC. If the software matches
requirements for which it was made, it is validated.
Errors - These are actual coding mistakes made by developers. In addition, there is a
difference in output of software and desired output, is considered as an error.
Software Engineering (3161605) No: 210430116124
Fault - When error exists fault occurs. A fault, also known as a bug, is a result of an
error which can cause system to fail.
Failure - failure is said to be the inability of the system to perform the desired task.
Failure occurs when fault exists in the system.
o Testing Levels
Testing itself may be defined at various levels of SDLC. The testing process
runs parallel to software development. Before jumping on the next stage, a
stage is tested, validated and verified.
Testing separately is done just to make sure that there are no hidden bugs or
issues left in the software. Software is tested on various levels -
o Unit Testing
While coding, the programmer performs some tests on that unit of program to
know if it is error free. Testing is performed under white-box testing approach. Unit
testing helps developers decide that individual units of the program are working as
per requirement and are error free.
o Integration Testing
Even if the units of software are working fine individually, there is a need to find
out if the units if integrated together would also work without errors. For example,
argument passing and data updation etc.
o System Testing
The software is compiled as product and then it is tested as a whole.
Background / Preparation:
o Test management tool
o Test management tools are used to keep track of all the testing activity, fast data
analysis, manage manual and automation test cases, various environments, and
plan and maintain manual testing as well.
o Test management tools are used to keep track of all the testing activity, fast data analysis,
manage manual and automation test cases, various environments, and plan and maintain
manual testing as well.
o The test management tool is connected with the automation software. These types of
tools had various strategies for testing and multiple sets of features. Some of the test
management tools had capabilities to design the test case with the help of requirements.
Software Engineering (3161605) No: 210430116124
o It is best for test managing, scheduling, defect logging, tracking, and analysis.
o Some of the most commonly used test management tools are as follows:
o Quality center
o RTH
o Testpad
o Test Monitor
o PractiTest
o Test Cases:
The test case is defined as a group of conditions under which a tester determines
whether a software application is working as per the customer's requirements or
not. Test case designing includes preconditions, case name, input conditions, and
expected result. A test case is a first level action and derived from test scenarios.
Test Actual
Test Expected
case Test Steps Result Pass/Fail
Scenario Results
ID s
Description,
successfully.
Link
Provide invalid input during Clear error As
registration/login messages, expected
5 Error Handling Pass
appropriate
feedback.
Example
Expected
Test Actual
Test Results
Case Test Steps Result Pass/Fail
Scenario
ID s
User should
Check
1. Go to Login into As
Customer
TU01 site http://demo.guru99.c om application Expecte Pass
Login with
d
valid Data 2. Enter UserId
3. Enter Password
4. Click Submit
Quiz:
1 What elements of the WebApp can be “unit tested”? What types of tests must be conducted only
after the WebApp elements are integrated?
Ans:
Elements that can be unit tested:
Individual Functions or Methods
Components
Backend APIs
Data Models
Utility Functions
Tests conducted only after integration:
Integration Testing
End-to-End Testing
System Testing
User Acceptance Testing (UAT)
Performance Testing
Software Engineering (3161605) No: 210430116124
Security Testing
2 What is white box testing? What is the different coverage based testing strategies.
Ans:
White box testing examines the internal structure of software, targeting internal logic and
code paths. Coverage-based testing strategies ensure thorough testing by assessing different
aspects of code execution. Statement coverage verifies that each code statement is executed at
least once, while branch coverage assesses all possible decision outcomes. Path coverage tests
every possible route through the code, ensuring all sequences of statements are executed.
Condition coverage examines logical conditions, ensuring both true and false outcomes are
tested. Multiple condition coverage assesses compound conditions, and function coverage
tests all functions or methods. These strategies collectively validate the correctness and
reliability of the software.
Suggested Reference:
1 Software Testing: A Craftsman's Approach, by Paul C. Jorgensen, Third Edition
2 Software Engineering by Rajib Mall, PHI 2014
Rubrics 1 2 3 4 5 Total
Correct answer to
all questions
Signature of Faculty:
Software Engineering (3161605) No: 210430116124
Practical – 10
DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s
ability to deliver applications and services at high velocity: evolving and improving products at a faster
pace than organizations using traditional software development and infrastructure management
processes. This speed enables organizations to better serve their customers and compete more effectively
in the market.
In some DevOps models, quality assurance and security teams may also become more tightly integrated
with development and operations and throughout the application lifecycle. When security is the focus of
everyone on a DevOps team, this is sometimes referred to as DevSecOps.
These teams use practices to automate processes that historically have been manual and slow. They use
a technology stack and tooling which help them operate and evolve applications quickly and reliably.
These tools also help engineers independently accomplish tasks (for example, deploying code or
provisioning infrastructure) that normally would have required help from other teams, and this further
increases a team’s velocity.
Software Engineering (3161605) No: 210430116124
Software and the Internet have transformed the world and its industries, from shopping to entertainment
to banking. Software no longer merely supports a business; rather it becomes an integral component of
every part of a business. Companies interact with their customers through software delivered as online
services or applications and on all sorts of devices. They also use software to increase operational
efficiencies by transforming every part of the value chain, such as logistics, communications, and
operations. In a similar way that physical goods companies transformed how they design, build, and
deliver products using industrial automation throughout the 20th century, companies in today’s world
must transform how they build and deliver software.
DevOps Practices
Continuous Integration
Continuous integration is a software development practice where developers regularly merge their code
changes into a central repository, after which automated builds and tests are run. The key goals of
continuous integration are to find and address bugs quicker, improve software quality, and reduce the
time it takes to validate and release new software updates.
Continuous Delivery
Continuous delivery is a software development practice where code changes are automatically built,
tested, and prepared for a release to production. It expands upon continuous integration by deploying all
code changes to a testing environment and/or a production environment after the build stage. When
continuous delivery is implemented properly, developers will always have a deployment-ready build
artifact that has passed through a standardized test process.
Microservices
The microservices architecture is a design approach to build a single application as a set of small
services. Each service runs in its own process and communicates with other services through a well-
defined interface using a lightweight mechanism, typically an HTTP-based application programming
interface (API). Microservices are built around business capabilities; each service is scoped to a single
purpose. You can use different frameworks or programming languages to write microservices and
deploy them independently, as a single service, or as a group of services.
Infrastructure as Code
Infrastructure as code is a practice in which infrastructure is provisioned and managed using code and
software development techniques, such as version control and continuous integration. The cloud’s API-
Software Engineering (3161605) No: 210430116124
driven model enables developers and system administrators to interact with infrastructure
programmatically, and at scale, instead of needing to manually set up and configure resources. Thus,
engineers can interface with infrastructure using code-based tools and treat infrastructure in a manner
similar to how they treat application code. Because they are defined by code, infrastructure and servers
can quickly be deployed using standardized patterns, updated with the latest patches and versions, or
duplicated in repeatable ways.
Configuration Management
Developers and system administrators use code to automate operating system and host configuration,
operational tasks, and more. The use of code makes configuration changes repeatable and standardized.
It frees developers and systems administrators from manually configuring operating systems, system
applications, or server software.
Policy as Code
With infrastructure and its configuration codified with the cloud, organizations can monitor and enforce
compliance dynamically and at scale. Infrastructure that is described by code can thus be tracked,
validated, and reconfigured in an automated way. This makes it easier for organizations to govern
changes over resources and ensure that security measures are properly enforced in a distributed manner
(e.g. information security or compliance with PCI-DSS or HIPAA). This allows teams within an
organization to move at higher velocity since non-compliant resources can be automatically flagged for
further investigation or even automatically brought back into compliance.
DevOps Tools
The DevOps model relies on effective tooling to help teams rapidly and reliably deploy and
innovate for their customers. These tools automate manual tasks, help teams manage complex
environments at scale, and keep engineers in control of the high velocity that is enabled by
DevOps. AWS provides services that are designed for DevOps and that are built first for use with
the AWS cloud. These services help you use the DevOps practices described above.
Quiz:
1 What are the challenges with DevOps implementation?
Ans:
The challenges of DevOps implementation include:
Cultural resistance
Toolchain complexity
Skill gaps
Legacy system integration
Security concerns
Compliance requirements
Communication and collaboration issues
Scalability challenges
Measuring success effectively
Continuous improvement culture adoption.
2 What is DevOps? How it works? What are the DevOps principles & best practices?
Ans:
DevOps is a collaborative approach that combines development (Dev) and operations (Ops) to
streamline software delivery. It works through automation, continuous integration/deployment,
infrastructure as code, and a culture of collaboration and continuous improvement.
Key principles and best practices include automation, infrastructure as code, microservices
architecture, CI/CD pipelines, monitoring, collaborative culture, feedback loops, and security
integration. These practices aim to enhance speed, quality, and efficiency in software development
and delivery.
1. Continuous Business Planning: This involves aligning the development and operations
teams with the overall business objectives. It emphasizes the need for continuous planning and
adaptation to changing business requirements throughout the software delivery process.
Software Engineering (3161605) No: 210430116124
3. Continuous Testing: Shifts testing left in the development process, integrating testing
activities early and often. This ensures that defects are identified and addressed early, reducing
the risk of costly issues later in the development lifecycle.
4. Continuous Integration: Involves the frequent integration of code changes into a shared
repository, where automated tests are run to validate the changes. Continuous integration helps
detect integration issues early and ensures that the codebase remains in a deployable state at all
times.
7. Continuous Feedback & Optimization: Establishes feedback loops throughout the DevOps
lifecycle to gather insights from users, testing, monitoring, and other sources. Continuous
feedback helps identify areas for improvement and informs iterative optimization efforts.
Suggested Reference:
1 Deepak Gaikwad, Viral Thakkar, DevOps Tools from Practitioner’s ViewPoint, Wiley.
2 The DevOps Handbook - Gene Kim et. al.
References used by the students:
Software Engineering (3161605) No: 210430116124
Rubrics 1 2 3 4 5 Total
Signature of Faculty: