An application is software that is used to accomplish specific requirements of user. For eg. To read PDF files, creating documents, gaming applications, applications to play audio and video files etc. For all these types of different requirements different applications needs to be developed.
Before developing any application, it is to be decided which technology and which type of application will be developed.
Types of Applications
Applications can be categorized on various factors like: type of interface, architecture on which it will be operated, platform on which it will be executed and the devices through which a user can access it.
Categorization on the basis of Interface:
Interface is the medium through which a user can interact with the application. On this basis applications are of following types:
- Character User Interface (CUI): In these types of applications user is provided a console screen on which instructions can be given in form of commands, that means only using keyboard a user can provide instructions.
Like: C programming language supports this application type:
Following is the screen of CUI application:-
- Graphical User Interface (GUI): In this type of applications a user can provide instruction through graphical components like: menus, icons, buttons, windows, and links etc. In this mode user can use various input devices like mouse, mice, touch screen, joystick etc for interaction. The best example of GUI applications is windows operating system. In today’s scenario most of the applications are created in GUI.
Categorization on the basis of architecture:
On the basis of architecture an application can be categorized in following layers:
- Presentation layer: Provides Interface to user
- Business logic layer: It controls the flow of execution and communication between presentation and data layer.
- Data layer: It contains data storage.
On the basis of all these layers, applications may contain one of the following architecture:
- Single Tier Architecture
- Two Tier Architecture
- Three Tier Architecture
Categorization on the basis of platform:
On the basis of platform on which application will be executed, can be of following types:
- Desktop applications
These applications are specifically used on a desktop, laptop or other device. It can be used only on that device, on which it is installed. If the same application is being used on other device, it has to be installed on other device also. Like word, excel, pdf reader etc applications.
- Web applications
These applications are not installed, these are hosted on web server on internet or on intranet. To access these applications we need web browser desktop application. For eg. Google, Facebook, Twitter are example of these applications.
- Cloud applications:
These types of applications does not need any browser to run, they are evolved Web applications. These applications are the combination of desktop applications and Web applications. Cloud applications are scalable and flexible and can be consumed by a variety of clients. Example of cloud applications are Google docs and Microsoft office web applications.
- Mobile applications
These applications are specifically developed for mobile devices.
Categorization on the basis of devices:
In today’s scenario various types of devices are being used by people to access various types of applications. Mostly used devices apart of laptops and desktops are smart-phones, tablets and Personal digital Assistants etc.
So developers keep in mind all the aspects and devices when developing applications.
On the basis of devices, on which they can be installed and used applications can be classified as:
Native applications are those applications, those are device specific. That means they are specially developed for a particular device, if the same application is to be used on other device different version of the same application should be used.
- Device agnostic
Device agnostic applications are designed for a wide range of devices, in which there is no need to develop different versions of application for different devices. Today the most popular demand is of this kind of applications. Today for all the devices apps are developed that is a short form of application. Just like the name shortened the size is also reduced. Apps are small software used to perform specific task like: gaming apps, antivirus apps, eBook reader apps, audio and video apps etc.
Software developing Models
While developing application, developers follow various phases in SDLC (Software development Life cycle). These phases are:
- Requirement Analysis
This phase is related with collection of all requirements of application, analyze them and finalize the SRS. System Analyst plays very important role in this phase.
In this phase all the gathered information is implemented in designing and verified that it will be according to the SRS. System architect creates design of application. Various tools can be used in this phase like Algorithm, flowcharts, UML diagrams, DFD etc.
- Developing (Coding)
In this phase after successfully completing the design phase, the design is converted in coding using any programming language. Developers are the main role model in this phase. After completing this phase the source code of application is generated.
- Testing or debugging
Before implementing the application it should be checked for Quality assurance and customer satisfaction on various parameters by Software testers. The main goal of this phase is customer satisfaction. There are so many types of testing is performed:
- Unit testing
- Integration testing
- System testing
- Acceptance testing
- Deploying or Implementing
This phase is where the actually application is delivered to the customer and deployed on customer’s site by Release manager.
When end user start working on application, sometimes there are situation of maintenance or altering the application that will perform in this phase. Following types of changes may be performed in this phase:
Fix any defects encountered by the end user after the delivery of application.
Change the application to adapt to the changes in the environment in which application is to be run.
Adding new features to the application according to the end user.
It involves making changes in the application periodically to keep it updated according to the current requirements and latest trends.
There is no specific one strategy is followed, in all the application development process by all developers. It depends on so many aspects.
Different kinds of Model are designed in which all the above phases are performed differently. Like:
Application Development Models:
- Waterfall Model
- Prototype Model
- Spiral Model
- RAD (Rapid Application Development) Model
- Incremental Model
- V-Shaped Model
- WINWIN Spiral Model
- Agile Model