Following the previous edition of the Jargon buster on technology buzzwords, it's time to get even more technical! In this edition we explain the components of software at a high level, so that you can talk to your developers with more confidence.
Ever wondered what creates the things you see on a website on your web browser or mobile? Well, that is the front end of the application working hard. When developers mention the "front-end", they are referring to all the parts of an application that users can see and interact with, including text, buttons, links, illustrations, animations and media files.
A front end developer's job does not end at creating a functional and pleasing user interface; it also includes development elements that are not obvious to many including accessibility, search engine optimisation and many others!
The opposite of "front end", back end refers to the behind-the scenes part of an application that makes it run. It is the engine, the brain that retrieves and processes data to be used for the front end.
In web development, this is where you will find the heavy-lifting code, such as algorithms, and database administration. Choosing the right technology stack for the back end is incredibly important. Increasingly the trend is to choose one that is asynchronous to remain lightweight and efficient in the face of data-intensive real-time applications that run across distributed systems. Doing this while optimising the application for security and high performance is a very tough task indeed!
Generally, a database (db) is an organised collection of structured information stored digitally in a computer system. It is usually controlled by a database management system (DBMS).
There are many types of databases nowadays. Relational databases are the ones that people usually associate with most because they are organised in a set of tables which are similar to spreadsheets, with headings and rows of data below. Querying data from such a structure is very efficient, and thus was the most popular way of storing data before 2000s. Examples of open source relational databases are MySQL, PostgreSQL.
There are also non-relational databases, funnily called NoSQL, that allow unstructured and semi-structured data for storage and manipulation. As web applications grew more complex and data-intensive, NoSQL became the standard web development database. The most popular one is MongoDB, a general purpose, document-based distributed database.
Lastly another increasingly popular type of database is graphical databases. Have you ever thought how you would like to store a handdrawn mindmap digitally? Graphical databases could be your answer! This type of database put the emphasis on relationships between entities, instead of isolating information in cells. Many retailers nowadays use graphical database to store customers' wide-ranging and varying interests and preferences and provide real-time recommendations.
A bug generally refers to an error, fault or flaw in a computer programme or hardware system leading to unintended results. They can be caused by human error in source code, incomplete software design or errors within components or operating systems used by the programs in question.
Most bugs have limited impact, causing users mild annoyance, but there may be unintended ripple effects, sometimes causing extremely serious consequences financially and becoming a threat to human well-being. A recent example is the security bug (buffer over read caused by a lack of bounds checking) within the OpenSSL cryptography library. This bug, also known as the "heartbleed" bug , caused 900+ Social Insurance Numbers in Canada to be stolen by malicious hackers.
While bugs are obviously undesirable, there is no such thing as a bug-free software unfortunately. As hardware and software are constantly updated and created, new vulnerabilities appear beneath the surface without anyone noticing. The only way to avoid bugs is to test excessively and create functional requirements that are crystal clear to all stakeholders.
For example here at CCAS, we commission independent ethical hackers to complete penetration testing on our products so that the security risks are brought to a minimum. Get in touch to know more about our testing.
Many of us take technology for granted and expect websites and applications to appear out of thin air on our computers and mobiles. Have you ever thought where the applications are actually located? The answer is web servers.
Servers are computers used to store websites, online applications, asset files such as documents and pictures, or other data. When you visit a website with the browser on your computer or mobile, you are actually requesting it from a web server.
In the past, servers were stored in a dark server room on premise in close proximity to the end users. Nowadays the servers are usually remotely located, near a water source as the server machines can be very hot in temperature. A cluster of servers is also what cloud computing looks like in reality.
Look out for the next edition in our Jargon Buster series, as explain buzzwords relating to cloud computing.