Professional Documents
Culture Documents
Institute of Technology: Subject: Software Engineering Lab
Institute of Technology: Subject: Software Engineering Lab
Institute of Technology: Subject: Software Engineering Lab
INSTITUTE OF TECHNOLOGY
1
INDEX
2
AI Diet Consultant
1. Problem statement
Artificial dietitian project is an application with artificial intelligence about human diets. It acts
as a diet consultant similar to a real dietitian. This system acts in a similar way as that of a
dietitian. A person in order to know his/her diet plan needs to give some information to the
dietitian such as its body type, weight, height and working hour details, along with the target
goal they want to reach. Similar way this system also provides the diet plan according to the
information entered by the user.
The system asks all this data from the user and processes it to provide the diet plan to the user.
Thus the user does not need to visit any dietitian which also saves time and the user can get the
required diet plan in just a click. The project also has a login page where in the user is required to
register. This project requires internet access and thus there is a disadvantage of server failure.
The system will give more accurate results as it accepts the data entered by the user and
processes it depending on some metrics already known to the application on the basis of which a
diet plan is generated and ask the user if the user accepts the diet plan. If not accepted the system
may also give and alternative diet plan.
a. Requirement analysis:
Qualities of SRS:
Correct: User review is used to ensure the correctness of requirements stated in the
SRS.
Unambiguous: Every requirement has exactly one interpretation.
Complete: Completeness of SRS indicates every sense of completion including the
numbering of all the pages, resolving the problem to be determined parts to as much
extent as possible as well as covering all the functional and non-functional
requirements properly.
Ranked for importance and/or stability: There should a criterion to classify the
requirements as less or more important or more specifically as desirable or essential.
An identifier mark can be used with every requirement to indicate its rank or stability.
Traceable: One should be able to trace a requirement to design component and then to
code segment in the program.
AI Diet consultant is an important application, that can be used to get a diet plan suggested to the
user, which is done by taking some personal data such as current weight and height and the target the user
wants to reach. This can be a revolutionary app since we are using AI.
PURPOSE
The purpose of this project, is to provide the user with a diet plan. This diet plan is
formulated with the inputs taken from the user. To ensure users convenience, we also made it
possible for the user to remake the plan according to his needs and availability. By following the
diet plan they can reach their ideal fitness level.
PROJECT SCOPE
AI Diet consultant is an important application, that can be used to get a diet suggested to the user,
which is done by taking some personal data such as current weight and height and the target the
user wants to reach.
INTENDED AUDIENCE
This application is for people who intend to get into a good shape and the best shape and
want to lead a healthy life eating healthy meals. This app makes it possible for them to become
healthy and fit.
PRODUCT PERSPECTIVE
This system will use the input given by the user to prepare a meal plan. If the user like it he
can follow the plan given to him. Otherwise the user can remake the meal diet according to his
convenience, without jeopardizing the end goal
MODULES
Login
Enter Details
Calculation
Result
1. Login : This project has a login page which allows only the registered user to login
and thereby preventing unauthorized access.
2. Enter Details: The user needs to enter its details such as body type, height, weight.
3. Calculation: On the basis of details entered by the user, the system process it based on
some metrics
4. Result: After the processing, the result that is the diet plan is displayed to the user.
FUNCTIONAL REQUIREMENTS
Login and the Enter details are the must fill requirements for the app to work. Without
those the user cannot get the meal plan.
Software requirements
Windows XP, Windows 7(ultimate, enterprise), Windows 10
HTML, CSS, JS
3. DESIGN:
Design document for AI Diet Consultant
OVERVIEW:
There are a lot of individuals who struggle to get on a proper diet and reach their goals in fitness.
They try different things but most of the times they don’t work out so well. The system we
created will help them get the desired diet and reach their fitness goal.
EXISTING SYSTEM:
Dietitians provide diets according to individual needs. For some it works, for some it doesn’t.
Some people may not feel comfortable visiting a dietitian, some may not be able to afford the
consulting fee. This makes the existing system not so reliable.
PROPOSED SYSTEM:
The proposed System will take the required details like height, weight calculate the current body
mass index(BMI) and asks for the users requirement, i.e. the goal weight, and BMI. The system
create a diet according to the users interest and gives him the result. If he want he can remake the
diet plan.
Requirements Modeling :
Analysis Model :
Design Diagrams:
Use Case Diagram
Data Model
Class Model
Activity Diagram
SwimLane Diagram
Use Case Diagram For Online Survey System:
A UML use case diagram is the primary form of system /software requirements for
a new software program under developed. Use cases specify the expected behavior, and
not the exact method of making it happen. Use cases once specified can be denoted both
textual and visual representation. A key concept of use case modeling is that it helps us
design a system from the end user's perspective. It is an effective technique for
communicating system behavior in the user's terms by specifying all externally visible
system behavior. Use case diagrams are typically developed in the early stage of
development and people often apply use case modeling for the following purposes:
.
Data Flow Diagram:
DFD graphically representing the functions, or processes, which capture, manipulate,
store, and distribute data between a system and its environment and between components
of a system. The visual representation makes it a good communication tool between User
and System designer. DFD describes the processes that are involved in a system to
transfer data from the input to the file storage and reports generation. Data flow diagrams
can be divided into logical and physical. The logical data flow diagram describes flow of
data through a system to perform certain functionality of a business. The physical data
flow diagram describes the implementation of the logical data flow. DFD has often been
used due to the following reasons:
Logical information flow of the system
Determination of physical system construction requirements
Simplicity of notation
Establishment of manual and automated systems requirement.
CASE TOOLS:
CASE stands for Computer Aided Software Engineering. It means , development and
maintenance of software projects with help of various automated software tools.
CASE tools are set of software application programs, which are used to automate SDLC
activities. CASE tools are used by software project managers, analysts and engineers to
develop software system.
There are number of CASE tools available to simplify various stages of Software
Development Life Cycle such as Analysis tools, Design tools, Project management tools,
Database Management tools, Documentation tools are to name a few.
Use of CASE tools accelerates the development of project to produce desired result and
helps to uncover flaws before moving ahead with next stage in software development.
Components of CASE Tools:
CASE tools can be broadly divided into the following parts based on their use at a
particular SDLC stage:
Central Repository - CASE tools require a central repository, which can serve as a source
of common, integrated and consistent information. Central repository is a central place of
storage where product specifications , requirement documents , related reports and diagrams
, other useful information regarding management is stored. Central repository also serves as
data dictionary.
Upper Case Tools - Upper CASE tools are used in planning, analysis and
design stages of SDLC.
Lower Case Tools - Lower CASE tools are used in implementation, testing
and maintenance.
Integrated Case Tools - Integrated CASE tools are helpful in all the stages of
SDLC, from Requirement gathering to Testing and documentation.
CASE tools can be grouped together if they have similar functionality, process activities and
capability of getting integrated with other tools.
Scope of Case Tools:
The scope of CASE tools goes throughout the SDLC.
Case Tools Types:
Now we briefly go through various CASE tools
Diagram tools :
These tools are used to represent system components, data and control flow among various
software components and system structure in a graphical form. For example, Flow Chart
Maker tool for creating state-of-the-art flowcharts.
Documentation Tools :
Documentation in a software project starts prior to the software process, goes throughout all
phases of SDLC and after the completion of the project.
Documentation tools generate documents for technical users and end users. Technical users
are mostly in-house professionals of the development team who refer to system manual,
reference manual, training manual, installation manuals etc. The end user documents
describe the functioning and how-to of the system such as user manual. For example,
Doxygen, DrExplain, Adobe RoboHelp for documentation.
Analysis Tools :
These tools help to gather requirements, automatically check for any inconsistency,
inaccuracy in the diagrams, data redundancies or erroneous omissions. For example, Accept
360, Accompa, Case Complete for requirement analysis, Visible Analyst for total analysis.
Design Tools :
These tools help software designers to design the block structure of the software, which
may further be broken down in smaller modules using refinement techniques. These tools
provide detailing of each module and interconnections among modules. For example,
Animated Software Design.
CASE tools help in this by automatic tracking, version management and release
management. For example , Fossil , Git , AccuREV.
Programming Tools :
These tools consist of programming environments like IDE (Integrated Development
Environment), in-built modules library and simulation tools. These tools provide
comprehensive aid in building software product and include features for simulation and
testing. For example, Scope to search code in C, Eclipse.
Prototyping Tools :
Software prototype is simulated version of the intended software product. Prototype
provides initial look and feel of the product and simulates few aspects of actual product.
Prototyping CASE tools essentially come with graphical libraries. They can create
hardware independent user interfaces and design. These tools help us to build rapid
prototypes based on existing information. In addition, they provide simulation of software
prototype. For example, Serena prototype composer, Mock-up Builder.
3.TESTING:
Documentation for software testing helps in estimating the testing effort required, test
coverage, requirement tracking or tracing, etc. This section describes some of the
commonly used documented artifacts related to software testing such as:
Test Plan
Test Scenario
Test Case
Traceability Matrix
Test Plan :
A test plan outlines the strategy that will be used to test an application, the resources that
will be used, the test environment in which testing will be performed, and the limitations of
the testing and the schedule of testing activities. Typically, the Quality Assurance Team
Lead will be responsible for writing a Test Plan.
A test plan includes the following:
Test Scenario :
It is a one-line statement that notifies what area in the application will be tested. Test
scenarios are used to ensure that all process flows are tested from end to end. A particular
area of an application can has as little as one test scenario to a few hundred scenarios
depending on the magnitude and complexity of the application.
The terms 'test scenario' and 'test cases' are used interchangeably, however a test scenario
has several steps, whereas a test case has a single step. Viewed from this perspective, test
scenarios are test cases, but they include several test cases and the sequence that they
should be executed. Apart from this, each test is dependent on the output from the previous
test.
Test Case :
Test cases involve a set of steps, conditions, and inputs that can be used while performing
testing tasks. The main intent of this activity is to ensure whether a software passes or fails
in terms of its functionality and other aspects. There are many types of test cases such as
functional, negative, error, logical test cases, physical test cases, UI test cases, etc.
Furthermore, test cases are written to keep track of the testing coverage of a software.
Generally, there are no formal templates that can be used during test case writing. However,
the following components are always available and included in every test case:
Test case ID
Product module
Product version
Revision history
Purpose
Assumptions
Pre-conditions
Steps
Expected Outcome
Actual Outcome
Post-conditions
Many test cases can be derived from a single test scenario. In addition, sometimes multiple
test cases are written for a single software which are collectively known as test suites.
Traceability Matrix :
Traceability Matrix (also known as Requirement Traceability Matrix - RTM) is a table that
is used to trace the requirements during the Software Development Life Cycle. It can be
used for forward tracing (i.e. from Requirements to Design or Coding) or backward (i.e.
from Coding to Requirements). There are many user-defined templates for RTM.
Each requirement in the RTM document is linked with its associated test case so that testing
can be done as per the mentioned requirements. Furthermore, Bug ID is also included and
linked with its associated requirements and test case. The main goals for this matrix are:
Unit testing is a level of software testing where individual units/ components of a software
are tested. The purpose is to validate that each unit of the software performs as designed. A
unit is the smallest testable part of any software. It usually has one or a few inputs and
usually a single output. In procedural programming, a unit may be an individual program,
function, procedure, etc. In object-oriented programming, the smallest unit is a method,
which may belong to a base/ super class, abstract class or derived/ child class.(Some treat a
module of an application as a unit. This is to be discouraged as there will probably be many
individual units within that module.) Unit testing frameworks, drivers, stubs, and mock/
fake objects are used to assist in unit testing.
Unit Testing Benefits:
Statement Coverage
Decision Coverage
Branch Coverage UNIT TESTING SCREENSHOTS:
Integration testing is a level of software testing where individual units are combined and
tested as a group. The purpose of this level of testing is to expose faults in the interaction
between integrated units. Test drivers and test stubs are used to assist in Integration
Testing . Definition by ISTQB :
ANALOGY:
During the process of manufacturing a ballpoint pen, the cap, the body, the tail and clip,
the ink cartridge and the ballpoint are produced separately and unit tested separately.
When two or more units are ready, they are assembled and Integration Testing is
performed. For example , whether the cap fits into the body or not.
METHOD:
Any of Black Box Testing , White Box Testing and Gray Box Testing methods can be
used. Normally, the method depends on your definition of ‘unit’.
TASKS :
Integration Testing is the second level of testing performed after Unit Testing and
before System Testing Developers themselves or independent testers perform Integration
Testing. Integration testing is a level of software testing where individual units are
combined and tested as a group. The purpose of this level of testing is to expose faults in
the interaction between integrated units. Test drivers and test stubs are used to assist in
integration testing. helps in better test coverage too and improves test gaps. Tests are more
reliable and easy to isolate the failures. Majorly helps to build real-time use cases during
the end to end testing
APPROACHES:
Big Bang is an approach to Integration Testing where all or most of the units are
combined together and tested at one go. This approach is taken when the testing
team receives the entire software in a bundle. So what is the difference between
Big Bang Integration Testing and System Testing? Well, the former tests only the
interactions between the units while the latter tests the entire system.
Top Down is an approach to Integration Testing where top-level units are tested
first and lower level units are tested step by step after that. This approach is taken
when top-down development approach is followed. Test Stubs are needed to
simulate lower level units which may not be available during the initial phases.
Bottom-up testing is an approach to integrated testing where the lowest level
components are tested first, then used to facilitate the testing of higher level
components. The process is repeated until the component at the top of the
hierarchy is tested. All the bottom or low-level modules, procedures or functions
are integrated and then tested. After the integration testing of lower level
integrated modules, the next level of modules will be formed and can be used for
integration testing. This approach is helpful only when all or most of the modules
of the same development level are ready. This method also helps to determine the
levels of software developed and makes it easier to report testing progress in the
form of a percentage.
Sandwich/Hybrid is an approach to Integration Testing which is a combination of Top
Down and Bottom Up approaches.
TIPS:
Ensure that you have a proper Detail Design document where interactions
between each unit are clearly defined. In fact, you will not be able to perform
Integration Testing without this information.
Ensure that you have a robust Software Configuration Management system in
place. Or else, you will have a tough time tracking the right version of each unit,
especially if the number of units to be integrated is huge.
Make sure that each unit is unit tested before you start Integration Testing.
As far as possible, automate your tests, especially when you use the Top Down or
Bottom Up approach, since regression testing is important each time you integrate
a unit, and manual regression testing can be inefficient.
WHITE-BOX AND BLACK-BOX TESTING TECNIQUES :
White-Box Testing:
White-box tests are used to examine the procedural details. It checks the logical paths by
test case. It can also check the conditions, loops used in the software coding. It checks that
loops are working correctly on defined boundary value.
White-box testing sometimes called glass-box testing, is a test case design method that
users the control structure of the procedural design to drive the test case. Always we are
thinking that there is no necessary to execute or checks the loops and conditions. And so
large number of errors is uncovered . With using white-box testing methods, we have
checked that; all independent paths within a function have been executed at least once, all
logical decisions on their true and false side, A11 loops working correctly at their boundary
values and within their specified conditions.
In our coding we test that all the loops work truly in each module. The one technique of
white-box testing is basis path testing. It contains two parts; one is flow graph notation and
the second is cyclometer complexity. In flow graph notation we are checking logical control
of flow. By using cyclometer complexity, we find complexity of our project structure.
Levels Applicable To
White Box Testing method is applicable to the following levels of software testing:
Advantages:
Testing can be commenced at an earlier stage. One need not wait for the GUI
to be available.
Testing is more thorough, with the possibility of covering most paths.
Disadvantages :
Since tests can be very complex, highly skilled resources are required,
with a thorough knowledge of programming and implementation.
Test script maintenance can be a burden if the implementation changes too
frequently.
Since this method of testing is closely tied to the application being tested,
tools to cater to every kind of implementation/platform may not be readily
available.
Black-Box Testing:
Black-box tests are used to demonstrate that software functions are operational, that input is
properly accepted and output is correctly produced, and that integrity of external
information is maintained.
Black-box testing focuses on the functional requirements of the software. That is black-box
testing enables the software engineer to drive sets of input conditions that will fully exercise
all functional Requirements for the program. Black-box testing is not an alternative to
white- box testing techniques. Rather, it is a complementary approach that is likely to
uncover a different class of errors than white-box methods.
We use in our coding to find errors in the following categories:
Unlike white-box testing, which is performed earlier in the testing process, black-box
testing tends to be applied during later stages of testing. Because black-box testing
purposely disregards control structure, attention is focused on the information domain.
By applying black-box techniques, we derive a set of test cases that satisfy following
criteria test cases that reduce, by a count that is greater than one, the number of additional
test cases must be designed to achieve reasonable testing.
Bug Regression:
Bug Regression will be a central tenant throughout all testing phases. When a Severity one
bug fails regression, adopters testing team should also put out an immediate email to
development. The Test Lead will be responsible for tracking and reporting to development
and product management the status of regression testing.
Programmers think that Integration Testing will catch all errors and do not execute the unit
test. Once units are integrated, very simple errors which could have very easily found and
fixed in unit tested take a very long time to be traced and fixed.