CHAPTER 3 3.1 Overview Thisfocus of this chapter will be on the basic element that are used in theimplementation of this system. There are two parts to this chapter, the firstpart of this chapter will cover the usage of SDLC and the selection of an SDLCmodel. SDLC is important when implementing this project because it gives adeveloper an overall direction and make certain that the overall development ofthe system will go smoothly. The latter part of this project will cover all thetools used when developing this system as well as the programming languages forwhich the application will be written in. 3.
2 System Development LifeCycle (SDLC)SDLCis a model framework that is used as a reference with the intention ofproviding a structure and step-by-step guide which developers can use. SDLC is vitalin the process of developing a system to ensure that the system isstandardized. In general, an SDLC model is split into five phases, planning,analysis, design, implementation and maintenance. However,an SDLC model is not absolute as there exists multiple SDLC models andmethodologies, each having their own strengths and weaknesses. For thedevelopment of any system, it is important to identify which SDLC model is moreappropriate for the aforementioned system, failure to do so may cause theproject to run away and increase costs and time to complete the system. The development of this project willutilize the Waterfall Model. The Waterfall Model is one of the oldest andusually the go to choice for most system development projects (Rastogi, 2015). This isbecause of its simple nature which provides a linear frameworks and splits thedevelopment into sequential phases.
3.3 Phases in SDLCFigure 3.1: SDLC Waterfall Model(Source:http://jobsandnewstoday.blogspot.my/2013/04/what-is-waterfall-model.html)3.
3.1 Planning The purpose of this phase is toidentify the problem that the system is designed to solve and define theproblem statement. Subsequently, this phase be used to determine whether or nota system is feasible. This phase aims to identify several other factors such asthe requirements, the scope and the scale of the system. After identifying allof the key factors, a plan would be made which estimates the cost and timeneeded for the system to be developed.
Furthermore, this stage is also usedto validate the proposed solution as well, which is different from determiningif a system is feasible. Validating a proposed solution means to create asystem which falls in line with the requirements of the user, feasibilitytesting on the other hand is used to determine if the proposed solution isreasonable. It is important for both tasks to be carried out in this phase tobe able to develop the system in a more detailed manner. In all there are several tasks thatare vital to this phase, the first tasks is the initial planning, this involvesputting a team together to develop the system, then interviews would be done toestablish requirements. Then comes the validation of the proposed solution andthe feasibility testing. Lastly, a high-level system development schedule wouldbe drawn up, at times, more research can be done by developers to get a moreaccurate estimates to put inside the schedule.
3.3.2 Analysis Inthis phase, existing systems will be analyzed, this is done to determine thestrengths of certain systems that can be enhanced or weaknesses that should beavoided. This phase would also identify how a system would be implemented andhow a system would meet the requirements of the user. This phase is also usedto obtain a deep understanding of them project, this is done by analyzing eachrequirement and then defining each of them with as much detail as possible. When developing a system, adeveloper must always keep the user in mind, however, this may prove to be achallenge at times, this is because sometimes users themselves are not surewhat 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 willresult in a failed system.
Thus, it is important to have proper interviews withthe user to come up with clearly defined requirements to develop a high qualitysystem Furthermore, since the requirementsmake up the foundation of the whole system and the subsequent phases, it is ofthe utmost importance requirements are clearly stated and defined in a way thataccommodates the user. Overall, this results in the creation of a system thatsatisfies the needs of the user. In essence, this phase definesseveral functional specifications that is used to determine the capabilities ofthe system as well as the processes that make up the system along withappropriate illustrations of the system. Though unlike requirements that areusually fixed, a functional specification constant changes as the project goeson to make sure that the user requirement is met. 3.
3.3 Design Thedesign phase is all about how the system will be implemented, to do so diagramswill be designed to give an overview of the system, diagrams such as contextdiagram and data flow diagram are drawn up. Also, continuing from the previousanalysis phase, a functional requirement should already exist, this functionrequirement 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 includethe tools needed for development and the knowledge required. Properly preparingfor this phase is also extremely important, the developer must take intoconsideration if the project, with all the present information at hand is readyfor the design phase. Moreover, this phase is used to setthe standards that the system should comply with. It is common knowledge thatevery developer has their own “style” when it comes to developing a system.
Thisbecomes a problem when integrating different modules developed by differentdevelopers. A problem may even arise when utilizing libraries should thedeveloper use a very niche approach when developing the system. As such, it isimportant to define what methods are used to develop the system in order toprevent such issues from arising. 3.3.4Implementation Forthis phase, the actual development of the system will be started.
It will beginthe process of programming and writing the code for the system. During thisprocess developers may also find that standards set in the previous designphase are no longer suitable, as such, this phase should also include thereevaluation of system standards to ensure the standards used are stillsuitable and can be applied in the project. After which, developers would testthe system for bugs and overall usability. Though relatively straightforwardthis phase actually consists of many different processes.
Thefirst step in this phase is to start the construction of the system withactivities such as programming. To do so, developers will refer to the outputsproduced in the design the phase. Then, developers would start constructing thecomponents of the system, for example, a project may require a developer todevelop a specific module first, the developer would then develop componentsfor that specific module independent of any other module and build up fromthere, this process is commonly known as modular programming, which will beapplied in this project during implementation. Aftereach module has been developed, the modules should be tested and validated. Testingshould be done by the developer who built the module, this is because, as thedeveloper is the one who built the system, the developer would have a deeperunderstanding of that module. This allows the system to be amended easier, if aseparate developer were to undertake the task of testing, the other developerwould need to analyze the module first which depending on the size of themodule can be time consuming. Lastly,in this phase, after the system and been constructed and tested. The system wouldneed to be validated.
Validation is different from testing in that, validationtakes into consideration the outputs from testing and compares it with theexpected output which had been decided in the previous phases. By comparing thetwo outputs, a developer can make the proper amendments to the system so thatthe output produced is closer to that of the expected output. 3.3.5 Maintenance Inthis last phase, the developer would acquire feedback from the user todetermine the flaws of the system and how the user feels about the system ingeneral.
After acquiring the feedback the developer will be able to furtherenhance the system and fix bugs within the system. This can be achieved through variousmethods, one such way would be for a developer to provide all the properdocumentation on how the system works and how to use the system to the userwhen deploying the system. It would also be wise for a developer to assistusers directly at times, as the documentation might be interpreted differentlydepending on the individual. After the system is fullyoperational, another vital element of this phase is that a developer shouldalso follow up by providing the system with regular updates, this is especiallyimportant when the system is at risk of being compromised by security threats. 3.4 System Development ToolsInvolved3.4.
In addition, thereare extensible plug-ins which developers can use to develop a feature richapplication. AndroidStudio also provides an emulator that simulates an android device for thedevelopment of prototypes and testing of an application, one main advantage ofhaving this emulator is the ability to emulate different versions of android. Inthis project, Android Studio will be used to develop android applications whichwill run on the embedded system and also the client application.Inaddition, Android Studio is also convenient for developers running on differentplatforms as all major operating systems such as Windows, macOS and Linux areall supported. Over the years Google has released several versions of AndroidStudio, each is an improvement over the last. It is important for Google to dothis because, the Android platform is constantly evolving, take for examplewearable technology, the previous version of Android Studio did not supportbuilding applications for wearable technology and was limited to application onAndroid devices. Thecurrent version of Android Studio is Version 3.0.
1, this particular version hasseveral standout features. One of which is the ability to instantly run a linecode and push it into an application that is already running on a device. Thisenables developers to easily experiment with different methods of coding andsee the output immediately.Googleis also aware of the fact that, developing an application is longer justlimited to those in the IT industry, nowadays, anyone can try their hand atdeveloping an application.
To complement this, Android Studio has a code editorthat can automatically complete lines of codes, this makes it easier for evenunexperienced developers to code.3.4.
2 XcodeSimilarto Android Studio, Xcode is also an IDE which provides all the tools neededthat is developed and maintained by Apple, however it is mostly used fordeveloping iOS applications. The programming languages used in Xcode mainlyinclude Swift and Objective-C, however it also supports a majority of otherprogramming languages such as Java and Python, however, while it does supportthese 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 Touchframeworks which helps developers in developing iOS applications. Thisframework can work along with the simulator that is built within Xcode, whichis basically an emulator, to build, run and debug applications that weredeveloped using the Cocoa Touch framework. Applefirst released Xcode all the way back in 2003, over the past decade, majorchanges have been made, one of the major milestones was made in Xcode 6 whichadded the support of Apple’s own programming language, Swift which will becovered later on. The latest Xcode 9 included the implementation of remotedebugging which allows developers to debug devices through the use of Wi-Finetworks.Other features of Xcode include a graphicaldebugger, this graphical debugger allows a developer to debug an applicationthrough the Xcode editor. Another feature of Xcode is that Xcode can fixmistakes in coding, just the use of one keyboard shortcut will immediatelyenable Xcode to fix the issue.
Xcode even takes it further by not justcorrecting the developer’s code but even provides an analyzer which analyzesthe developer’s code which will reveal possible logical errors or potentialbugs.Furthermore,Xcode has a built-in interface builder where elements of the UI can be editedby a simple drag and drop operation, which makes it easier for developers todesign a UI, unlike in Android Studio where XML is used to design a UI. Thisinterface builder can also be used to design an interface independent of thebackend implementations.
The interface builder interprets different views orpage of an application in a storyboard, this storyboards gives the developersan overview of the relationships between different views. This helps thedeveloper easily add new views to their application and easily link the newlyadded view with other existing views. 3.4.3 Wampserver3.5 Programming Languages Used3.5.
1 Java LanguageJavais an object-oriented programming language which is flexible in that it can runon multiple different platforms. For this project Java programming languagewill be used because it is the official language for Android development, Javais mainly used in Android development to develop the backend of theapplication. Most of what is written in android development will be in Javaalong with several APIs. For instance, in this project, APIs will be used togenerate and scan 2D barcodes which is one of the core features of thisproject. 3.5.2 XML XMLis another language that will be used in developing Android applications.
Asmentioned previously, Java will be used to develop the backend of Androidapplications. XML is used to declare UI elements within an application such aswidgets or specific layouts. XML gives an overall structure or layout giving abetter visualization of the application’s UI.
Thus, XML is used to develop thefrontend of Android applications. This project is no different and will utilizeXML to develop the frontend of the Android application.3.5.
3 Swift Swift is a programming language thatis developed by Apple. exclusively for iOS devices. Subsequently, this projectwill utilize Swift for the development of the client application.
In most otherprogramming languages such as Java where there are a lot of open-source APIs orlibraries that can be utilized, this is not the case for Swift. Swift can beconstricting in a way that, there are not a lot of APIs or libraries that canbe used in development.3.5.4 HTML3.5.5 CSS