The development of application software
Software is a central part of our lives today. Application development describes the entire process of producing software. We use application software every day
- to edit texts,
- as spreadsheets,
- to set up websites,
- to record videos and podcasts,
- to send and receive emails,
- as a media player,
- or as a graphics programme.
The application scenarios are wide-ranging, so it makes sense to distinguish between different types of software when considering application development.
Types of Software
In order to understand the term application development more clearly, it is useful to distinguish between different types of software. There are basically three different types of software:
- System software is the basis on which programs run. Typical examples are operating systems like Windows, Linux or macOS.
- Programming software refers to programs that developers use for programming, testing, build management or deployment. These can be individual tools such as debuggers or minifiers or integrated development environments (IDE for Integrated Development Environment). Alternatively, it is also referred to as middleware.
- Application software addresses the end user and provides features to perform specific tasks and activities. Typical examples are programs for document creation and storage, image processing, movie or music playback, etc.
In the context of software development for mobile devices, there is also the term app – an abbreviation for application. Even if application is just another word for application software, apps often refer to programs that run on mobile phones or tablet PCs. However, since apps are now also offered for desktop PCs, the distinction is becoming increasingly blurred.
In summary, application development is the process of creating application software that helps the user to perform certain tasks and activities.
Application development phases
There are different phases of application development:
- Requirements analysis
In the requirements analysis phase, the aim is to find out the requirements of the stakeholders and thus also of customers and users. Among other things, the system context must be defined, and stakeholders must be identified, analysed and communicated with. Scenarios or creativity techniques such as brainstorming or brainwriting may be used to determine requirements. Ideally, the requirements analysis follows a defined process.
- Architecture design
In this phase, the aim is to determine the architecture of the application, i.e. technologies, programming languages, databases, interfaces, etc. This is where the Twin Peaks Model could come into play.
Implementation is the central phase of application development, but it cannot succeed without the other phases. In practice, it is recommended that you implement so-called clean code.
Of course the application must also be tested. There are different types of tests like unit tests, integration tests and system tests. In terms of release management, it is also advisable to work with alpha and beta versions in order to obtain early feedback from users. Just because an application works, does not mean that it also covers the needs of the users.
In this phase the application software is made available to the users. Alternatively, this phase can also be described as release or acceptance. Ideally, companies should refrain from delivering banana software. And of course the functions of the application software should be documented and manuals and tutorials should be made available.
- Maintenance and support
An application software without errors is hard to imagine. In other words: software is developed continuously, errors are eliminated, new features are added. Changes should be recorded in a change log. Typically, refactoring occurs over time and hotfixing is not uncommon.
Application development phases
Of course, there are also different approaches to application development. For example, one could distinguish between the process models used:
- Waterfall Model
- Spiral Model
- V-Modell XT
- Model Driven Development
- Feature Driven Development
- Test Driven Development
- Domain Driven Development
Or you could also look at
- the type of programming (one developer, Pair Programming, Mob Programming),
- the use of third-party and finished products (in-house programming, purchase of individual modules and components),
- the philosophy used (Scrum and the agile manifesto, extreme programming, Kanban) or
- the technology (e.g. rapid application development, low code application development, no code application development, mobile application development or enterprise application development).
Since many of these distinctions are fluid – and perhaps academic – it is important for any organisation to decide for itself how to structure application development. The goal is to meet the eight criteria for software quality.
Quality characteristics of application development
ISO 25010 defines the following eight quality characteristics for software:
- functional software, i.e. functionally correct, appropriate and complete
- reliable software, in the sense of mature, available, fault-tolerant and recoverable
- efficient performance, i.e. with good timing, capacity conservation and effective use of resources
- highest security, i.e. not manipulable, authenticatable, safe to administer (also by means of protected user accounts), as well as data protection and integrity
- high comparability in terms of optimal co-existence with other software and interoperability
- perfect usability and thus good operability, easy access and easy to learn, aesthetic user interface and optimal recognisability, as well as protection against incorrect operation by the user
- easy maintenance due to modular design, reusable components, extensive test options, good analysis functions and easy modification
- easy portability, i.e. easy to install, easy to exchange and well adaptable
Many of these quality features are also obvious in application development: every user wants, for example, high functionality, good reliability and simple operation. And of course, application software should always be easy to maintain or run on different hardware. But some aspects are more difficult to grasp: What is perfect usability? How does an easy installation work for an enterprise solution that is used worldwide in different time zones? Or what is efficient performance? Depending on the application software’s area of use, manufacturers must find appropriate answers to these questions.