Embracing the tenet that a sophisticated user experience and user interface (UI/UX) can be pivotal to the
success or failure of a mobile application product. In our visually driven world, oftentimes, UX/UI is the main
distinction in products of different companies. “It is not enough that we build products that function, that
are understandable and usable, we also need to build products that bring joy and excitement, pleasure and
fun, and yes, beauty to people’s lives.” This quote from Donald A. Norman (Allanwood and Beare, 2014, p.14)
rings true to humans attaching emotion to a product. In this instance, an emotionally geared, well-designed
UX/UI can grant a company competitive advantage and growth in the mobile applications market (Philips,
2017).
Highlighting the importance of UX/UI design, it is obvious that priority needs to be placed on the quality of
software and hardware tools needed to produce a beautiful design. The tools needed will be specified as
programming languages, tools, software and lastly, hardware and peripherals
The following UI tools have and will be used in the case of a web application, although the application that Hex Clan seeks to deliver, is a native one.
Swift UI is a platform that follows multiple concepts and provides numerous services that are found in UIKit and AppKit. It holds multiple useful tools including “lists, stacks, buttons, pickers, and many more” (Jacobs, 2021). An essential aspect to this framework is that it is completely integrated into XCode. This does not only exponentially grow the efficiency of the development process but decreases any chance of miscommunication and mishaps between platforms. The ability to run the code from XCode and being able to see and preview the code you have just edited, is spoken of as an almost essential feature and one that is “more than a nice to have feature,” as the lack of necessity to run the code on a simulator or device leads to far more efficient programming. Another spectacular feature, that may not be useful in this application, is the cross-platform framework, that allows whatever UI you are using, to be used on multiple platforms " including macOS”. Despite the platform a frontend developer is targeting, the foundation remains immutable. As mentioned previously, said features shall be of great assistance to the development of the frontend of this application. As the Hex Clan intend on using this UI framework to develop the IOS native application, these visual aspects may be custom coded, or, built in default tools may be used. Hex Clan would require a developer that can custom code the UI and use as little built in default tools as possible.
JavaFX is an open-source platform that enables developers to build spectacular looking desktop and mobile UI’s. A testFX software is built into this kit that would allow programmers to run their code efficiently and accurately, thus being able to conduct and examine inputs and application behaviours efficiently and effortlessly. This UI kit will be essential to the building of the android application as the backend is only competent at storing data and displaying and receiving information through the console. JavaFX developers “rely on libraries such as Advanced Windowing Toolkit and Swing. After the advent of JavaFX, these Java programmers can now develop GUI applications effectively with rich content.” The syntax is written in Java, thus resulting in a higher collaboration rate between members within the team.
Prices start at AUD$14.29 per month per application or AUD$76.99 per month for all applications (Adobe, n.d.). - Link
With the software requirements for front-end development in mind, the hardware and peripherals recommended are as follows:
The Hex Clan group members possess a varying amount of experience in frontend development and design tools. The following table displays the amount of experience each member has for the tools and technologies listed above:
The table resembles the competencies of each team member regarding all the tools in this document. The Hex Clan have moderate skill in this domain and can complete simple tasks that require little to no cognitive ability and research, such as pushing to a GitHub repository and scripting HTML and CSS interfaces. While these skills may be used as the foundation and even the further development of a web application, they would in no way suffice to create a native one. As the main platforms required to create said application are SwiftUI and JavaFX, which in both, the team holds limited knowledge.
The ultimate goal of technology is to give individuals the opportunity to fulfil tasks that may have at one point required great amounts of effort, effortlessly. The functionality of an application is crucial to the success of the company, despite the UI/UX design as, “without solid backend support, a great-looking frontend can easily fail. No matter how enticing a webpage looks at first glance, visitors will eventually turn away if the functions are compromised” (Nora Kramer Designs, 2021) Nora Kramer enlightens us regarding the impact that a functional backend has on a user and its vitality regarding the frequency of user returns. Various programming languages and platforms must be used in order to ensure the success of Budget Hub and complete functionality resulting in widespread usage of this application.
The tool used in order to retrieve information regarding the stores, their prices, items and images was a Python script along with a selenium module.
Selenium is an open-source module, its main use is to test backend software, although this is its main function, it may also be used in order to scrape web pages. In this project we used the Selenium open-source module in order to implement the retrieval of images and information on the products listed from various web pages. As python does not require compilation, it is deemed a quick language that takes little memory to run, it is for this reason that this language was chosen to be used, as processing large amounts of data can be a rather strenuous and time-consuming task with alternate languages.
Alternate software, and possibilities may have been, either direct access to the target stores databases, or manual logging.
This alternative would simply consist of a third-party software being granted to the store, making stock logging easier. The stores would then manually enter the items and stock along with the prices and updated sales. This approach is not feasible due to the time taken when manually logging stock, and the inconsistencies that may take place due to various complications and challenges that the store may encounter.
Another alternative would have been to request access to the databases of the store. This may have been feasible if the layout of acquired data was usable, contrastingly it would be redundant as the data on the web pages reflect the database stock log, prices, and images. Furthermore, security concerns may be raised when requesting access to store databases.
Java is a backend language used to create and maintain android native applications, its datatypes are all strictly enforced and mentioned at declaration/initialization. The data type in the image shown below has been set to an integer, therefore, the type will not vary during runtime, the line proceeding is not mandatory as values may vary during runtime hence the name (variable).
Therefore “You end up writing less code, but your code is more elegant and precise.” Java utilizes the object-oriented paradigm as a foundation upon which it stands. Therefore, the program may be maintained and built by various programmers at once whilst simultaneously maintaing cohesion as various classes and packages would be administered to different teams. Java is also fond of inheritance and polymorphism that go hand in hand and are mutually exclusive, this means that sub/child-classes may inherit methods and variables that are declared in the parent class, further adding to the elegance and precision that this program will hold. The MVC (Model View Controller) software design pattern will be used as it separates packages and classes into appropriate usages, thus ensuring effortless maintenance, collaboration, High cohesion, and loose coupling.
The object-oriented paradigm will be used to its fullest potential as classes and methods will be made effectively whilst also fulfilling pivotal roles in the make of the language. A simple example of a class that may be created is a recipe class that would hold the member variables, overall price, image and a list of strings that would be the ingredients and links that the recipe contains.
The object-oriented paradigm will be used to its fullest potential as classes and methods will be made effectively whilst also fulfilling pivotal roles in the make of the language. A simple example of a class that may be created is a recipe class that would hold the member variables, overall price, image and a list of strings that would be the ingredients and links that the recipe contains.
Alternate software design patterns may include MVVM (ModelViewViewModel) and MVP(ModelViewPresenter).
As the Budget Hub application shall follow a native approach, two languages will be used to establish and ensure compatibility with the two main operating systems. Swift is the main language supported by Apples Operating System. It replaced a language named Objective – C and is known to be safe, quick, and easy to develop with.
This language infers datatypes meaning that unlike many alternate languages where you must mention e.g., String example = “example”, a developer may simply declare a variable with the keyword “var”, this opens various possibilities as a condition may result in said declared variable, being initialized to a Boolean (“True/False”) or an integer (12), another popular language that utilizes this concept successfully is python. Swift also does not require semi – colons thus making the development process easier.
Note: The following are three examples of inferred types as the type is not statically typed.
Whereas the following code line represents an optional option in the syntax that allows the programmer to statically type the data type that the variable will be initialized to. The information that proceeds the colon will specify the data type the language is expecting.
Swift is a safe language as “Variables are always initialized before use, arrays and integers are checked for overflow, memory is automatically managed, and enforcement of exclusive access to memory guards against many programming mistakes”. Furthermore, variables are restricted when it comes to setting them to "nil”, meaning that Swift is not as prone to an exception that would encompass attempting to tamper with, or use a nil value. When a variable is set to nil, this is classified as a “compilation error” in opposed to a “run-time error”. Meaning that the compiler will automatically crash, in the instance of a variable being set to nil, and most IDE’s will warn the developer of this error pre-compilation.
With regards to speed, swift is incredibly efficient thanks to the innovative “LLVM compiler technology” and a fine tuning of the language so that the syntax is as easy to understand as possible whilst also being close to computer language. A mix of built-in functions, methods, and classes, commonly referred to as library's, have been introduced as binary compatible with swift 5. This means that the requirement of including the library's used in the creation of the application is no longer existent as the latest version of the OS library will always be automatically updated and in use by the application.
Contrastingly, swift requires an IOS environment that remote developers may not have, with this restriction, there may be multiple complications that follow. To avoid all complications, all IOS developers must be granted a MacBook that they may use as their developing environment thus solving said obstacle.
Contrastingly, swift requires an IOS environment that remote developers may not have, with this restriction, there may be multiple complications that follow. To avoid all complications, all IOS developers must be granted a MacBook that they may use as their developing environment thus solving said obstacle.
Swift will be used very similarly to Java, an example of how this language may be used is, a class may be named product and this class may hold object member variables including a price, the location, the type and name of the product. This class may then essentially be used as a blueprint to construct various objects that would then be managed and displayed in the fronted. This would be the intended use of this language and the Object-Oriented paradigm more specifically. The MVC model would also be used to ensure a clean backend, a purposeful frontend and a strict and functioning controller.
Before Swift, Objective C was used for a majority of IOS applications. Contrastingly, Objective C is outdated, and no longer receives support from IOS, preceding the introduction of Swift.
MySQL is a relational database Management system, or “RDBMS” for short. It was named after its founder's daughter and simply put it is, ‘an open-source database management system that enables users to maintain and manage their own web database systems.’ It is free of charge and may be customized according to the requirements of each individual user, or company. It is written in C and C++, and “can work on different platforms like Microsoft Windows, Oracle Solaris, AIX, Symbian, Linux, MAC OS” (What Is MySQL And Why It Is Used?, 2021) The first question that may be raised when handing over, not only mass amounts, but extremely sensitive data, is “Is this a secure and private platform that this organization can trust?”
The answer to this question is an absolute yes, as the largest and most advanced web applications such as Instagram and Facebook are currently entrusting this SQL platform with their data. The main security measure that MySQL implements is an encryption of data with a particular key that they (MySQL) do not have access to. This ensures the integrity of data management as intruders are not able to decipher said data and information, granted that they manage to enter the databases.
Furthermore, as previously mentioned, due to the fact that MySQL does not hold the key required to unencrypt the data stored on their platform, it is ensured to the user and organization that their data is protected from all threats. On top of said security features that have been implemented that essentially make it impossible to unencrypt data, authentication measures are also executed. It would be optimal to use MySQL for a web application, but despite this fact, it is still usable for an android application that would then use PHP in order to access the data stored in the database. The data that will be stored in said databases may be sign in details/credentials, previous purchases, store preferences, application credits etc. Thus, making this database vital for the success of the application.
The GitHub framework has revolutionized the way that programmers collaborate, it has now become standardized. This collaborative platform will be used in the further development of Budget Hub, as it, not only makes collaboration easier and efficient but also far safer. This is due to the version control that GitHub provides, said version control allows the user to access different instances of the repository in case of failure or unwanted code. It is also required that all programmers know how to use the command line in order to push and commit to a repository. This is due to the limitations that GitHub Desktop places on its users.
The JIRA platform is a collaborative software tool, allowing programming teams to pass their program through different phases/stories according to the sequence they choose to follow. In the beginning there will be a meeting between the programmers using the Fibonacci sequence in order to determine the level of difficulty to build the software required. After the meeting, the program will begin with JIRA allowing the team to either create their own project sequence or use the one they supply. Task allocation will all be managed by JIRA whilst simultaneously displaying the progress and priorities of said tasks such use of Kanban board in order to display and visually represent each team member's performance, and possibly re-allocate tasks depending on each person's workload. JIRA cultivates the same type of benefits.
The format that this software uses in order to ensure that each task is completed to the organization's satisfaction is as shown below.
In the diagram/roadmap above, there are 5 phases, the first simply means that the task is now ready to be completed but has not necessarily begun yet. If it stays in this stage for too long, the priority of this task will be increased. Proceeding the beginning of the task, the developer/employee will mark the task as in progress, this is a broad section, and one that may not be deciphered unless further communication is conducted. As a programmer, this section may be halfway finished, or 99% complete. Due to this high chance of miscommunication, it must be stated that this tool will not replace team communication but enhance and encourage it.
When the task is under review, the task has been somewhat completed, and is now ready to be tested and reviewed. This section is to be done by another team member with the skills required. If the reviewer notices flaws and inconsistencies in the work supplied, the task may move back into an in-progress story. On the other hand, if the task is deemed worthy of being finalized, and is up to the expectations of the reviewer, it will be sent to the final approval section. This phase is of utmost importance, as this program is highly likely worth a great amount of money, and if it is not completely assessed and confirmed before pushing it to production, massive complications may arise. Therefore, JIRA has used a simple two tick system, that is not satisfied with only one publisher's opinion on the task, but two. Once they are both satisfied, the task is pushed to the main branch that will then be a part of the application.
As shown in the image above, the website encouraged the use of a standard subscription, due to the hypothetically small number of members in the app development team. The price is $7.50 per person which would equate to about $1800 per year
IntelliJ IDE (Integrated Development Environment) was developed by JetBrains, the creators of Kotlin. Said IDE has a reputation amongst backend Java and Kotlin developers. It is known for its intelligence in the “Smart completion, Chain completion, Static members completion, Data flow analysis, Language injection, Cross-language refactoring's, Detecting duplicates, Inspections and quick-fixes” (Best Java IDE 2021 | Most Popular Java IDE for Coding, 2021) domains.
It has three modes, compensating for all types of programming preferences, including a high contrast mode, a dark theme mode and the widespread despised light mode. It has different appearances also, that Its debugging tools use smart annotations, revealing where an error may occur, and the Boolean results in a specific statement, it also provides a list of variables and their contents. In the end of the day, Java is Java, and the quality of the code will not vary much depending on the IDE, with that being said the Java developers will be granted not only the community edition of the IDEA but “a proprietary commercial edition.” (Best Java IDE 2021 | Most Popular Java IDE for Coding, 2021). The paid “Ultimate” version of this IDE is approximately $500 a year per user.
XCode is a platform most commonly used for IOS Swift application development, XCode is the foundation upon which many IOS developing teams stand upon, utilizing its fullest potential as a platform that not only provides nice appearance and minute features, but also effectively integrates SwiftUI, in order to remove the requirement from the developers, to run the code on another platform, or a device, as XCode compiles and reveals the UI in the latest format. The developer may choose to view their application on different IOS devices, and closely analyze said application behavior accordingly.
According to the table above, the members of the Hex Clan team are moderately incompetent with regards to backend tools and technologies, the software listed are essential to the furthering of the application on a mobile app level. This outcome was hypothesized as the tools listed require high skill level to comprehend and utilize. Furthermore, said platforms are specific to those that have specialized, not only in the field of computer science, but in the specific platform. As the members in the team are all still at a tertiary level education, and in first year, there is not one single expert, and little competency in said areas.
With the software requirements in mind, the following hardware and peripherals recommended are as follows:
Front-end and Design
Backend Development and Tools