Several years back, I did an exercise in mapping out families of application architectures and application types. It was an extensive archeological expedition.
Key Goals / Outcomes
There were several goals of the exercise:
Identify canonical application architectures and app types
Figure out a useful way of sharing architectures
Figure out whether it's better to focus on the business architectures or the technical architectures
Find a simple way to overlay patterns work on top of technical architectures
Find a simple way to share architectural styles
Find a way to simplify and share visuals of end-to-end architectures
The exercise fed into a number of later works years later, including:
Reverse engineering many available sample applications inside and outside of Microsoft
Checking with industry experts on their lessons learned about the types and the shapes of all the applications they've seen and built over the years
Creating an extensive inventory of application patterns from various sets of our key customers that had a wide range of applications and platforms
Evaluating competitive efforts to index and catalog application shapes and types, and making sense of various patterns efforts
Keep in mind, that going into this, I already had the benefit of doing more than 650 customer architecture and design reviews -- yet still, this was an overwhelming exercise. It forced me to find new ways to deal with large bodies of data and information, and somehow turn them into shared maps, browsable, reusable knowledge nuggets, and backdrops for deeper conversations and elaboration.
Lessons Learned from Architectural Exploration
Some of the surprises for me or things that I learned that I didn't expect include:
Focusing on business architectures and verticals was less effective and less reusable than focusing on technical architectures as a baseline (from there, we could overlay business architectures)
Knowing the deployment patterns was the fastest way to get a good sense of the application patterns (it's where the logical met the physical against the infrastructure)
Looking through quality attributes as a lens made it easy to find and explore patterns for security, performance, reliability, manageability, etc.
So many applications boiled down to simple CRUD (Create Read Update and Delete)
The biggest variation among applications was the business logic and workflow
IBMs simple model of user, process, and data was useful as one lens
Views and viewpoints were a powerful way to change perspective and drill into another aspect of applications
At a high-level, you could capture a customer's core system by capturing the data, workflows, and workloads (the workloads significantly shaped the design of the app)
In retrospect, the simplicity and common denominators of CRUD make a lot of sense. It's all about interacting with information at a fundamental level. People are just trying to get things done and there's only so many things you can do with information -- find it, browse, save it, share it, transform it, etc. as part of your workflow.
Early Map of App Types
I included one of the many early maps of the application types that helped us figure out what to throw out and what to keep as we moved forward. One of the key distinctions that Ward Cunningham helped me figure out was to distinguish between the shape of the application architecture and design, and the actual “purpose” of the application. Some purposes were more business-oriented, while some were more technically oriented, and this helped me find and distinguish different families of apps.
It's circa 2004, but the irony is how timeless the backdrop really has been. It’s rough and raw, but like I said, it’s just one sampling of the many braindumps behind the scenes of mapping out app types.
Category
Items
Base Archetypes
Rich Client
Web Client
Web Service
Mobile / Phone
Video Game
Framework
Component/Library
Subsystem
Service
Pool of Stuff
OLAP
Data Mining
Data Warehouses
Data Management
Business Process Integration
Business Intelligence
BAM
Server-side
Desktop
Peer-to-peer
Mobile
Web-centric
Data-centric
Middle-tier
Transactions
Read-Only data
Workflow
Batch
Portal
Community
Commerce
Task-Tracking
Business Applications
Accounting and Finance
Customer Service
Distribution and Warehousing
Education and Training
Engineering, Design and Drafting
Facilities Management
General Office Automation
Groupware and Collaboration
Human Resources
Knowledge Management
Legacy Systems Analysis and Upgrade
Logistics and Procurement
Manufacturing and Process Management
Other Business Application Tools
Project Management
Reporting, Analysis and Decision Support
Sales and Marketing
Accounting and Finance
Account Activity Analysis
Accounts Payable
Accounts Receivable
Billing and Invoicing
Budgeting, Financial Planning and Analysis
Consolidation Statements and Performance Reporting (CS-PR, Aggregation)
Currency and Foreign Exchange Management
Electronic Funds Transfer (EFT)
Fixed Asset Management
General Ledger
Integrated Accounting Solutions
Integrated Financial Management Solutions
Inventory Accounting
Investment and Portfolio Management
Job Costing
Payment, Clearing and Settlement Systems
Payroll and Personnel Accounting
Purchasing
Quotation, Order Entry and Order Processing
Risk Management
Small Business Accounting
Tax Preparation and Reporting
Time and Billing
Customer Service
Automatic Page-Voice Notification
Call Center Management
Customer Service
Help Desk and Call Management
Interactive Voice Response Systems
On-line Customer Support
Scheduling
Distribution and Warehousing
Distribution and Warehousing (Integrated)
Freight Dispatch
Freight Handling
Other Distribution and Warehousing Industry Sectors
Route Scheduling
Truck-Fleet Management
Wholesale Distribution and Warehousing
Education and Training
Computer-Based Training
Courseware Development
Web-Based Training
Engineering Design and Drafting
Cartography-Mapping-Geographic Information Systems (GIS)
Computer-Aided Design (CAD)
Computer-Aided Manufacturing (CAM)
Electronics Design Automation (EDA)
Materials Analysis
Mechanical Computer-Aided Design (MCAD)
Mechanical Computer-Aided Engineering (MCAE)
Mechanical Computer-Aided Manufacturing (MCAM)
Modeling
Sampling and Testing
Structural Analysis
Facilities and Management
Building Security
Communications Management
Computer Maintenance Management (CMMS)
Energy Analysis and Management
Enterprise Asset Management (EAM)
Equipment Maintenance and Field Service
Facilities Maintenance
Facilities Management (Integrated)
Heating, Ventilation and Air Conditioning (HVAC)
Lighting Analysis and Control
Other Facilities Management Industry Sectors
General Office Automation
Appointment Management
Calculators
Calendaring & Scheduling
Data Entry
Desktop Management
Desktop Publishing
Electronic Mail
Fax Management
Flowcharting
Graphics (Raster)
Graphics (Vector)
Mailing List Management
Multimedia and Animation
Office Suites (Integrated)
Presentation Applications
Spreadsheets
Time Management
Time and Expense Reporting
Voice Recognition Software
Web Browsers
Word Processors
Groupware and Collaboration
Chat and Discussion Systems
Collaborative Writing Systems
E-mail Clients
Group Calendars
Integrated Groupware Solutions
Newsgroup Management
Resource Scheduling
Video Conferencing and IP-TV
Workflow Automation
Human Resources
Benefits Administration
Employee Self-Service Software
Human Resource Management
Integrated Human Resources Utilities
Personnel Administration
Professional Services Administration
Recruiting
Resume Tracking
Time & Attendance
Travel Management
Knowledge Management
Computer Output to Laser Disc (COLD)
Document Imaging Systems
Document Management Systems
Idea Management
Knowledge Base Management
Workflow
Legacy Systems Analysis and Upgrade
-
Logistics and Procurement
Import and Export Management
Partnership Relationship Management
Requisitioning and Procurement
Supply Chain Management
Transportation Management
Warehouse Management Systems
Manufacturing and Process Management
-
Capacity Requirements Planning (CRP)
Data Reduction
Distribution Management
Enterprise Resource Planning (ERP)
Equipment Maintenance and Management
Factory Automation and CIM
Factory Data Collection
Inventory Management
Machine Tools
Machine Vision
Maintenance, Repair and Operating Supplies (MRO)
Manufacturing Automation Protocol
Manufacturing Execution Systems (MES)
Manufacturing Simulation
Manufacturing Solutions (Integrated)
Material Requirements Planning (MRP)
Materials Manufacturing
Metrology
Numerical Control (NC)
Operations Planning
Plant Maintenance and Service
Process Control (HMI-SCADA)
Product Information Management (PIM)
Product Service
Production Planning
Production Scheduling
Quality Control
Reliability Modeling and Analysis
Robotics
Shop Floor Control
Test Development
Test Information Integration
Test Simulation
Work Load Control
Project Management
Project Accounting
Project Estimating
Project Management (General)
Project Scheduling
Purchasing
Resource Planning
Reporting, Analysis, and Decision Support
Business Planning
Business Process Reengineering
Competitive Analysis
Data Mining and OLAP
Decision Support Systems
End-User Query and Reporting
Executive Information Systems
Expert Systems
Mapping and Visualization
Multi-Dimensional Analysis
Needs Analysis Systems
Neural Networks
Statistics and Technical Data Analysis
Trend Analysis
Sales and Marketing
Contact Management
Customer Relationship Management
Demographics
Enterprise Marketing Automation
Lead Distribution Management
Market Research
Marketing Management
Media Planning and Buying
Mobile Field Sales
Partnership Management
Product Configurators
Sales Analysis & Reporting
Sales Force Automation (SFA)
Sales Management
Telemarketing
Industries
Aerospace & Defense
Automotive
Chemicals
Communications
Consumer Products
Education & Research
Energy
Engineering & Construction
Financial Services
Healthcare
High Technology
Industrial Manufacturing
Life Sciences
Professional Services
Public Sector
Retail
Travel & Transportation
Utilities
Business
Contact Management
Customer Management
Accounting
Data
Datawarehouse
Data mining
OLAP
Desktop
Photo Editing
Graphic Design
Web Publishing
Desktop Business Software
Email Client
Spreadsheet
Presentations
Word Processing
Home and Hobbies
Cooking and Health
Fashion
Gardening and Landscape
Genealogy
Hobbies
Home Design
Home Publishing
Instrument Instruction
Legal
Mapping
Movies and Television
Music Appreciation
Personal Improvement
Script and Screenwriting
Personal Finance
Investment Tools
Money Management
Tax Preparation
Utilities
Virus Protection
PC Maintenance
A
Batch
BPM (business process management)
BIM (business intelligence management)
EAI (enterprise architecture integration)
Document Management
B
Operating System
Framework
Component/Library
Service
Subsystem
C
Portal
Community
Commerce
Task-Tracking
D
Transactions
Read-Only data
Workflow
Batch
E
Server-side
Desktop
Peer-to-peer
Mobile
Web-centric
Data-centric
Middle-tier
F
Content Management
G
Web Server
Application Server
Database Server
H
Collaboration Suite
I
OLAP
Data Mining
Data Warehouses
Data Management
Business Process Integration
Business Intelligence
BAM
Comments
Anonymous
August 04, 2010
Nice blast from the past. I love reflecting on past endeavors such as this and seeing what parts of the work are still stable and what parts aren't.