- rob crewdson
- Oct 19, 2023
- 5 min read
The method for the developer and the client is simple:
Wireframe the user interface - PC, Pad, Phone.
Give all dynamic data items an identifier, eg. “Supplier”.
Specify a source for each dynamic item eg. “Supplier.Name” (from database).
Specify actions for buttons.
For example, this form lists orders for a nominated supplier and customer:
Orders.form

Supplier : Supplier.Name
Customer : Customer.Name
List each Order
Ordered : Order.OrdDate(24) (24) shows 24 hour time
Confirmed : Order.Confirmed(24)
Delivery Date : Order.DelDate(d) (d) shows short date, eg. 20/11/2023
Shipped : Order.InvDate(d)
Amount : Order.Total(0.00) (0.00) shows amounts like 1234.90
Paid : Order.Paid(0.00)
Notes : Order.Notes
[Review Order] Load OrderItems for this Order
>OrderDetails.form display the details for the order
[New Order] Load all Products
RestoreSavedOrder customer might have an unfinished order
>RetailShop.form if SavedOrder.Id = Nothing no saved order
CalculateOrderTotals
>Review.form review saved order
[Back] >Customer.form
End of Orders.form
Dynamic items have been identified on the form (or page) and associated with a source, eg:
“Supplier : Supplier.Name” means “Supplier” is bound to “Supplier.Name” in database.
Actions when a button is clicked are specified, for example:
[Review Order] Load OrderItems for this Order
>OrderDetails.form display the details for the order
Comments are in italics. Navigation is indicated by “>”. Database requirements fall naturally out of the sourcing process. The need for temporary items and processes will be identified, eg:
CalculatePrice
If Customer.Type = ‘Govt’
Price = Product.Price - GovtDiscount
ElseIf OrderTotal > 1000
Price = Product.Price - VolumeDiscount
Else
Price = Product.Price
EndIf
End of CalculatePrice
When all of the user interface has been wireframed, all observable data items have been sourced and all processes have been specified, the specification is ready for approval by the client and automated building of the application including creation or update of any database schemas.
The application is immediately ready for testing or general availability in the host environment. Test data can be automatically generated.
Early projects used Ms Word to directly create the specification; this option always remains available. Later projects enabled data sources and action statements to be edited interactively within the UI designer and used a project editor to manage projects and guide the development of the specification. A project editor provides error and completion checking; ensures all data items are uniquely identified and properly sourced; catches typos; validates specification statements; checks consistency with databases and validity of files and images; and provides context sensitive, interactive help.
The system specification can be generated from the editor at any time. The specification is the basis of the contract with the client and the application is always built from the specification.
Examples of specifications can be seen under Projects at www.specificationonly.com . The simple To-Do project example demonstrates how a useful running application can be created from wireframes with almost no specification language at all. The specification-only method uses inference where it can to automate the building of an application, however, a specification is meant to be specific with no ambiguity. It is not sufficient to say “calculate the price”, the calculation must be specified and approved by the client.
So it’s a simple but disciplined process for the developer and the client. Of course, there’s a lot going on under the covers to make this simple process work.
Specification Language:
The proof-of-concept specification language grew from the original manual specification language that had proven so successful. Over time it has been improved and extended to enable clients to use their own domain specific language. The proof-of-concept language has proven to be effective in delivering client applications and being acceptable to all stakeholders, however, there always improvements to be made.
The underlying structure of the language should support a curated core while enabling domain experts to extend the language to meet specific requirements using a managed language extension tool and repository.
Tools:
Intelligent wireframe designer
Project editor
project management
user interface refinement
contextual user help
process specification
database review & management
file management
specification generator
application builder
generation of test data
Specification language manager
The proof-of-concept application builder generates very small driver files that are interpreted by purpose-built native host engines to execute the applications. Engines were created for Windows and Cloud (Azure) hosts. An alternative architecture could generate java from the specification and use java virtual machines to execute the application.
The proof-of-concept used Balsamiq Mockups for wireframes. Very easy to learn and use but needs work to make it the ideal specification-only tool.
Host Environment:
The natural hosting environment for hosting specification-only systems is the cloud. This could be a public cloud like AWS or Azure or Google; or a private cloud fully managed by a large enterprise or government agency. Specification-only systems, however, are not limited to cloud hosting, all popular in-house and native device environments can also act as hosts. A significant advantage of using a major public cloud is that you can get best available security, reliability and scalability by default.
The specification-only execution environment allows you to get the best deal from the best host provider by enabling you to move systems or sub-systems to a new host.
Approval:
Ideally, all of the specification should be formally approved by the responsible end-user(s) or client representative(s). Where the developer is leading the project and is the project technical expert, the optional and more technical sections (Lexicon and Data Storage & Access) can be signed off by the project leader/facilitator.
Our experience is that the client representatives are comfortable in approving the specification and retain a good understanding of what will be delivered.
Ecosystem:
Specification-only systems will always operate and interact in a world that includes a wide variety of past and present technologies. Ease of integration with other applications and use of commonly used services and devices via simple specification language is vital.
There are an infinite variety of system requirements that may be confronted by a developer. The core specification language will frequently meet all of the system requirements, however, there will be occasions where it is necessary to extend the language to enable the client stakeholders to use the natural language of their domain using either the optional Lexicon within the specification or the language manager for storage in a domain repository.
Developers will find that their existing skills transfer easily to the Specification-Only method of development. They will enjoy a more creative, productive and satisfying experience.
Current and future program coders will continue to prosper within and outside the specification-only world. Within the specification-only environment, program coding will still be required to build tools, unique processes, language extensions, integrations to legacy systems, etc. For DBA’s and application product specialists it will generally be business as usual.
Software system consumers will experience a more consistent, professional process that gifts them genuine control of their software applications and budgets from initial contract through to ongoing maintenance of the running systems.
Software development and professional services organisations can remove risk and increase profit while providing a better service for their clients.
IT departments can focus on providing rock solid infrastructure and security while optionally outsourcing much of the business application development to business analysts with both technology and business domain knowledge.
For specification-only tool and platform providers, it’s happy days beginning with cloud-based services for UI design, project editor, language management and optional run-time services.
---------------------------------------------------------------------------------------------------------------------------