Ever since I worked at Kockums Computer Systems AB in the late 80’s I have thought about the difference between Tableware development and Techware development. I think it is time that we finally divide them into separate categories of Software Development due to that, to my experience, the tableware development has had and has bad influence on Techware development.
Since Tableware is based upon a relational database with a set of tables and a set of screens to manipulate the tables it is very simple compared to Techware development. It is reflected in Requirement capturing, project planning, architecture, design, User interaction, coding, and testing. After developing a set of tableware systems in the 70’s I assume that the Waterfall method of development was very welcome to structure the work.
Capturing the requirements and showing the customer a set of “screens” was straight forward work and a good way to get an overview of the project and a base of the tables design. Each screen was independent and in a later stage it was easy to adapt the system by adding a new screen. Setting the requirement for a first version was probably easy for both the Users and the Developers.
The architecture was always the same as last system built. New architectures have evolved slowly, and the design was mainly focused at getting the tables correctly to reflect the user’s view of the system. However, it was important to design the relations correct to get good performance.
Planning, including resource estimation, was often done by calculating the number of tables and screens which gave a pretty good plan that was relatively accurate, and the predictability of the deliveries was good.
Tableware development was done and are still done with separated codebases that are independent of each other. The only “rule “to follow is how to manipulate the data in the relational database. Each screen can be implemented separately and then verified and when done it is done. In theory only table changes can break it and that is avoided.
In the 80’s and 90’s several methods of software development were introduced, and the experience of tableware development influenced both tableware development and techware development. Since then we have patched the methods based on tableware development to get them working for techware development.
In my opinion we need to define our software development into two categories, tableware and techware, and use different methods and tools to increase the productivity of techware development.