Software components are parts of a system or application. Components are a means of breaking the complexity of software into manageable parts. Each component hides the complexity of its implementation behind an interface. Components can be swapped in and out like the interchangeable parts of a machine. This reduces the complexity of software development, maintenance, operations and support and allows the same code to be reused in many places. The following are illustrative examples of a component.


User interface components for different requests, views and scenarios. For example, difficult components can be used to display the same information in a web page and mobile app.


Components that handle requests or events including business rules and data processing. For example, a model might handle a bill payment request for an internet banking website.


A controller is a component that decides what components to call for a particular request or event. For example, a controller might dynamically load different views for a bill payment based on factors such as language, transaction status or channel.

Data Access Objects

A data access object provides an abstract interface for databases. In theory, this allows you to switch to a different database without the application needing to know. This shows the power of a component based approach as dramatic changes can be confined to a relatively small section of a code base.


A service is a component that is deployed independently. For example, a bank might deploy a market data service to cloud infrastructure. This service would provide stock market data to a variety of stock trading systems and applications. Services allow for extremely resilient applications. For example, if an application doesn’t get a response from a service, it can try again and be directed to a completely different instance.


Components designed to extend the functionality of an application or system. For example, a plugin for a media player to visualize music.A component that can be reused across multiple systems and applications can be packaged and distributed as an API. For example, an open source API to connect to a particular database.

Software Design

A list of software design terms.

A definition of separation of concerns.

The difference between backward and forward compatibility.

A definition of push technology with examples.

The common elements of a systems design.

The difference between software design and software architecture explained.

The common types of software bloat.

A definition of future-proofing with examples.

The common types of systems analysis.

The basic types of bit rot.

A reasonably comprehensive guide to software architecture.

A definition of event-driven architecture with examples.

The difference between a service and component architecture.

A definition of architecture layers with examples.

The difference between conceptual and physical architecture.

The definition of IT Architecture with examples.

Examples of common solution architecture diagrams.

The definition of system architecture with examples.

The definition of service architecture with examples.

The most popular articles on Simplicable in the past day.

Recent posts or updates on Simplicable.

Source Article