Designing and Developing Applications for z/OS
From Blueprint to Production
Application Designing Overview
Designing an application for z/OS starts with understanding the problem you're solving — but the mainframe context adds considerations shaped by decades of running the world's most demanding, least forgiving workloads.
Understanding the Workload
The first question is almost always: batch or online? Batch work leans toward efficient sequential processing and checkpoint/restart. Online work (CICS/IMS) leans toward response time, concurrency, and resilience under unpredictable load. Many real applications blend both.
VSAM or Db2? A Quick Decision Helper
Data design is foundational — get it wrong and you fight the data layer for the application's entire life. Answer the question below to see which shape fits your access pattern.
Data Layer Decision Helper
Integration & Modernisation
Very few new mainframe applications are built in complete isolation. A common pattern: wrap existing logic behind modern interfaces rather than rewrite it — using z/OS Connect to expose a proven COBOL program as a REST API.
Non-Functional Requirements
How the application behaves during planned maintenance, or recovers mid-transaction after a failure.
Access control via RACF, and encryption both at rest and in transit — designed in from the start, not bolted on later.
CPU efficiency matters financially — processing cost is measured and billed with real precision on this platform.
Application Development Overview
Once design is settled, development looks familiar in some ways and distinctly its own in others.
Writing the Code
The traditional route
Working directly with datasets and members on the mainframe itself — still common, and still an essential skill for any mainframer.
IDz — Eclipse-based IDE
Brings a modern, graphical experience to COBOL and PL/I development — syntax highlighting, integrated debugging, project-based navigation.
Zowe-powered modern tooling
Exposes mainframe datasets, jobs, and USS files through modern APIs and a CLI — letting developers work from an editor they already know.
Who Does This Work?
"Mainframe developer" means different things depending on where someone sits. Click a role to see what it actually covers.
Summary
Good design means understanding your workload, your data, and your non-functional requirements. Good development means writing clean, testable code, managing it in version control, and deploying it through a controlled, repeatable pipeline — the same instincts that apply anywhere, just applied within a platform built specifically to run workloads the world can't afford to get wrong.