Mobile App Development Glossary
Published on May 24, 2017
Mobile app development is full of complex jargon and annoying acronyms. One of our core beliefs at the Jed Mahonis Group is to demystify software development and make it approachable for everybody, so in that spirit, we present to you our mobile app development glossary!
While you could easily do a search for any of these acronyms and phrases, we wanted to take it a step further and explain items in layman’s terms, complete with examples to better illustrate some of the more complex concepts.
This is a living document, and as we come across new acronyms and phrases that would stand to benefit from a simplistic definition, we’ll add them here. If you come across something that we missed or needs updating, please reach out to us!
AJAX is what allows a website to save and load information without needing to refresh a page. It seems like pretty obvious functionality, but when AJAX was first released, it set the stage for much more dynamic and interactive websites like Facebook and YouTube to exist.
Here’s how an AJAX request works: When you type “facebook.com" into Chrome, you ask Facebook for a bunch of initial information which lays out the page. After the page has fully loaded in your browser, Facebook then makes a bunch of little requests such as “Give me this user’s notifications" and “Load this user’s news feed."
When you post a new status on Facebook, the page doesn’t fully reload itself; instead, a little spinner pops up on the screen, then disappears, and then your post is on your feed. In reality, what happened is that Facebook took your status update, packaged it up in an AJAX request, sent it to their servers, waited for confirmation that everything was saved properly, and then added the post to your page (all without reloading your window!).
An API is a set of rules dictating how you can get/update/delete data which is stored in an app’s backend. An API is typically used in two cases:
Case 1: You are building both the front end and backend of an app, and you want to get the two to talk to each other.
Case 2: Your app needs to connect to another app, like Facebook or Google, in order to accomplish a function.
In both cases, the API creator will give you a way to connect to it, along with a list of calls you can make to get data out of it.
An APK is the file format for Android.
If you are a Windows user, you’ve probably seen a file which ends in .EXE, which is an app file for Windows.
AWS is a set of tools provided by Amazon for developers to build backends for websites and apps. Many startups and large organizations use AWS because of their solid performance, reliability, and scalability.
AWS is powerful, but can also be complex for developers to implement. AWS also bills you based on usage, so if you experience a quick growth in users, your costs will grow astronomically in proportion to that growth.
The “backend" refers to the behind-the-scenes brains of an app. While the front end is what a user sees when they launch your app, the backend is what technically powers it. This would include things like your app’s API, CMS, and databases.
Beta is used to describe software that is not yet ready for general public use.
A beta build of your app would include new features or fixes to existing bugs. Someone performing QA on your app would install a beta version of your app and test it to make sure the new code is performing as expected.
BLE is how most Bluetooth-enabled devices connect to mobile phones because, as its name implies, the connection occurs using a low amount of energy.
A hardware vendor might use an older version of Bluetooth if there are specific use cases for it, but generally, if you want to build an app which interacts with a physical device of some sort, you’d use BLE as the connection.
At its core, a computer only really understands binary, which is a series of ones and zeros.
However, humans aren't so great at telling the computer what to do using ones and zeros, so they invented programming languages. These languages allow humans to express themselves using something that more resembles English. They then use a compiler to translate their code into machine-readable code.
Programming languages that are closer to machine code (such as assembly) are considered to be "lower-level" languages. When you are working with a lower-level language, you're responsible for things like memory management and other performance concerns.
As you move away from the metal, your compiler typically deals with these issues. However, if you move too far away from the metal, you run the risk of not being able to optimize your code in a way that makes your app slow or too reliant on third party frameworks.
When you are choosing the technologies in which you will build your mobile app, you will need to find a balance in how close to the metal you get. The languages we use at The Jed Mahonis Group are as close to metal as we can get without directly writing to memory, such as Objective-C/Swift and Java/Kotlin.
A CMS is a platform which allows you to dynamically update your website or app.
If you made an app which displays the news, you would use a CMS to add a new article into the app. The CMS would then store that information in the backend, and your app would read the backend to grab your latest article.
A corner case is a condition which doesn’t follow the typical or expected flow of a user inside your app.
Let’s say you have an app which requires registration using email. You would make sure that a user can register with a .com, .net, or .org email address. However, thanks to the new TLDs that were announced over the past few years, let’s say a user tried to register using an email address like firstname.lastname@example.org. That would be considered a corner case, which the developers would need to handle correctly.
Corner cases increase dramatically as an app grows in complexity.
For more detailed information, check out our blog post regarding corner cases.
CRUD is an acronym which applies to two areas of app development:
- Database: These are the four basic operations you can perform on data in a database.
- User Interface: Let's say you are building a calendar app. Inside the app, you could add a new appointment (Create), get information about an appointment (Read), change the time on an existing appointment (Update), or delete an appointment to which you are no longer going (Delete).
Frequently, developers will say something like "I have the CRUD in place." Using the calendar app example, if a backend developer says this, it means the database can successfully perform those 4 basic operations. If a front end developer says it, that means you can use the app to create and modify events.
A CSV file is a quick and dirty way to send data from one place to another. You typically use CSV when you want to get the contents of a spreadsheet into a database.
Picture an Excel spreadsheet with 6 columns of data (name, email, address, city, state, zip). If you were to export that spreadsheet as a CSV, it would look something like this:
name,email,address,city,state,zip Tim,email@example.com,123 Fake Street,Minneapolis,MN,55401 Rob,firstname.lastname@example.org,100 Any Ave,St. Paul,MN,55404
However, humans aren’t that great at memorizing 4 sets of digits. It would get pretty obnoxious if you needed to type http://188.8.131.52 every time you wanted to check your Facebook news feed.
Enter DNS! DNS is the service which translates “jedmahonisgroup.com" into “184.108.40.206". Think of it as a phone book for websites (although that analogy is a bit oversimplified and, well, unintelligible to anyone under the age of 20).
Dogfooding is a term used to describe the act of someone using the product they create.
When it comes to software, dogfooding is when you actually use the apps that you make for yourself. Dogfooding is a great way to put yourself in the perspective of a user because it forces you to find areas that could be improved or optimized.
DRY is a development principle which aims to reduce the amount of code written in an app. Less code is typically seen as better, as you’ll have fewer corner cases to test for. When a project is DRY, developers write functions to be simple so an app can reuse those pieces in multiple areas.
An edge case occurs when a user pushes the boundaries of your app to an extreme.
For example, you're building a news feed app which reads RSS feeds. While designing it, you may only expect a user to include a few dozen feeds, but what if you get a true news junky who subscribes to hundreds of feeds? Or thousands?
Edge cases often lead to bugs and crashes inside your app, and you'll want to be sure you account for them while designing an app.
For more detailed information, check out our blog post regarding edge cases.
Sometimes, developers get too lazy to type out “Facebook", so they abbreviate it as FB.
Fragmentation is a term that is used to describe an inefficient use of resources.
In the mobile app world, developers use the word "fragmentation" to describe the wide number of versions of Android that need to be supported.
Apple is aggressive in both making sure their latest operating system works on older devices, as well as pushing their users to stay current with the most recently released version. As a result, most iOS users are within one or two versions of the most current, which means developers can phase out support for older versions more quickly. This results in fewer testing hours, which results in lower development costs.
On the other hand, because of the open source nature of Android, device manufacturers have thrown Android on tens of thousands of different devices over the years. Since hardware manufacturers would prefer you to buy new hardware rather than continually upgrading the software on them, there are a large number of active Android users running older versions of the operating system.
The "fragmentation" of versions of Android that need to be supported is a concern when deciding how many of those users you wish to support.
The “front end" refers to the face of an app. Any part of your app with which a user can touch and interact is generally considered to be the front end.
GIFs were an easy way to display images on webpages in the early days of the internet, but have remained popular due to their ability to be animated. Even though animated GIF files are large and a pain in the neck for developers to support, websites like Tumblr and GIPHY have kept the format alive and well.
Also, it’s pronounced with a hard G (e.g. “gift"), not a soft G (e.g. “jif").
GPS is a system which can provide a user’s geo coordinates anywhere on earth to within 3-5 meters. It was built and is still maintained by the United States military.
While GPS is the most popular radionavigation system in the world, other nations operate alternative systems. For example, GLONASS is an alternative service provided by Russia which can identify users to within 2 meters, and BeiDou-2 is a Chinese service which can provide military users with a user’s location to within 10 centimeters.
One thing to note: GPS works best when you are outdoors because the system depends on your line of sight to the satellites in the sky. If you are indoors, GPS can’t easily triangulate your position, so it becomes much less accurate.
The GUI is how users interact with most modern apps. The GUI is the nice design that sits on top of the brains of your app, which is comprised of both pictures and text.
The HIG provides a set of standards for developers and designers to follow when developing apps for iOS. Following the HIG will make your app fit into a user’s expectations for how an app should work, which leads to a better UX.
To fully understand the part HTTP plays in networks, you’d need to understand the OSI model of networks. In a nutshell, HTTP is the protocol used to package up information to go back and forth between computers over the internet.
HTTP isn’t the only protocol you can use to send data across the internet. You may have heard of FTP, or SSH, or IMAP, or maybe even Gopher (hometown pride forces us to include that one in this list).
The nice thing about building apps and websites today is that the HTTP layer is more or less “done". There are improvements happening to it under the hood (notably HTTP/2), but as an app owner, you typically don’t need to worry about these types of changes, much like you wouldn’t be worried about Time Warner installing a new cable line or a user purchasing a new router for their house.
HTTPS doesn’t mean “several HTTPs" (as was suggested by one of our developers). Instead, it’s a secure version of the Hypertext Transfer Protocol.
Just as we mentioned with HTTP, you generally don’t need to worry about this acronym as an app owner. The only time you’ll need to think about HTTPS is when you initially configure a server, or when you need to update your SSL certificate. Otherwise, once you configure HTTPS, you can generally let it do its thing in the background.
Proponents of Hybrid App Development claim that using a hybrid approach saves you money up front, as you are able to write your code once and target iOS, Android, and any other mobile operating system you choose.
Opponents argue that using hybrid development leads to a poorer UX, as hybrid apps tend to be slower and not “feel" like a native app. In addition, writing an app using a hybrid solution like Xamarin requires developers to wait for the manufacturers of Xamarin to provide support for new OS releases.
An IAP is a way to charge users for features or unlockables inside your app. These are segmented into two types:
- Consumable IAPs, which are one-time purchases. These are used for things like buying extra lives or weapons inside a game.
- Non-consumable IAPs, which are intended to unlock a feature permanently.
An IDE is a tool which allows you to build apps for a specific purpose. An IDE usually contains other tools to help write apps, like debuggers and automation support. In the case of iOS, developers can use an IDE called Xcode to write the apps and publish them to the iTunes App Store. If you were developing an Android app, you would use the Android Studio IDE.
An IP Address is the number assigned to any device connected to the Internet.
In IPv4, this address is made up of 4 groups of 3 digits, separated by periods (e.g. 255.255.255.255).
In IPv6, this address is represented as eight groups of four numbers or letters, separated by colons (e.g. 2001:0db8:0a0b:12f0:0000:0000:0000:0001).
An IPA is the file format for executable iOS apps.
You probably won’t ever deal with these, since it’s rather cumbersome (if not nearly impossible) to sideload apps onto an iOS device.
IPA also stands for India Pale Ale, which are typically necessary in the development of software.
The Internet of Things is a catch-all term to describe the interaction of physical “real world" items with the Internet. Bluetooth Beacons, smart light bulbs, and Internet-connected laundry machines are all examples of technology which exists within the Internet of Things.
We’re a mobile app development company based in Minneapolis, MN. We build apps for entrepreneurs and small businesses. Got a project you need help with? Get in touch with us today!
JSON is a standard format that APIs use to send data back and forth between different device types. It allows an iOS app (written in Swift), an Android app (written in Java), and a server API (written in Ruby) to all communicate with each other in a standard format.
Kotlin is a modern programming language that is used to build native Android applications.
LAMP is an acronym which describes 4 technologies commonly used to create backends. Linux is the operating system, Apache is the web server, MySQL is the database, and PHP is the language used to create webpages.
Material Design is the set of standards apps use in order to provide a consistent interface on Android. You can read through the Material Design principles here.
In the Agile methodology of project management, MVP represents the minimum product that you could put into a customer’s hands.
If you were to describe a vehicle to transport a human across town, the minimum viable product to complete that might be something like a skateboard. Once you’ve shipped a skateboard, you might add on a steering mechanism and produce a scooter. After you get those mechanics worked out, you may attach a motor to it and produce a moped. Stepping up the ladder, you might produce a motorcycle, and then ultimately, a car.
Native App Development is the process of building an app for a specific platform. This is the opposite of Hybrid Apps, which are designed to run on multiple platforms (like both Android and iOS).
Objective-C is one of two languages in which you can write apps for iOS (the other being Swift).
Open Graph was created by Facebook and allows website owners to specify certain metadata they want displayed when their web pages show up on social media platforms.
Open source refers to the source code of software. Part of its licensing agreement can allow anyone to examine, change, and improve upon the code.
We like to say that incorporating open source software into your own proprietary software is like standing on the shoulders of giants. Most (if not all) software that is being used on the Internet is built, in part, using open source software. App developers use open source software to speed the app development process by incorporating parts that are common to all apps.
For example, if you are reading this page using HTTPS, the server that sent you this page did so using a library called OpenSSL. You could download the source code for OpenSSL and see exactly how the data was encrypted and sent to your browser. If we had to write our own cryptographic communication library to do this, we probably would still be working on that instead of writing this blog post.
The Operating System is software which acts as a buffer between the hardware components and the software components of your device. On desktop systems, this could be Windows, macOS, or some variant of Linux. On mobile devices, this could be iOS or Android.
PHP is a common, robust, and battle-tested backend programming language used to build backends. Wordpress, which is the largest blog publishing platform on the internet, is written in PHP.
PNGs are one way to distribute graphics over the Internet. PNG images work well for icons and simple graphics inside applications which require transparency.
Your production environment is the configuration of your server which is seen by the world. When a developer says “we’re pushing the app to production," this means that a new feature or bug fix will be made visible to all of your users.
A Progressive Web App is a website with the ability to save itself to your phone for offline use. This allows it to operate like a Native App, complete with some "native-only" features like push notifications and geolocation.
PWAs are a subset of Hybrid Apps. Instead of being built with a proprietary technology meant to emulate a native app, they are built using web technologies and can function in any device with a modern web browser.
A QA person or team is responsible for testing an application. Generally, the team tests for a high-quality User Experience, as well as ensuring the app is as bug-free as possible.
A race condition is when your app tries to perform two actions at the same time, but must be done in a specific order.
For example, let's say you are building a notes app, and you are working on a feature where two people can change notes at the same time. Let's also say that User A created a note called "pick up the cheese". Now, let's say User B decided to change the word "cheese" to "provolone cheese", and User A also decided to change "cheese" to "limburger cheese". The app now must decide which user is correct.
Should the app say 'provolone cheese'? Should it say 'limburger cheese'? Should it create a new item so that it has both provolone and limburger as options?
Solving race conditions can be difficult, and it is up to the developer to program a solution that is appropriate for each use case.
Ruby on Rails is a framework used to build backends. RoR encourages developers to use a few common conventions (like DRY) to speed up development and make code easier to read and understand. The JMG uses RoR when building out backends for its mobile apps.
RSS is a format used to distribute content (such as podcasts and blog posts) across the Internet.
Because the Internet can be viewed on a wide variety of screens, a website designed using RWD principles ensures that the site looks fantastic on each screen.
SaaS (pronounced like “sass") is a business model companies use to distribute software.
Back in the day, if you created version 1.0 of your app, you would put that app on a disk, put in a box, and set on a shelf inside a Best Buy or CompUSA. Your customer would then purchase it and run it on their own system. In order to receive more money from that customer or to provide updates to the app, you would create version 2.0 and repeat that same process.
In a SaaS model, the software is hosted on your own servers and distributed over the internet (usually as a website or an app), which allows you to more easily add new features and improve the app. Instead of paying for your software up front, your customers pay a regular subscription fee.
Many apps follow the SaaS model, including Netflix, Google Apps, Slack, and Dropbox.
An SDK allows you to create applications for a specific platform. In the case of iOS, Apple routinely publishes new SDKs for each new version of its operating system. Each updated SDK enables new functionality which developers can utilize in their own apps.
When you are installing apps on your phone, you almost always do so through the Apple App Store or the Google Play Store.
If you are installing a beta build from a developer, they would typically give you an APK or IPA file, and you would “sideload" it on your device. You typically tell the device you trust files from a third party, and then install the file.
SQL is the language you use to interact with a database. In a nutshell, you formulate a query (“give me all the records where a user is from Minneapolis") using SQL, and any records matching that query are returned to you. SQL is used on the backend of an app. There are many flavors of SQL, but most people in the mobile app development space will use MySQL or Postgres.
SSL is a technical procedure which allows browsers and apps to communicate securely with backends.
At a high level, it’s an agreement between you, a server, and an independent third party who can vouch for the identity of that server.
Let’s imagine I run a server that you wish to speak with in a secure manner. Before we even begin speaking to each other, a company would need to exist that can vouch for our security. This is called a Certificate Authority (CA). I (as the owner of the server) request and receive an SSL certificate from a CA.
Now, let’s say you want to begin a secure session with me. First, you would send a request to me saying “tell me who you are." I send back a copy of that SSL certificate, which includes a little bit of information to help encrypt messages.
You would take that certificate and make sure you can trust it. If you do trust it, you send back another message to me saying “alright, I trust you." I would then send another message with a key saying, “Okay, here’s a key we can use to encrypt this information." You then would send one more message saying, “Here’s an encrypted message with that key, if you can read this, then we can go." I, of course, would say, “Yep, I got this, let’s go!"
From then on, when you send me data, you would run it through an encryption algorithm which would use that key. Only you and I have that key, so if someone tried to decrypt your message to me without it, all they would see back is garbage and nonsense.
As opposed to a production environment, the staging (or sandbox) environment is where you can test new features or improvements to your app without fear of breaking the live version. It’s a near-exact replica of the production environment, which gives you a chance to see how a new feature may work once it is deployed to all users.
Swift is a programming language used for developing iOS apps. It is the newer of the two languages that Apple offers (the older being Objective-C), and it is typically used when starting a project from scratch.
SVGs are one way to distribute images over the Internet. As opposed to a "bitmapped" image format like PNG, an SVG can be scaled to any size you want while maintaining the highest image quality possible. SVGs work best for icons and logos.
Technical debt is a concept used in software development to describe the effects related to taking a shortcut now to save money or time instead of using a different approach that would take longer or cost more.
Much like a monetary form of debt, technical debt accumulates "interest" over time. The longer you take to pay off the debt, the harder it will be to address it in the future.
Not all technical debt is a bad thing, and more often than not, it can be necessary to incur technical debt for the sake of moving a project forward.
Even though you may intentionally take on the debt, you still need to get a plan in place for "paying it off", which is generally refactoring code to perform the right way. If you have too much technical debt in your product, your development team will end up spending more time struggling to add new features, which leads to burnout and slower release cycles.
TestFlight is what developers use to distribute beta versions of an app on iOS. TestFlight is officially supported by Apple, which makes it relatively simple for developers to get a test version of your app into your hands.
The TLD of a URL is the last part of it (e.g. “.com", “.net", or “.org"). While those three were the most common for a long time, there are thousands of TLDs out there, including .beer and .ninja.
Fun fact: the reason they’re called TLDs is because they’re the first part of a DNS lookup. When you type in “facebook.com", your DNS will look for “COM", then look for an entry called “FACEBOOK".
The UI describes the way your user interacts with your app. While the most common way to interact with a mobile app is through graphics, there are other forms of UI, such as voice (interacting with Siri or Alexa), gestures (using VoiceOver on your iOS device), or text (the ol’ green and black screen on old computers).
Unicode is an international standard used to translate letters, digits, and symbols into a language that computers can understand. Each character is represented by a byte sequence, so, for example, the
A letter is represented by
U+0041, and the number
9 is represented by
Unicode, like a lot of the definitions on this page, is probably not something you will run across in development, except for when it comes to supporting emoji. Emoji is not just a picture, it’s part of the Unicode standard and is implemented at an OS level. Emoji is represented just like the letter A or the number 9 are rendered above (so
😂 is represented by
User Experience is a term used to describe the overall experience your users have while using your app. A good app development company will place a strong emphasis on making sure your app is held to a high UX standard.
When most people think of UX, they think of QA and performing regular testing. However, UX is more about making sure your user is able to use your app in order to accomplish a task. Part of UX is also making sure your app fits into common app paradigms like the HIG and Material Design.
Wireframes offer a basic overview of the various screens of an app, as well as how they tie together. It is a framework that you and your development team can use to make sure you are on the same page with how your app should work.