There are many types of software development, and the number of different types is increasing as more platforms, wearables, and devices are available for developers to write software for. On top of this, there are new domains in which software must be written all the time.
This article will focus on the top types of software development and what each type of development involves. We’ll also discuss some examples of each type of development.
But first, it’s good to know (at a high level) the different types of software development.
What are the different types of software development?
- Web application development
- Mobile application development
- Data Science
- Video game development
- Desktop software development
- Wearables software development
- Cloud computing
- DevOps
- Embedded systems development
- API development
- Software tools development
- Security software development
- Operating System Developers
Web Application Development
Web application development is the development of applications that are typically not installed (ignoring PWA (Progressive Web Apps) on a user’s device and are accessed via a web browser (Chrome, Firefox, Edge etc..) of some kind. It is important to note that a lot of web applications may also have native mobile or even desktop applications as well.
Web application development has two major disciplines required to build a product. The first is the backend development of all the data models, databases, and web services the application will need to run. The second is the front-end development of all the user-interface objects and the design of how users will interface with the application.
Typically the back-ends web APIs and database models will be built using something like C# with ASP.Net Core or Java with Spring. The front end will be built using React, Angular or Vue.js.
Examples of web applications include the google suite of applications like Docs, Sheets etc.. or Microsoft Office 365 products, including Word and Excel in the browser. Even Gmail would be a good example of a web application that users access through their browsers.
Mobile application development
Mobile application development refers to applications installed onto users’ mobile devices, most typically mobile phones. Instead of being delivered via a web browser, mobile applications load from the device without an internet connection and can store data on the users’ devices.
Mobile applications can be built in several different ways. One uses native methods of building iOS applications using Xcode with Swift or Objective-C. The other method used to build mobile applications is using a framework that will compile down to native code, such as React Native or Flutter.
Examples of mobile applications are games like Candy Crush or Snapchat.
Data Science
Data science development is a blend of multiple disciplines that come together to build the application. The goal of the data science application is to work with different kinds of data, often large data sets, and the ability to perform mathematical computations against this data.
When discussing data science applications, people often talk about machine learning and artificial intelligence. These applications are not just research-based but are also heavily used in different business domains.
Data Science applications are often built using the Python language. This language lends itself well to data science as many available packages are based on it. The language can be learnt by non-software developers more easily than a language like C++.
Data science applications are based on sets of data. Some typically use them to work with health data, customer data and gaming. One example of working with customer data might be how search engines recognise your search patterns and then offer you appropriate advertising or search results based on your search history.
In terms of medical applications, looking at data trends for large groups of people can help determine the effectiveness of medications or vaccinations.
Video Game Development
Video game development is exactly what it sounds like. It is the discipline of building video games for all devices, including PC, Consoles and mobile phones.
This development is often performed using a language like C++ as it is high-level enough for developers to write code but also runs close enough to the hardware to make the best use of it available. Game engines are also available that developers can harness not to program all aspects of the game themselves. Things like physics or multiplayer ability are common between games, and these game engines help to speed up development by having pre-written modules that handle these aspects of the games. Two of the most widely used game engines are the Unity game engine and the Unreal game engine.
Some notable video games are the Grand Theft Auto series, Fortnite and Call of Duty.
Desktop Software Development
Desktop software is any software you install and run on operating systems like macOS, Windows or Linux. Typically there will be some form of an executable file that the operating system knows how to run and it may make use of the file system when saving documents, data etc…
This type of software can be built using several different technologies and programming languages. For example, using Electron Js, you can use JavaScript to write cross-platform desktop applications. Using C#, you can work with Windows Forms or WPF; with Java, you might use JavaFX. If you needed to access the hardware and the operating system, a good choice would be C/C++ as your programming language.
Examples of desktop software would be the Mail app on macOS, Microsoft Word on Windows and Rhythmbox on some Linux distros.
Wearables Software Development
Wearable software relates to devices that people wear on their bodies. For example, the biggest wearable market today is the watch market. Between Apple Watches and FitBits, many people are wearing these devices and looking for ways to add functionality to them. One of the new domains of software development and research relates to the type of information that can be gathered from wearable devices. For example, detecting a person’s pulse, GPS location, and respiratory system can be life-saving for users of the devices.
Building wearable software depends on the wearable and the manufacturer of the device. Apple Watch software is typically written in Swift using Xcode, whereas Fitbit uses JavaScript inside Fitbit Studio.
Examples of wearable apps are timers and stopwatches, heart rate monitors and even music players like Spotify or Apple music.
Cloud Computing
Cloud computing refers to writing apps that are run using cloud services that are provided on-demand and can scale to meet large user requests when required. Large websites and applications could utilise this on-demand pricing to pay less during quiet times, which wouldn’t be an option if you were running your local server rooms. Cloud computing offers web services, databases and additional data services, including AI and machine learning out of the box, reducing the set-up time for a company or individual to start writing a new application. User management is also another big feature of cloud computing.
To write cloud computing applications, you can use most programming languages. AWS historically has worked well with Java and, in recent years, has added support for C# and JavaScript, amongst others. You can write the modules and components of your application locally and upload these to your cloud provider, who will run your code in the cloud.
You will find that many web applications will utilise cloud computing to host their website and provide database and web services for APIs and more. Even mobile applications often take advantage of cloud databases to host their data. Examples of cloud computing include file storage applications like Dropbox or software-as-a-service (SASS) applications like SalesForce.
DevOps
DevOps is the combination of software development and operations (IT-focused operations). Software teams utilise DevOps to automate builds and deployments and scale IT infrastructure where necessary. By automating developer and operations tasks, teams can more rapidly and consistently deploy and test their work.
Teams often utilise some time of pipeline when creating DevOps infrastructure. These pipelines can sometimes be combined using a front-end user interface or scripting the components together. Scripting languages such as Bash, Python, Groovy or even a YAML document are often used for this purpose.
Some notable examples of DevOps products include Azure DevOps, CircleCI, TravisCI and Jenkins.
Embedded Systems Development
Embedded systems are computer systems that are integrated into items other than computers. Embedded systems require more than just software development experience. A detailed knowledge of electronics and hardware is required when building these systems.
The most common language for an embedded system would be the C language. Other languages can be used for this purpose including C++, Python and Java.
Examples of embedded systems include consumer electronics like Microwaves or radio-controlled cars. They are also present in every modern-day automobile.
API Development
API development refers to creating software that other systems can use. APIs can take many different shapes but have a few things in common to be a good API. When designing an API, the developer needs to think about what will happen in the future if the code behind the API endpoints changes. For example, if customer numbers were originally implemented as numbers but now are complex objects or even text strings. How will this affect the developers using your API?
There are many, many other considerations about building APIs. The example above shows you how much thinking is required before making your API accessible to the public. If you make sweeping changes to your API, you will affect all its users.
APIs can be built using any programming language. For example, suppose you build a helper library in Java that helps developers convert units of measurement. In that case, the methods exposed to developers using your library are considered the endpoints of your API.
When discussing APIs, you will often refer to them as web APIs. This is just a URL on the internet to which you can send requests to get a response. You can test your work on many open APIs, such as SWAPI (the Star Wars API).
Software Tools Development
This is when software developers build tools that aid the software development process. This aid could be in the form of automation, boilerplate code generation, syntax highlighting, Web API testing and more.
No specific language or framework would be used to build software development tools. It would be specific to the function that you are trying to build.
Some examples of software development tools would be the JetBrains range of IDEs, plugins for VS Code and linting guides.
Security Software Development
Security software is designed to stop threats impacting computers, data and networks. This includes different forms of malware, ransomware, rootkits and other malicious software.
To write efficient and protective software, developers need to be able to access low-level parts of the operating systems and hardware that they are running on. For this purpose, a language like C and C++ are good choices. These languages don’t require a virtual machine like the Java Virtual Machine (JVM) or the .Net framework (for C# applications), allowing them to run closer to a machine’s hardware.
Some types of security software include antivirus, firewalls, intrusion detection, encryption software, password managers and more.
Operating System Development
Operating systems development is the process of creating systems that manage a computer’s hardware and software resources.
Just like security software, operating systems require low-level access to the hardware, so they are typically developed in languages like C and C++.
Examples of operating systems include macOS, Windows and the various Linux distributions. They also include webOS and Android TV, common operating systems used in televisions.
Conclusion
This list is not exhaustive but a list to show the breadth of the type of applications that software developers can write. There is no limit to the type of application as new technology will always bring new needs to the software development market.