How Software Works
#TheGoodBA
Hanoi ~ 2023
1. 3 layers in software business architecture
2. How systems communicate
3. System Integration Project
4. Q&A
3 layers in software
business architecture
The Front
Diagram
Interface: Window Web MobileApp Marketplace
Business Logic: Domain (Entities, Flow, Report); Utilities (Log, Language, Ccy,
Datetime)
Data
Interface Layer
User Interface
- Mobile/Tablet/Web/Desktop
- Any I/O devices
System Interface
- API: https://shopify.dev/docs/api
- Webhook: https://shopify.dev/docs/api/admin-rest/2023-01/resources/webhook
Business Logic Layer
Business Domain
- Entities: People, Goods/Services, Transactions, Values
- Business Rules: Internal, External
- Business Processes: The processes that involve
- Business Intelligence: Data, Report, Insight
System/Common Utilities
- Logging/Audit Trail, Scheduler, Calendar/Datetime,
Currencies, Language, Security…
Data Layer
Data Storage
- Databases: SQL/Non-SQL
- Files/Documents: Media (Photo, Video), Spreadsheets…
Data ETL
- Extract - Transform - Load
- Distribution Flow
The Front
Source: Wiki - Multitier Architecture
How systems communicate
Common System Communication Methods
1. Realtime: API - Application Programming Interface (GRPC,
RPC, SOAP, REST, RESTful…), Webhook - Reverse API
2. Near-Realtime: MQ - Message Queue
3. Non-Realtime: EDI - Electronic Data Interchange: FTP/SFTP -
(Secured) File Transfer Protocol
API -
Application
Programming
Interface
An application programming interface is a way for two or more
computer programs to communicate with each other. It is a type of
software interface, offering a service to other pieces of software.
Source: Wiki
API
v.s
Webhook
API v.s Webhook
Common issues with API
1. Timeout: What is the timeout limit? What could be the cause of timeout? If
retry is implemented, how to avoid duplication?.
2. Validation: Whether the consumer app/end user is authorized to use the service
provided by the API? Whether the API inputs should be validated by the
consumer, or within the API?
3. Compatibility: When an API is upgraded, how will it affect the existing
consumers?
4. Rate Limit: How many requests an app or user can make within a given time
period?
5. Others:
MQ - Message Queue
Messaging means that programs communicate by sending each
other data in messages rather than calling each other directly.
Queuing means that messages are placed on queues in storage,
allowing programs to run independently of each other, at
different speeds and times, in different locations, and without
having a logical connection between them.
Source: IBM
MQ - Message Queue - Point to Point
MQ - Message Queue - Point to Point
Producers knows about consumer beforehand and only the specified consumer can consume
the message from the queue
MQ - Message Queue - Publish and Subscribe
MQ - Message Queue - Publish and Subscribe
Publisher has no knowledge of the receiver and it just publishes a message in the queue by
specifying a class or tag. Any receiver which has subscribed to that class or tag will receive the
message.
Common issues with message queues
Common issues with message queues
1. Message loss: Messages can be lost due to network failures, system overloaded,
system crashes, or other unexpected events.
2. Message sequence: In a distributed system, messages may not be received in
the same order they were sent, which can cause issues when processing the
messages.
3. Unmatched messages: messages that cannot be processed by the consuming
application due to errors such as missing mandatory fields, unmatched data
type/length, unmatched predefined data.
4. High latency: Queue-based systems can experience high latency due to long
processing times, large message sizes, or network congestion.
Message Queue - JSON Payload Sample
Physical Document Transfer
EDI - File Transfer (FTP/SFTP)
EDI - SWIFT
Which method to use?
1. Realtime: API - Application Programming Interface, RPC -
Remote Procedure Call
2. Realtime: Webhook - Reverse API
3. Near-Realtime: MQ - Message Queue
4. Non-Realtime: EDI - Electronic Data Interchange: FTP/SFTP
Integration Approach
Integration Application - Middleware
EAI: the unrestricted sharing of data and business processes among
any connected application or data sources in the enterprise - Gartner
iPaaS: a suite of cloud services enabling development, execution and
governance of integration flows connecting any combination of on
premises and cloud-based processes, services, applications and data
within individual or across multiple organizations. - Gartner
Integration Application - eCommerce
Integration Application - Banking
Integration Application - Types
System Integration Project
Steps to approach an Integration Project as a BA
1. Get domain knowledge
2. Find out and document the purpose and context of integration
3. List of applications: Name/Code, Roles, Developers (in-house/3rd party), API Document
Reference (if any), Stakeholders (decision maker, SME, business, technical)
4. Define high level system context & business processes that involves the applications in
step 3 (using context diagrams & sequence diagrams - use business language for
interactions)
5. Detail down the business processes with technical team using technical languages for
interactions
6. Repeat 4 & 5 with lots of reviews and get confirmations.
7. Compose a lists of changes required for each applications. This will be the project’s
scope/high level backlog
API Requirement
1. Business Purpose: what the service is used for, and what it does.
2. Context: the provider, consumers and the usage context of the service.
3. Request/Response: details of the service inputs/outputs fields, with clear
explanation of their meanings, data type/length, mandatory/optional, mapping,
predefined list of values…
4. Service Processing: what actions need to be taken within the provider
application upon receiving the service requests.
5. Error Codes: possible error codes and their meaning.
a. Business Errors: Validation, Business Logic
b. System Errors: Connection, Timeout, Duplication
6. Non-Functional Requirement: Security, Performance, handling Timeout…
7. Sample Request/Response
8. API Requirement v.s API Documentation
Message Queue Requirement
1. Business Purpose: what the message queue is used for, and what it does.
2. Type of queue: Point to Point or Publish/Subscribe
3. Trigger: what triggers the generation of the message.
4. Message Payload: details of the payload, with clear explanation of fields,
description, data type/length, mandatory/optional, mapping, accepted values.
5. Acknowledgement: from consumer/subscribers if any
6. Non-Functional Requirement: Security, Encryption, Performance, Handling
message loss/duplication…
7. Sample payload
A Sample Project
1. Business Purpose: Missy Fantastic is a fashion retailer who runs their business on
different unconnected applications. As the online business grows dramatically during
Covid, they need their applications connected so that they can improve their operational
productivity and speed to better serve their clients.
2. List of applications
Name Role Note
Missy Fantastic eCommerce website for online Sales 3rd party - Shopify Store
website
ePOS POS application used at their 2 physical Inhouse application developed by
stores for offline sales IT department
PeopleVox WMS Warehouse Management system for 3rd party - PeopleVox
stocking & fulfillment
Type of system
Application integration is the process of enabling individual applications—each designed for its
own specific purpose—to work with one another.
Provider Consumer
The application/system that The application/system that
provides a service or data that uses (consumes) services or
other systems need to use. data that are provided by
other systems.
sequencediagram.org