Evolution of Software Engineering

Thilini Weerasinghe
8 min readMay 15, 2021

--

Image source: https://ctoinsight.com/index.php/tag/software-evolution/

Software engineering has a long evolution history. It begin from the standalone application development and now it has become a microservice architecture development. So this article discuss about the evolution of software architectures with its advantages and disadvantages.

Standalone :

These types of software are typically runs on the local computer as a software application which can run offline. They are installed in one physical device and has only one user. All the necessary logic are inbuilt with the standalone software and it hasn’t sharing capability and not required internet connections to that software application. Ex: — Installing s/w of a Calculator, Adobe Photoshop, MS Office, AutoCad

Advantages:

  • High security. No hacking or virus attack
  • Faster access
  • No need internet connection to run the programme
  • self-contained software
  • single tiered software applications ensured no reliance on cross network communications routines and less concerns about network security.

Disadvantages:

  • No data sharing capability
  • Can access only one user at a time
  • Required installation
  • Maintenance is tough with respect to both user and company

Component Based Development (CBD):

This is a development methodology that develop softwares based on the software component. The main strategy behind this development method is component reusability. It is a techniques involve procedures for developing software systems by choosing ideal off-the-shelf components and then assembling them using a well-defined software architecture. Here are the key objectives of CBD:

  • Improve the software quality
  • Save the money and the cost when developing complex systems
  • easily capture the defects in the system

Advantages:

  • Component reusability
  • High quality software products
  • Minimize the expenditures
  • High efficiency in development
  • Reduced the development time

Disadvantages:

  • High maintenance
  • Less control over the system
  • Compromises in requirements needed and this may lead to a system that does not meet the real needs of the users

Both standalone application and component-based development are known as the single tier architecture. Single tier means all the layers such as Presentation, Business, Data Access layers in a single software package. MP3 player and MS Office can categorized under one tier architecture.

One tier architecture. source :https://www.softwaretestingmaterial.com/software-architecture/

Client/Server Architecture:

In above discuuss two architecture types, they are known as self-contained structures. It means it holds the all the necessary items like software application, database and all other component in physically same location. But after the introducing of internet, the concept of keeping a seperated remote server was introduced as the client- server architecture. It is a is a distributed application framework dividing tasks between servers and clients, which either reside in the same system or communicate through a computer network or the Internet. There can be one or more client and they send request to the centralized server and then it process data and send response to the particular client. Client computers provide an interface to allow a computer user to request services of the server and to display the results the server returns. Clients are often situated at workstations or on personal computers, while servers are located elsewhere on the network, usually on more powerful machines. There are three main types of client server architecture.

  • Two-tier architecture : Client tier and the server tier. Client tier is responsible to handle presentation and application layer and server tier is responsible for handle the data layer.
Two-tier architecture. Source:https://www.softwaretestingmaterial.com/software-architecture/
  • Three-tier architecture: It consists three main tiers called client tier ,Business tier and the server tier. Client tier handle the presentation layer, business tier handle the application layer and the server tier handle the data layer. Client handle the user interactions and then business tier process the request and then data tier contains the data bases to store data.
Three-tier architecture. Source:https://www.softwaretestingmaterial.com/software-architecture/
  • N-tier architecture: It is same as the three tier architecture. But the difference is in the business tier it contains several individual applications to hold different logic.
N-tier architecture. Source:https://www.semanticscholar.org/paper/CEMARA%3A-a-Web-Dynamic-Application-Within-a-N-tier-Messiaen-Mignot/bf759757727c17a03376614d69ac81dc73c4bba9

Advantages of client/server architecture:

  • Improve data sharing capability
  • Security: Servers have better control access and resources to ensure that only authorized clients can access or manipulate data and server updates are administered effectively.
  • Enable the data processing capability, despite the location
  • Integration service
  • Easy to maintenance

Disadvantages:

  • Availability issues: Since it contains centralized server, failier of the server can cause to not accomplishing the client requests.
  • Server aoverloading: When accessing multi clients in same time can leads to the overloading of the server and traffic congestion.

