- A database is a collection of logically consistent and purposeful data with inherent meaning and representation of some aspects of the real world.
- The main purpose of any database is to accurately and in the most effective way, store and retrieve data. At the entry level, a single data entry may not hold important meaning to a company, but after accessing and re-sorting all data in a given database, concrete and meaningful information can be gathered. Take for instance a global insurance company with over 100 countries and over 10 million clients, a database will store each client’s data and allow for update at any time securely such that this data can be retrieved, organized, sorted, matched or even linked to provide meaningful information like most purchased insurance product, or trend of growth for the whole company or a branch in England.
- The following 5 databases are among the top 5 databases. Though which database is more popular than the other differs depending on the type of survey, these 5 remain constant on the top 5 list (Shay, 2017):
- MySQL – open source and free database
- SQL Server
- MySQL last two versions:
- MySQL 5.7
- MySQL 8.0
- SQL Server last two versions
- SQL server 2016 version 13.0
- SQL Server 2017 version 14.0
- Oracle database last two versions
- Oracle database version 22.214.171.124
- Oracle database version 18.1.0
- SQLite last two versions
- SQLite version 3.25.1
- SQLite version 3.25.2
- PostgreSQL last two versions
- PostgreSQL version 9.6
- PostgreSQL version 10.0
- Different surveys show different databases as the leading databases, however generally MySQL seems to be the leading database (Shay, 2017). According to Shay (2017), the survey conducted by stack overflow shows that most programmers and companies prefer MySQL database over the others. As such, MySQL database can be regarded as the market leader globally based on this popularity.
- A browser is an application that displays websites accessed over the internet or locally within a local area network or a computer. A browser is used to access websites, using Universal Resource Locators (URLs), over the internet and display their contents for purposes of business, research, entertainment and other purposes that the end user may have.
- The most commonly used browsers on laptops and desktops are Google Chrome, Firefox, Safari, Edge, and Opera browser (McKane, 2018; Statista, 2018). Some of these browsers come pre-installed in the various operating systems the laptop or desktop is operating on for instance; Edge is the default browser for Windows 10 and Safari is the Default browser for Macintosh OS. The last three versions for the browsers named above are:
- Google Chrome: version 70.0.3538, version 71.0 and version 72.0
- Firefox: Version 60.0, version 61.0 and version 62.0
- Safari: version 10.1.2, version 11.1.2, version 12.0 (these versions are specific for Macintosh OS).
- Microsoft Edge: version 40.15063, version 41.16299.15, and version 42.17134 (these versions are specific for Windows operation system)
- Opera browser: Opera 52, Opera 52 R2, and Opera 53
- Other than the desktop/laptop browsers listed above, browsers also exist for smartphones. Some of the most popular browsers are the same as the ones listed for desktop/laptop environment but designed specifically for the mobile smartphone platforms like Android and iOS. The most common of these browsers are Safari, Chrome, Opera Mini, Firefox, and UC Mini (McKane, 2018). The last three released versions for these browsers are:
- Safari: safari browsers for iOS come bundled with the version of iOS it is running on and are not upgradable externally unless through iOS upgrade, as such they are not given version numbers.
- Opera Mini: Opera Mini 7.6.4, Opera Mini 20, and opera mini 36.2
- Chrome: Chrome 69.0.3497.86 (349708600), Chrome 69.0.3497.91 (349709100), and 69.0.3497.100 (349710000).
- Firefox: Firefox 47.0, Firefox 55.0.2, and Firefox 62.0.3
- UC browser mini: version 126.96.36.1990, version 188.8.131.528, and version 184.108.40.2068.
- Most tablets run on the Android platform just like the Smartphone counterparts save a few. Therefore the versions available on Google Play Store correspond to that of smartphones as listed above.
C# is a multipurpose object-oriented language (owned by Microsoft) with its roots in C/C++. The language can be used to develop a variety of programs and systems that can run on the .NET Framework. C# is designed typically to reduce development time without compromising the quality of programs and as such most companies globally are assimilating C# development to create robust and secure programs and systems within a shorter period as well as reduced cost. One of the most common issues with C# language is its platform limitation. C# is designed primarily for windows applications even though it can also run on OSX but not Linux (Cs.yale.edu, n.d.). Another issue with C# is its high reliance on the .NET Framework, that is, anything outside .NET Framework is very hard to implement in C#. Thirdly, developers have to familiarize themselves with the .NET framework to comfortably use C# which may take a lot of time.
Java is another object-oriented programming language with a syntax that resembles C and C++. It is a robust programming language that can be used to develop a wide array of programs and systems both embedded and hosted. Any machine running Java Virtual Machine (JVM) can execute Java programs meaning that they are multiplatform, that is, they can run on any operating system that runs JVM (Lindholm, Yellin, Bracha & Buckley, 2015). Java, however, has its limitation just like any other programing language; first, Java programs are significantly slower than C and C++. Secondly in comparison to natively compile languages, Java programs are heavy on memory and space. Lastly, for newer programmers accustomed to other native languages, the graphical user interface can be significantly challenging due to the huge differences from the other GUI interfaces.
Unlike Java and C#, PHP is a scripting language designed mostly for server-side use. Its main use is to create logic in web pages and to handle data from web browsers. PHP has become widespread globally especially so due to its ability to handle databases which are mostly hosted on the server side ("An Overview of PHP", 2016). It provides the tools to extract data to a webpage and to store data generated by the user. Some of the issues around PHP are; So much flexibility which when well implemented can lead to nicely customized programs but can be quite challenging especially for inexperienced programmers. Secondly, PHP, about other languages, has a shortage of debugging tools hence can prove difficult in error handling. Lastly, when developing large projects, PHP may not be the best choice since it is not as modular as other languages.
Another markup language is XML. XML is used to describe the structure and content of web documents. Unlike HTML, XML tags describe whatever content they hold and as such can be very easy to query for data allowing for easy interchange of data between programs. Common issues around XML include; Like HTML, XML also requires Stylesheet for more than a basic display of data. Secondly, it requires other programs to display images encoded in XML and thirdly, XML syntax is relatively large about binary representation of the same data.
SOAP is an XML-based protocol, lightweight in nature, which allows for the interchange of data and information in distributed systems. SOAP when well utilized along transport protocols that exist like HTTP allows for web services that exist online to have a database backing (Docs.oracle.com, n.d.). SOAP has the following limitations; Compared to COBRA or IIOP, SOAP is relatively slow due to its heavy reliance on long XML format required for parsing (Kanjilal, 2018). Also, SOAP is known to have a very high reliance on HTTP for transport of messages. Lastly, despite SOAP being an open standard, several languages do not support it.
An operating system (OS) can be defined as a low-level software that enables users and high-level programs to interact with the computer hardware as well as other data and programs stored in the computer (Hand, 2010). Common operating systems for laptops/desktops in the market include; Windows by Microsoft, Mac OS by Apple Inc. and Ubuntu which is an open source Operating system developed by Linus Torvalds and the community (Fisher, 2018). Windows and Mac OS are not free in the market. Windows 7, Windows 8, and Windows 10 are the three latest versions of windows with windows 10 being the latest version. For Mac OS, macOS 10.12 (Sierra), macOS 10.13 (High Sierra) and macOS 10.14 (Mojave) are the latest operating systems by Apple with Mojave being the latest Mac OS. The latest three versions of Ubuntu are; Ubuntu 14.04 LTS (Trusty Tahr), Ubuntu 16.04 LTS (Xenial Xerus), and Ubuntu 18.04 LTS (Bionic Beaver).
Apart from desktop/laptop operating systems, other operating systems operating on mobile and Tablet platforms also exist. Smartphone operating systems include iOS by Apple and Android by Google. iOS versions include iOS 10, iOS 11 and iOS 12 while Android versions include android 7.0 (Nougat), Android 8.0 (Oreo) and Android 9.0 (pie). The two operating systems are the most popular. Tablet operating systems follow the same versions as either the smartphone operating systems including Android and iOS or the desktop operating systems like Windows.
Application packaging is the process of preparing structured and standard software installation for purposes of automated installations (KOULETSIS, 2005). Application packaging is helpful to organizations in managing bulk software for their computer systems, more effectively and easily. The benefits of application packaging are enormous for an enterprise as well as an end user. Packaging software produces customized applications to fit into the needs of the end user or enterprise; it also simplifies the complexity that would otherwise be there for installation and reduces the time it would take to install or uninstall the software. Packaged applications also offer great flexibility in repairing corrupt or lost files. In such a situation providing the original installation file or replacing the corrupt or lost file will resolve the issue and this reduces the time in which a system would otherwise be down. Since the same application can now be deployed to as many users as possible, the support cost is reduced dramatically. Application packaging also simplifies the tracking of application licenses thus allowing for effective management of the licenses.
Application packaging takes up two common packaging methods namely non-virtual and virtual packaging (Hake and Metkewar, 2016). Non-virtual packaging produces packages that are installed to the operating system directly with actual file systems and registry while virtual packaging produces packages that imitate real file system, registry as well as security to reduce any damage the package may have on the operating system or other files already installed. The packaging process takes up the following steps; package request, evaluation, and validation of the source, capture of files, editing, testing, quality assurance, and user acceptance testing (Hake and Metkewar, 2016). This forms the life cycle of application packaging. Several applications such as Install shield and wise package studio are used for application packaging (KOULETSIS, 2005).
A virtual server is an environment that allows a single server to be subdivided into several servers using virtualization software like Microsoft Virtual server (Jain, 2013). This allows for optimal utilization of server resources that would not be otherwise utilized if several physical servers were used (separately) for the same purpose instead. Virtualization allows instead one physical server to function as a mail server, HTTP server and so on by creating virtual environments for each one of them on top of the physical server. Virtualization also allows application loads to be spread across several physical servers if they are present to allow for optimal performance of these applications and create redundancy in case of failure of one single server. Virtual servers thus save on operation and maintenance cost of servers seeing that fewer servers can serve the same purpose that could have otherwise been served by a lot more physical servers. The reduction in the number of physical servers, in case an enterprises implements virtual servers, also mean that routine maintenance of the servers become easier and more efficient.
Virtual Desktop Infrastructure is a concept consisting of three basic components, a virtual desktop client (VDC) a virtual desktop infrastructure protocol and a virtual desktop agent (VDA) (Khasnabish et al., 2011). The VDA hosts the control software, say windows operating system, and mostly resides on a remote data centre. VDC, on the other hand, is the remote environment which the user interacts with and with the help of the VDI protocol can access the control software and have the same experience on the VDC as if the control software was running on it (Beveridge, 2006). For example, if the control software is Windows operating system, all the interfaces, properties, and functions of the operating systems will be mirrored to the VDC allowing the user to navigate normally on their desktop without a notable difference to an actual windows operating system running on their machine. VDI is very beneficial to companies with very sensitive data and processes that require security, integrity and an available backup. Since the control software does not run on the client desktop, the possibility of lost data is reduced significantly. Notable benefits of VDI include; improved security since the control system resides on a data centre and problems relating to human error during handling; maintenance and upgrade of the control software; and reduced hardware expenditures mostly incurred during upgrade cycles. Equally, VDI allows for easier management seeing that software and processes are centralized, the portability of VDC allows for a mobile workforce that can work from anywhere provided they have access to the required network, and lastly like many server client infrastructures VDI allow for resource pooling. Examples of VDI products in the market include; VMware View, Microsoft Remote Desktop Service (RDS), VMware Player, Unidesk, XenDesktop among others
Selenium WebDriver is an open source browser automation Library. It includes a collection of automation tools, API’s and Frameworks that can be used for any task requiring automation on a browser including web-based application testing (The Economic Times, n.d.). Selenium WebDriver supports several browsers such as Safari (Selenium WebDriver comes embedded in Safari 10), Chrome, Mozilla Firefox, Microsoft IE and Edge. Apart from Safari, Selenium WebDriver comes as a standalone executable that can be installed via NPM. It also supports other languages that are used for writing test scripts such as PHP, Java, C#, Ruby, and Perl. Selenium WebDriveer is mainly used to; create browser-based automation models and tests, and scale scripts and distribute them across varying environments. Selenium is Web-based and as such cannot be used, for example, for a window-based application or any other operating system for that matter. However, Selenium WebDriver is a cross-platform environment and can be used in all operating systems to engage the browser in a more productive and meaningful way. It can also be used to test databases and API’s used by given web-based applications. One major limitation of the WebDriver is that its ability to support new browser is limited since it operates at the operating system level and every program communicates with the operating system in its way. The WebDriver team may take longer to include the new browser in its list of supported browser thus limiting users whose preference is the new browser. It also lacks a tool to generate test results which is very critical automatically.
JIRA is commercial software developed by an Australian company named Atlassian whose use mainly is to track issues, bugs and to manage projects using Agile (Guru99, 2018). JIRA is highly customizable to fit any organization’s instances to optimize usability but without compromising performance. JIRA boasts of the following advantages; transparent execution in that JIRA updates every member with real-time visual data reports of the team thus allowing for teamwork and team decisions, flexibility in planning, accurate estimations that allow teams to make accurate planning decisions, value-driven prioritization and actionable results by providing critical insights and data-driven process for the team. JIRA core design allows users to set priorities within their projects and assign tasks to team members to complete the projects within time and effectively. With Unparalleled connectivity, JIRA also allows for data sharing within software that requires them for the betterment of the project. JIRA utilizes SOAP, REST and XML platforms to allow for optimal data sharing between apps. With current development and inclusion of mobile phone platforms to support JIRA, teamwork over long distances is made easier and more efficient. Some of the top brands using JIRA include eBay, Cisco, Spotify, Twitter, and Skype Technologies.
HP quality centre is a software quality management product developed by HP for application lifecycle management purposes (Guru99, 2018). It is a web-based tool that helps organizations manage application development from planning to deployment (Guru99, 2018). HP quality centre provides all stakeholders with a way to track all inputs to the product development lifecycle as well as provide records that are needed to keep all the stakeholders updated and informed regarding each development process. The quality centre is comprised of 3 components that make up its structure: A client, Application server and database server all which work together to ensure that users can access product development data for use either on planning or other purposes (Guru99, 2018). Since the quality centre is web-based, the client end is accessed using a URL after which its component is downloaded to the client system automatically. Users can then interact with the servers with the aid of COM and .NET frameworks. These interactions are secured by using the secure Hyper Text Transfer Protocol (HTTPS). The Application server runs on an operating system (Windows or Linux) and is used to process the client’s requests as well as interact with the database server to fetch data requested by the client. It, therefore, forms the bridge between the user and the database. The database server on the other hand stores all the data related to the administration of the project, lab processes such as testing, and project information such as work data. The three components work together in synchrony to provide the best experience and high efficiency required to ensure high-end applications are developed. Several benefits can be attributed to the HP quality centre including but not limited to; significantly increasing the speed of work thus reducing development time and cost related to it, it guarantees quality by running an array of tests at every stage which can also be automated to save time, and it also provides with visual presentation of fault data that is found during testing allowing for easy and effective error correction.