Fundamentals of Software Engineering
website·Indexed 30 days ago
https://fundamentalsofsoftwareengineering.techEducational resources and documentation on becoming a programmer, covering information system architecture, the components of information technology, and the differences between single-tier and multi-tier applications. Includes guides on fullstack software development and technical tutorials for Java, Spring Boot, and Windows tools.
What's inside Fundamentals of Software Engineering
- Business Information Systems are applications that support business operations by recording daily routine transactions (e.g., sales). Common examples include Point of Sale (POS) applications, Banking, Insurance, e-commerce, HR systems, and ERP systems. These systems are a primary focus for those aiming to become Fullstack Software Developers in a business context.
Understand the architecture of Business Information Systems
Business Information Systems (Enterprise applications) typically consist of three architectural layers:
- User Interface Layer: The part of the application the user interacts with (e.g., websites, buttons, search fields).
- Business Logic Layer: The non-visible 'behind the scenes' part of the application where data processing, calculations, and business rules are executed (e.g., calculating order totals in a shopping cart).
- Persistence Layer (Database Layer): The section where transaction data is stored for future retrieval and manipulation. This serves as the 'source-of-truth' for the business.
Understand the components of a Computer Information System
A Computer Information System (CIS) is a purposefully designed software application that collects, manipulates, and stores transactional data generated by the day-to-day operations of an organization. To build an effective system, four core components must be addressed:
- Technology: The underlying infrastructure, consisting of Data, Hardware, Software, Networking, and People.
- Processes: The specific business actions and procedures (e.g., procurement, underwriting, claims handling) that allow an organization to function and maintain a competitive edge.
- Users: The entities interacting with the system. This includes human users (employees, clients, suppliers) and machine users (other applications accessing the system via API or automated communication).
- Roles: The control mechanism that manages data integrity and access through authentication and authorization.
Understand Analytical Information Systems (OLAP)
Analytical Information Systems, also known as Online Analytical Processing (OLAP), are used to extract data from databases for reporting and decision-making. These systems are categorized by the management level they serve:
- Management Information Systems (MIS): For middle management.
- Decision Support Systems (DSS): For senior management.
- Executive Information Systems (EIS): For company executives.
Understand the Request-Response Model
The Request-Response Model is a fundamental communication pattern in programming. In this model, a client (such as a web browser) sends a request containing specific criteria to a server. The server validates the request, processes the data (e.g., searching a database), and returns the result to the client as a response. This cycle involves several data operations: creation, transmission, validation, searching, retrieval, and display.Implement a 5-Layer Architecture for Scalability
To handle increased size and complexity, two additional 'Access Layers' are introduced to decouple the primary layers:
- Business Access Layer: Acts as a well-defined interface between the User Interface Layer and the Business Logic Layer. It defines how the client-side application communicates with the server.
- Data Access Layer: A dedicated layer of code that simplifies and abstracts how the Business Logic Layer communicates with the Database Layer.
While simple systems may merge these into the business logic, separating them is recommended as the system grows to maintain control and organization.
Understand Transactional Information Systems (OLTP)
Transactional Information Systems, also known as Transaction Processing Systems (TPS) or Online Transactional Processing (OLTP), are designed to capture data from the day-to-day operations of an organization and ingest it into a database.Understand the role of the Data Access Layer in 5-Layer Architecture
The Data Access Layer serves as an intermediary that simplifies communication between application code and the database. It specifically addresses the 'Object-Relational Impedance Mismatch'—the difference in how programming languages and databases model objects. This mismatch can be managed manually or by using an Object-Relational Mapping (ORM) tool.Distinguish between architectural layers and tiers
In software architecture, 'layers' and 'tiers' serve different purposes:
- Layers are conceptual ways of organizing code to ensure manageability and prevent 'spaghetti code' by defining what each part of the codebase is responsible for.
- Tiers define the physical location where those layers of code actually run (e.g., on which server or device).
Categorize software types in an organization
Software is divided into several categories based on its purpose and delivery:
- Operating Systems (OS): The fundamental software that controls hardware and executes all other applications. Examples: Windows, Linux, Unix, macOS, Android, iOS.
- Office & Creative Applications: General-purpose, off-the-shelf software used for daily tasks. Examples: Microsoft Word (documents), Excel (spreadsheets), Adobe Photoshop (images), and web browsers (Edge, Safari).
- Custom Applications (Business Information Systems): Purpose-built software tailored to specific business needs (e.g., banking or insurance systems) that cannot be bought off-the-shelf.
Implement a 4-Tier Application architecture
A 4-tier architecture further decouples the back-end by running the Business Access layer and the Business Logic layer on separate servers. This configuration enables advanced infrastructure capabilities such as:
- Reverse proxies
- Load balancing
- Circuit breaking
- Specialized hardware optimization for different business logic roles.
Understand the 5-layer architecture for information systems
When building a typical information system (such as a web application), the development process is broken down into five distinct layers, each requiring a different skill set. The recommended learning and implementation order is:
- Database Layer: Designing and building the data storage (the most critical foundation).
- Business Logic Layer: Building the core rules and functionality of the application.
- Data Access Layer: Enabling the business layer to communicate with the database.
- User Interface Layer: Building the front-end presentation.
- Business Access Layer: Enabling the user interface to communicate with the business logic layer.