Project Report1
Project Report1
COLLEGE, GHAZIABAD
A
PROJECT REPORT
ON
ACKNOWLEDGEMENT
CERTIFICATE
INTRODUCTION
Basic Introduction of
Project Objective & Scope
Work Flow
Advantages & Disadvantages
Technical Details
SYSTEM ANALYSIS
Preliminary Analysis & Information
Gathering Input/Output
Feasibility Study
System Requirement
Specification Cost Estimation
Project Scheduling
SYSTEM DESIGN
Project Planning
Modules
Flowcharts
Data Flow Diagram (DFD)
E-R Diagram
Screen Shots
TESTING
REFERENCES
ACKNOWLEDGEMENT
Primarily I would like to thank my faculty MRS. PRINCY JAIN AND MRS.
NEERU JAIN whose valuable guidance has been the once that helped me patch
me this project and make it full proof success. Their suggestions and instructions
have served as the major contributor towards the completion of the project.
Then I would like to thank my parents and friends who have helped me with their
valuable suggestions and guidance has been helpful in various phases of the
completion of the project.
Last but not the least I would like to thank my classmates who have helped me a
lot.
Name of students:
Harpreet Kaur saluja
Ayushi yadav
CERITFICATE
This is certify that the project report entitled “FURNITURE WEBSITE " by
Harpreet Kaur and ayushi yadav during the academic year 2021-2022. The data
sources have been fully acknowledged. I wish his success in all his future
endeavours.
Signature: Signature:
Name: Name:
Date: Date:
Signature: Signature:
Name: Name:
Date: Date:
TITLE OF THE PROJECT
“FURNITURE WEBSITE ”
INTRODUCTOIN
The system reduces much of human efforts in calculating bill especially for
huge products.
Save money and resources of organization and exclude of use of paper or
sheets in making bill.
It can detect the product information and their price instantaneously using
RFID technology.
Save time.
It provides accuracy and faultless in billing calculations.
The system is designed having attractive GUI and with detailed description.
It is flexible and user-friendly.
It also notified customers through sending an electronic bill via email.
DISADVANTAGES
Some customers still prefer to go to the salon when choosing furniture. Buyers are attracted by
the fact that they can see the furniture live, sit in an armchair – or try out the bed. Of course,
there are also conversations with friendly sellers – that some people consider necessary for the
right choice of furniture. On the other hand, some people consider going to the salon, having long
conversations with the seller and crowds – are too old-fashioned ways of buying, which they want
to avoid. Besides, coming to the salon creates a certain pressure for some customers – so they
can’t think cold-headed about their decision. That’s why more and more of them are turning to
online shopping – with which they can forget about the crowds and all the pressures.
TECHNICAL DETAILS
Software Requirement:
OPERATING SYSTEM WINDOWS 10
COMPILER NOTEPAD
LANGUAGE HTML
Hardware Requirement:
PROCESSOR INTEL I5
RAM 4GB
SYSTEM ANALYSIS
ANALYSIS OF PRESENT SYSTEM
Types of feasibility:-
1.Technical Feasibility
2.Operational Feasibility
3.Economic Feasibility
4.Social Feasibility
SOCIAL FEASIBILITY
1. Waterfall Model
2. Incremental Process Model
• Iterative Enhancement Model
• The Rapid Application Development (RAD) Model
3. Evolutionary Process Model
• Spiral Model
• Prototyping Model
WATERFALL MODEL
This approach allows avoiding many mistakes that may appear because
of insufficient control over the project. However, it results in pervasive
documentation development. It is beneficial to the developers who may
be working with the product in the future, but it takes a long time to
write everything down.
Implementation: With input from the input design, the system is first
developed in small programs called units, which are integrated in the
text phase. Each unit is developed and tested for its functionality,
which is referred to as Unit Testing.
The model of the iterative model life cycle did not begin with whole
stipulations. Particularly in the model, the development starts by
designating and executing the only component of the software when
analyzed to recognize later specifications. Furthermore, in the iterative
model, the process of iterative begins with a simplistic execution of a
little collection of the software requisite, which iteratively improves the
developing variants until the whole system is executed and prepared to
be redistributed. Every Iterative model release is developed in a
particular and established period of time known as iteration.
Rapid Application Development (RAD) Model
RAD projects follow iterative and incremental model and have small
teams comprising of developers, domain experts, customer
representatives and other IT resources working progressively on their
component or prototype.
The most important aspect for this model to be successful is to make
sure that the prototypes developed are reusable.
You can break down the process in a few ways, but in general, RAD
follows four main phases.
It is important that everyone has the opportunity to evaluate the goals and
expectations for the project and weigh in. By getting approval from each key
stakeholder’s and the developer, teams can avoid miscommunication and costly
change orders down the road.
Evolution model is based on the initial implementation will result in the user
comments it can be repaired through many versions until an adequate system can
be developed. In addition to having separate activities, this model provide
feedback to developers.
The evolution model divides the development cycle into smaller, "Incremental
Waterfall Model" in which users are able to get access to the product at the end
of each cycle.
The users provide feedback on the product for planning stage of the next cycle
and the development team responds, often by changing the product, plans or
process.
1.SPIRAL MODEL
1. Planning :-
2. Risk Analysis :-
3. Development :-
4. Evaluation :-
2. Evolutionary Prototyping
An evolutionary prototype differs from the traditional notion of a software
prototype; an evolutionary prototype is a functional piece of software, not
just a simulation. Evolutionary prototyping starts with a product that meets
only the system requirements that are understood. It won’t do everything the
customer requires, but it makes a good starting point. New features and
functions can be added as those requirements become clear to the
stakeholders. That’s the “evolutionary” nature of this prototype.
3. Incremental Prototyping
Incremental prototyping is useful for enterprise software that has many modules
and components which may be loosely related to one another. In incremental
prototyping, separate small prototypes are built in parallel. The individual
prototypes are evaluated and refined separately, and then merged into a
comprehensive whole, which can then be evaluated for consistency in look,
feel, behavior, and terminology.
4. Extreme Prototyping
This type of prototyping model is mainly used for web applications. It is divided into
three phases-
_____________________________________________________
BASIC REQUIREMENT IDENTIFICATION
HISTORY OF COCOMO
The constructive cost model was developed by Barry W. Boehm in the
late 1970sand published in Boehm's 1981 book software engineering
economics as a model for estimating effort, cost, and schedule for
software projects. It drew on a study of 63 projects at TRW Aerospace
where Boehm was Director of Software Research and Technology. The
study examined projects ranging in size from 2,000 to 100,000 lines of
code, and programming languages ranging from assembly to PL/I. These
projects were based on the waterfall model of software development
which was the prevalent software development process in 1981.
References to this model typically call it COCOMO 81. In 1995
COCOMO
II was developed and finally published in 2000 in the book Software Cost
Estimation with COCOMO II.COCOMO II is the successor of COCOMO
81 and is claimed to be better suited for estimating modern software
development projects; providing support for more recent software
development processes and was tuned using a larger database of 161
projects. The need for the new model came as software development
technology moved from mainframe and overnight batch processing to
desktop development, code reusability, and the use of off-the-shelf
software components.
• KLOC = the size of the code for the project in Kilo lines of code.
1. Product attributes -
Required software reliability extent
2. Hardware attributes -
Run-time performance constraints
3. Personnel attributes -
Analyst capability
Applications experience
4. Project attributes -
Use of software tools
methods
Required development schedule
• Within cost.
• Within the time constraints
• To a specific standard of quality
SYSTEM DESIGN
PROJECT PLANNING
Terminator
The terminator symbol represents the starting or ending point of the
system.
Process
A box indicates some particular operation.
Decision
A diamond represents a decision or branching point. Lines coming out
from the diamond indicates different possible situations, leading to
different subprocesses.
Input/Output
It represents information entering or leaving the system. An input might
be an order from a customer. Output can be a product to be delivered.
Flow
Lines represent the flow of the sequence and direction of a process.
DATA FLOW DIAGRAM (DFD)
E-R DIAGRAM
SCREEN SHOTS
TESTING
Software testing is the act of examining the artifacts and the behaviour
of the software under test by validation and verification. Software testing
can also provide an objective, independent view of the software to allow
the business to appreciate and understand the risks of software
implementation. Test techniques include, but not necessarily limited to:
• analysing the product requirements for completeness and correctness
in various contexts like industry perspective, business perspective,
feasibility and viability of implementation, usability, performance,
security, infrastructure considerations, etc.
• reviewing the product architecture and the overall design of the
product
• working with product developers on improvement in coding
techniques, design patterns, tests that can be written as part of code
based on various techniques like boundary conditions, etc.
• executing a program or application with the intent of examining
behaviour
• reviewing the deployment infrastructure and associated scripts &
automation
• take part in production activities by using monitoring & observability
techniques
Testing approach
Static, dynamic, and passive Testing: There are many approaches
available in software testing. Reviews, walkthroughs, or inspections are
referred to as static testing, whereas executing programmed code with a
given set of test cases is referred to as dynamic testing.
Static testing is often implicit, like proofreading, plus when
programming tools/text editors check source code structure or compilers
(pre-compilers) check syntax and data flow as static program analysis.
Dynamic testing takes place when the program itself is run. Dynamic
testing may begin before the program is 100% complete in order to test
particular sections of code and are applied to discrete functions or
modules. Typical techniques for these are either using stubs/drivers or
execution from a debugger environment. Static testing involves
verification, whereas dynamic testing also involves validation.
Passive testing means verifying the system behaviour without any
interaction with the software product. Contrary to active testing, testers
do not provide any test data but look at system logs and traces. They
mine for patterns and specific behaviour in order to make some kind of
decisions. This is related to offline runtime verification and log analysis.
• API testing – testing of the application using public and private APIs
(Application programming interfaces)
• Code coverage – creating tests to satisfy some criteria of code
coverage (e.g., the test designer can create tests to cause all statements
in the program to be executed at least once)
• Fault injection methods – intentionally introducing faults to gauge the
efficacy of testing strategies
• Mutation testing methods
• Static testing methods
Code coverage tools can evaluate the completeness of a test suite that
was created with any method, including black-box testing. This allows
the software team to examine parts of a system that are rarely tested and
ensures that the most important function points have been tested.[23] Code
coverage as a software metric can be reported as a percentage for:[19][23][24]
100% statement coverage ensures that all code paths or branches (in
terms of control flow) are executed at least once. This is helpful in
ensuring correct functionality, but not sufficient since the same code
may process different inputs correctly or incorrectly.[25] Pseudo-tested
functions and methods are those that are covered but not specified (it
is possible to remove their body without breaking any test case).
Testing levels
Broadly speaking, there are at least three levels of testing: unit testing,
integration testing, and system testing. However, a fourth level,
acceptance testing, may be included by developers. This may be in the
form of operational acceptance testing or be simple end-user (beta)
testing, testing to ensure the software meets functional expectations.
Based on the ISTQB Certified Test Foundation Level syllabus, test
levels includes those four levels, and the fourth level is named
acceptance testing. Tests are frequently grouped into one of these levels
by where they are added in the software development process, or by the
level of specificity of the test.
Unit Testing: Unit testing refers to tests that verify the functionality of a
specific section of code, usually at the function level. In an object-
oriented environment, this is usually at the class level, and the minimal
unit tests include the constructors and destructors.
These types of tests are usually written by developers as they work on
code (white-box style), to ensure that the specific function is working as
expected. One function might have multiple tests, to catch corner cases
or other branches in the code. Unit testing alone cannot verify the
functionality of a piece of software, but rather is used to ensure that the
building blocks of the software work independently from each other.
Unit testing is a software development process that involves a
synchronized application of a broad spectrum of defect prevention and
detection strategies in order to reduce software development risks, time,
and costs. It is performed by the software developer or engineer during
the construction phase of the software development life cycle. Unit
testing aims to eliminate construction errors before code is promoted to
additional testing; this strategy is intended to increase the quality of the
resulting software as well as the efficiency of the overall development
process.
Depending on the organization's expectations for software development,
unit testing might include static code analysis, data-flow analysis,
metrics analysis, peer code reviews, code coverage analysis and other
software testing practices.
Beta Testing: Beta testing comes after alpha testing and can be
considered a form of external user acceptance testing. Versions of the
software, known as beta versions, are released to a limited audience
outside of the programming team known as beta testers. The software is
released to groups of people so that further testing can ensure the product
has few faults or bugs. Beta versions can be made available to the open
public to increase the feedback field to a maximal number of future users
and to deliver value earlier, for an extended or even indefinite period of
time (perpetual beta).
IMPLIMENTATION
COMPUTER SCIENCE: -
In computer science, an implementation is a realization of a technical
specification or algorithm as a program, software component, or other
computer system through computer programming and deployment.
Many implementations may exist for a given specification or standards.
For example, web browsers contain implementations of world wide web
consortium- recommended specification, and software development
tools contain implementation of programming languages.
A special case occurs in object-oriented programming, when a concrete
class implements and interface, in this case the concrete class Is an
implementation of the interface and it includes methods which are
implementation of those methods specified by the interface
Information technology: in the information technology industry,
implementation refers to post-sales process of guiding a client from
purchase to use of the software or hardware that was purchased. This
includes requirement analysis, Scope analysis, Customization, System
integration, User policies, user training and delivery. These steps are
often over scene by project manager using project management
methodology. Software implementation involve several professionals
that are relatively to the knowledge-based economy such as business
analysts, technical analysts, solution architect, and project manager.
To implement a system successfully, many interrelated tasks need to be
carried out in an appropriate sequence. Utilising a well-proven
implementations methodology and enlisting professional advise can help
but often it is the number of tasks, poor planning and inadequate
resourcing that causes problems with an implementation project, rather
than any of the task being particularly difficult. Similarly, with cultural
issues it is often the lack
of adequate consultation and two-way communication then habits
achievement of the desired results.
MAINTENANCE
Maintenance
• Correct errors
• Change in user requirement with time
• Changing hardware/software requirements
• To improve system efficiency
• To optimize the code to run faster
• To modify the components
• To reduce any unwanted side effects.
Types of Maintenance
1.Corrective Maintenance
Corrective maintenance aims to correct any remaining errors
regardless of where they may cause specifications, design, coding,
testing, and documentation, etc.
2. Adaptive Maintenance
3. Preventive Maintenance
Cost of maintenance
The cost of software maintenance can be high. However, this doesn’t
negate the importance of software maintenance. In certain cases, software
maintenance can cost up to two-thirds of the entire software process cycle
or more than 50% of the SDLC processes.
The costs involved in software maintenance are due to multiple factors and
vary depending on the specific situation. The older the software, the more
maintenance will cost, as technologies (and coding languages) change
over time. Revamping an old piece of software to meet today’s technology
can be an exceptionally expensive process in certain situations.
In addition, engineers may not always be able to target the exact issues
when looking to upgrade or maintain a specific piece of software. This
causes them to use a trial and error method, which can result in many
hours of work.
There are certain ways to try and bring down software maintenance costs.
These include optimizing the top of programming used in the software,
strong typing, and functional programming.
When creating new software as well as taking on maintenance projects for
older models, software companies must take software maintenance costs
into consideration. Without maintenance, any software will be obsolete
and essentially useless over time.
Maintenance activities
Software re-engineering
When we need to update the software to keep it to the current market,
without impacting its functionality, it is called software re-engineering.
It is a thorough process where the design of software is changed and
programs are re-written.
Legacy software cannot keep tuning with the latest technology available
in the market. As the hardware become obsolete, updating of software
becomes a headache. Even if software grows old with time, its
functionality does not.
For example, initially Unix was developed in assembly language. When
language C came into existence, Unix was re-engineered in C, because
working in assembly language was difficult.
Other than this, sometimes programmers notice that few parts of
software need more maintenance than others and they also need re-
engineering.
Re-Engineering Process
• Decid e what to re-engineer. Is it whole software or a part of it?
• Perform Reverse Engineering, in order to obtain specifications of
existing software.
• Restructure Program if required. For example, changing
functionoriented programs into object-oriented programs.
• Re-structure data as required.
Reverse Engineering
It is a process to achieve system specification by thoroughly analysing,
understanding the existing system. This process can be seen as reverse
SDLC model, i.e., we try to get higher abstraction level by analysing
lower abstraction levels.
An existing system is previously implemented design, about which we
know nothing. Designers then do reverse engineering by looking at the
code and try to get the design. With design in hand, they try to conclude
the specifications. Thus, going in reverse from code to system
specification.
Program Restructuring
It is a process to re-structure and re-construct the existing software. It is
all about re-arranging the source code, either in same programming
language or from one programming language to a different one.
Restructuring can have either source code-restructuring and data-
restructuring or both.
Re-structuring does not impact the functionality of the software but
enhance reliability and maintainability. Program components, which
cause errors very frequently can be changed, or updated with re-
structuring.
The dependability of software on obsolete hardware platform can be
removed via re-structuring.
Forward Engineering
Forward engineering is a process of obtaining desired software from the
specifications in hand which were brought down by means of reverse
engineering. It assumes that there was some software engineering
already done in the past.
Forward engineering is same as software engineering process with only
one difference – it is carried out always after reverse engineering.
Component reusability
A component is a part of software program code, which executes an
independent task in the system. It can be a small module or sub-system
itself.
Reuse Process
Two kinds of method can be adopted: either by keeping requirements
same and adjusting components or by keeping components same and
modifying requirements.
REFERENCE
• https://www.google.com
• https://www.tutorialspoint.com
• https://www.geeksforgeeks.org
• https://en.wikipedia.org
• https://www.reference.com
• https://www.freetutes.com