Service Oriented Architecture (SOA):

SOA Architecture. Source : https://www.javatpoint.com/cloud-computing-technologies

SOA is an architectural design that the application components are designed based on particular service and then they communicate via the network protocol to build the complex software applications. These services use common interface standards and an architectural pattern so they can be rapidly incorporated into new applications. Each service in the SOA consists of code and data that requires to execute a complete, discrete, independent business fuctions like checking a customer’s credit, calculating the employees monthly payment, issuing banking statement etc. These services are loosely coupled. So it doesn’t depend on other service or applications.This is a contact between two major parties. They are:

  • Service Provider: It is the organization that deploy and maintain one or more services for others to use. To advertise services, the provider can publish them in a registry, together with a specific service contract that includes the nature of the service, how to use it, the requirements for the service, and the cost details.
  • Service Consumer: This is the party who makes use of the services from above mentioned providers. They can locate their service metadata in the registry and develop the required client components to bind and use the service.

Applications which are contained the services can be developed using any programming language(Mostly Java, Microsoft.Net, Cobol) and the vendors supply them as a software packages like SAP, SaaS applications. Service interface are designed using Web Service Definition Language (WSDL). Services are exposed using stadard network protocols like Simple Object Access Protocol(SOAP) or Restful HTTP (JSON/HTTP) to send the requests. (These protocols are detaily explained in next article).

SOA Principle

  • Standardized Service Contracts  : It should have some sort of service description to explain about the service and its requirements.
  • Loose Coupling  : Services are loosely coupled with each others. Therefore the changing or iterruption in one service not affects the other services in the application.
  • Abstraction : It hide the implementatio of the services and only expose the information about what it does.
  • Reusability  : As the sevice are designed based on the logic and main reason is the reusability.
  • Autonomy  : Services are holding high control over the its execution environment.
  • Statelessness  : Services are staeless and don’t hold the information from one state to other.
  • Discoverability : Services can be discovered in a service registry.
  • Composability : Services are able to participate in multiple compositions to solve multiple larger problems.

Advantages of SOA:

  • Enhance the collaboration between business and IT
  • Improve the business agility and reduce the time to market
  • Service reusability
  • High availability
  • Reliability
  • Platform independent
  • High scalability
  • Easy to maintain

Disadvantages:

  • High cost/ investment
  • Complex service management
  • High overhead

Micro-Service Architecture:

Monolitic and Microservice Architecture

Microservice architecture, or simply microservices, is a distinctive method of developing software systems that tries to focus on building single-function modules with well-defined interfaces and operations. The trend has grown popular in recent years as Enterprises look to become more Agile and move towards a DevOps and continuous testing.

Generally specifications of SOA and microservice architectures are loos like same. But the SOA are focusing on the enterprise-wide development and microservice are typically used to build an individual applications in a way that it enhance the agility, scalability and resilient. Microservices are cloud native architecural approach and, it provides easily code updates , different stack levels for different components and scale them individually. Basically, this architecture type is a particular way of developing software, web or mobile applications as suites of independent services — a.k.a microservices.

SOA vs Microservice Architecture

Following table explain the key difference between the SOA and the Microservice architectural design.

SOA vs Microservice architecture

Adavantages:

  • Faster development cycles
  • Better scalability
  • Improve fault isolation: Larger applications can remain mostly unaffected by the failure of a single module.
  • Eliminate vendor or technology lock-in: Microservices provide the flexibility to try out a new technology stack on an individual service as needed.

Disadvantages

  • Comunication between the service is a complex process
  • required more resources in scalability
  • Debugging problems can be harder: Each service has its own set of logs to go through. Log, logs, and more logs.

This article describes the evolution of software architectures from standalone application development to the microservice architecture with their existig advantages and disadvantages. Hope now you have clear understanding about the evolution of software engineering context.

Stay Safe & Learn New Things!!!

--

--

Thilini Weerasinghe

Currently working as an Associate Software Engineer at Virtusa. Has completed degree in B.Sc (Hons) Computing & Information Systems. After all I am a Human...