Introduction to Software

Everything a user sees on a monitor is software. Software can be anything – it can be a computer’s operating system, a web browser, a word processor, or even a simple calculator app.

Software is a broad term that describes the collection of instructions (called programs), data, and documentation. Software directs hardware to execute commands and instructions.

Software can be broken down into two main categories: system software and application software.

System Software

System software is software that directly operates the computer hardware and provides the basic functionality to the users, as well as provides the functionality for other software to operate smoothly. System software directly manipulates the computer’s hardware. Some examples of system software include:

  • Operating Systems (OS) – The main software of a computer. It is the first software that loads into the computer’s RAM and manages all of the essential resources, as well as provides an interface to the user.
  • Programming Language Processors – Software that converts programs written in high-level programming languages into machine code that the computer an understand.

Application Software

Application software, also referred to as applications (or apps for short), is software designed with the end user in mind and to fulfill a specific purpose. Application software relies on system software to function properly and cannot run by itself. Some examples of application software include:

  • Web Browsers – Software that allows accessing web pages and navigating the internet.
  • Word Processors – Software that provides input, editing, formatting, and output of text.

Application Architecture & Patterns

A software architecture style defines the high-level structure of a system, specifying how components are organized, how they interact, and constraints on those interactions.

Some common application architecture styles include:

  • Monolithic Architecture - A single application with one codebase that handles all functionality (authentication, orders, user management, database access, etc.).
  • Service-Oriented Architecture (SOA) - A collection of services that communicate over a network using standard protocols.
  • Microservices Architecture - An application built as many small, independent services, each responsible for a specific feature and deployed independently.

Monolith

A monolith is one big application that houses all the logic for authentication, order, user, database etc.

Services

A service is a running program that performs work and exposes functionality via an API. Each service may implement business logic, talk to databases, call other services, and enforce rules.

AuthService - Verifies passwords and issues tokens
OrderService - Validates orders and charges customers
UserService - Stores user profiles

Microservices

In a microservices architecture, each service is independent and owns its own data. Services communicate via APIs. Each service dan deployed separately.

Auth Service -> Auth DB
Order Service -> Order DB
User Service -> User DB