focus of this chapter will be on the basic element that are used in the
implementation of this system. There are two parts to this chapter, the first
part of this chapter will cover the usage of SDLC and the selection of an SDLC
model. SDLC is important when implementing this project because it gives a
developer an overall direction and make certain that the overall development of
the system will go smoothly. The latter part of this project will cover all the
tools used when developing this system as well as the programming languages for
which the application will be written in.
3.2 System Development Life
is a model framework that is used as a reference with the intention of
providing a structure and step-by-step guide which developers can use. SDLC is vital
in the process of developing a system to ensure that the system is
standardized. In general, an SDLC model is split into five phases, planning,
analysis, design, implementation and maintenance.
an SDLC model is not absolute as there exists multiple SDLC models and
methodologies, each having their own strengths and weaknesses. For the
development of any system, it is important to identify which SDLC model is more
appropriate for the aforementioned system, failure to do so may cause the
project to run away and increase costs and time to complete the system.
The development of this project will
utilize the Waterfall Model. The Waterfall Model is one of the oldest and
usually the go to choice for most system development projects (Rastogi, 2015). This is
because of its simple nature which provides a linear frameworks and splits the
development into sequential phases.
3.3 Phases in SDLC
Figure 3.1: SDLC Waterfall Model
The purpose of this phase is to
identify the problem that the system is designed to solve and define the
problem statement. Subsequently, this phase be used to determine whether or not
a system is feasible. This phase aims to identify several other factors such as
the requirements, the scope and the scale of the system. After identifying all
of the key factors, a plan would be made which estimates the cost and time
needed for the system to be developed.
Furthermore, this stage is also used
to validate the proposed solution as well, which is different from determining
if a system is feasible. Validating a proposed solution means to create a
system which falls in line with the requirements of the user, feasibility
testing on the other hand is used to determine if the proposed solution is
reasonable. It is important for both tasks to be carried out in this phase to
be able to develop the system in a more detailed manner.
In all there are several tasks that
are vital to this phase, the first tasks is the initial planning, this involves
putting a team together to develop the system, then interviews would be done to
establish requirements. Then comes the validation of the proposed solution and
the feasibility testing. Lastly, a high-level system development schedule would
be drawn up, at times, more research can be done by developers to get a more
accurate estimates to put inside the schedule.
this phase, existing systems will be analyzed, this is done to determine the
strengths of certain systems that can be enhanced or weaknesses that should be
avoided. This phase would also identify how a system would be implemented and
how a system would meet the requirements of the user. This phase is also used
to obtain a deep understanding of them project, this is done by analyzing each
requirement and then defining each of them with as much detail as possible.
When developing a system, a
developer must always keep the user in mind, however, this may prove to be a
challenge at times, this is because sometimes users themselves are not sure
what they want and requirements have to change according to what the user wants.
At the same time, a develop cannot disregard the input of the user as this will
result in a failed system. Thus, it is important to have proper interviews with
the user to come up with clearly defined requirements to develop a high quality
Furthermore, since the requirements
make up the foundation of the whole system and the subsequent phases, it is of
the utmost importance requirements are clearly stated and defined in a way that
accommodates the user. Overall, this results in the creation of a system that
satisfies the needs of the user.
In essence, this phase defines
several functional specifications that is used to determine the capabilities of
the system as well as the processes that make up the system along with
appropriate illustrations of the system. Though unlike requirements that are
usually fixed, a functional specification constant changes as the project goes
on to make sure that the user requirement is met.
design phase is all about how the system will be implemented, to do so diagrams
will be designed to give an overview of the system, diagrams such as context
diagram and data flow diagram are drawn up. Also, continuing from the previous
analysis phase, a functional requirement should already exist, this function
requirement will be used to design an architecture that the system will use.
To prepare for the design phase,
basic issues need the be dealt with and identified first. These issues include
the tools needed for development and the knowledge required. Properly preparing
for this phase is also extremely important, the developer must take into
consideration if the project, with all the present information at hand is ready
for the design phase.
Moreover, this phase is used to set
the standards that the system should comply with. It is common knowledge that
every developer has their own “style” when it comes to developing a system. This
becomes a problem when integrating different modules developed by different
developers. A problem may even arise when utilizing libraries should the
developer use a very niche approach when developing the system. As such, it is
important to define what methods are used to develop the system in order to
prevent such issues from arising.
this phase, the actual development of the system will be started. It will begin
the process of programming and writing the code for the system. During this
process developers may also find that standards set in the previous design
phase are no longer suitable, as such, this phase should also include the
reevaluation of system standards to ensure the standards used are still
suitable and can be applied in the project. After which, developers would test
the system for bugs and overall usability. Though relatively straightforward
this phase actually consists of many different processes.
first step in this phase is to start the construction of the system with
activities such as programming. To do so, developers will refer to the outputs
produced in the design the phase. Then, developers would start constructing the
components of the system, for example, a project may require a developer to
develop a specific module first, the developer would then develop components
for that specific module independent of any other module and build up from
there, this process is commonly known as modular programming, which will be
applied in this project during implementation.
each module has been developed, the modules should be tested and validated. Testing
should be done by the developer who built the module, this is because, as the
developer is the one who built the system, the developer would have a deeper
understanding of that module. This allows the system to be amended easier, if a
separate developer were to undertake the task of testing, the other developer
would need to analyze the module first which depending on the size of the
module can be time consuming.
in this phase, after the system and been constructed and tested. The system would
need to be validated. Validation is different from testing in that, validation
takes into consideration the outputs from testing and compares it with the
expected output which had been decided in the previous phases. By comparing the
two outputs, a developer can make the proper amendments to the system so that
the output produced is closer to that of the expected output.
this last phase, the developer would acquire feedback from the user to
determine the flaws of the system and how the user feels about the system in
general. After acquiring the feedback the developer will be able to further
enhance the system and fix bugs within the system.
This can be achieved through various
methods, one such way would be for a developer to provide all the proper
documentation on how the system works and how to use the system to the user
when deploying the system. It would also be wise for a developer to assist
users directly at times, as the documentation might be interpreted differently
depending on the individual.
After the system is fully
operational, another vital element of this phase is that a developer should
also follow up by providing the system with regular updates, this is especially
important when the system is at risk of being compromised by security threats.
3.4 System Development Tools
3.4.1 Android Studio
Studio is an Integrated Development Environment (IDE) for developing android
applications and provides everything that is required to start developing
applications that is developed and maintained by Google. This makes it easier
for even unexperienced users to become developers. Android Studio mainly
are extensible plug-ins which developers can use to develop a feature rich
Studio also provides an emulator that simulates an android device for the
development of prototypes and testing of an application, one main advantage of
having this emulator is the ability to emulate different versions of android. In
this project, Android Studio will be used to develop android applications which
will run on the embedded system and also the client application.
addition, Android Studio is also convenient for developers running on different
platforms as all major operating systems such as Windows, macOS and Linux are
all supported. Over the years Google has released several versions of Android
Studio, each is an improvement over the last. It is important for Google to do
this because, the Android platform is constantly evolving, take for example
wearable technology, the previous version of Android Studio did not support
building applications for wearable technology and was limited to application on
current version of Android Studio is Version 3.0.1, this particular version has
several standout features. One of which is the ability to instantly run a line
code and push it into an application that is already running on a device. This
enables developers to easily experiment with different methods of coding and
see the output immediately.
is also aware of the fact that, developing an application is longer just
limited to those in the IT industry, nowadays, anyone can try their hand at
developing an application. To complement this, Android Studio has a code editor
that can automatically complete lines of codes, this makes it easier for even
unexperienced developers to code.
to Android Studio, Xcode is also an IDE which provides all the tools needed
that is developed and maintained by Apple, however it is mostly used for
developing iOS applications. The programming languages used in Xcode mainly
include Swift and Objective-C, however it also supports a majority of other
programming languages such as Java and Python, however, while it does support
these languages, Xcode is only able to compile programs that are written in C,
C++ and Objective-C. Xcode also comes integrated with Cocoa and Cocoa Touch
frameworks which helps developers in developing iOS applications. This
framework can work along with the simulator that is built within Xcode, which
is basically an emulator, to build, run and debug applications that were
developed using the Cocoa Touch framework.
first released Xcode all the way back in 2003, over the past decade, major
changes have been made, one of the major milestones was made in Xcode 6 which
added the support of Apple’s own programming language, Swift which will be
covered later on. The latest Xcode 9 included the implementation of remote
debugging which allows developers to debug devices through the use of Wi-Fi
Other features of Xcode include a graphical
debugger, this graphical debugger allows a developer to debug an application
through the Xcode editor. Another feature of Xcode is that Xcode can fix
mistakes in coding, just the use of one keyboard shortcut will immediately
enable Xcode to fix the issue. Xcode even takes it further by not just
correcting the developer’s code but even provides an analyzer which analyzes
the developer’s code which will reveal possible logical errors or potential
Xcode has a built-in interface builder where elements of the UI can be edited
by a simple drag and drop operation, which makes it easier for developers to
design a UI, unlike in Android Studio where XML is used to design a UI. This
interface builder can also be used to design an interface independent of the
backend implementations. The interface builder interprets different views or
page of an application in a storyboard, this storyboards gives the developers
an overview of the relationships between different views. This helps the
developer easily add new views to their application and easily link the newly
added view with other existing views.
3.5 Programming Languages Used
3.5.1 Java Language
is an object-oriented programming language which is flexible in that it can run
on multiple different platforms. For this project Java programming language
will be used because it is the official language for Android development, Java
is mainly used in Android development to develop the backend of the
application. Most of what is written in android development will be in Java
along with several APIs. For instance, in this project, APIs will be used to
generate and scan 2D barcodes which is one of the core features of this
is another language that will be used in developing Android applications. As
mentioned previously, Java will be used to develop the backend of Android
applications. XML is used to declare UI elements within an application such as
widgets or specific layouts. XML gives an overall structure or layout giving a
better visualization of the application’s UI. Thus, XML is used to develop the
frontend of Android applications. This project is no different and will utilize
XML to develop the frontend of the Android application.
Swift is a programming language that
is developed by Apple. exclusively for iOS devices. Subsequently, this project
will utilize Swift for the development of the client application. In most other
programming languages such as Java where there are a lot of open-source APIs or
libraries that can be utilized, this is not the case for Swift. Swift can be
constricting in a way that, there are not a lot of APIs or libraries that can
be used in development.