Faultfree Programming

Faultfree Programming

(Actually, on December 17, 2022, this project is shelved indefinitely.)

what how foundations plan tools related work Personal Pages (November 1, 2004)

What Is the Problem?

Software is used to be faulty. I wish, it won't be normal any more, that the software engineering floods the world with spoils, that everybody knows they are spoils, but nobody feels concerned with that. I feel concerned and I want to do something little to change that. Unfortunately, quality of software cannot be managed like quality of other industrial products, because:

  • faults in software are not material faults, but construction faults

  • software engineering has its specific features, different from other engineering disciplines

  • software technology is immature

  • software engineer solves complex problems that challenge her/his mental capability

  • while consistency between implementation and specification can be managed by a formal, sometimes even rational development process, consistency between the specification and real needs of a customer or user cannot be managed in a rational way only

How to Solve the Problem?

Making no errors seems to be one of the most feasible solutions. In order to approach this goal, the following subgoals should be met:

  • to base requirements gathering on sound gnoseological (epistemological) foundations

  • to base conceptual modeling on sound ontological foundations

  • animating every model starting at requirements, in order to allow easy evaluation

  • preventing introduction of faults by keeping every model logically consistent

  • to generate prototypes automatically

  • to assist the programmer implementing software faultfree - even distributed, concurrent, or otherwise nonalgorithmic software

Theoretical Foundation

Only basic well-known theories are employed:

  • ontology and gnoseology (epistemology) is a foundation for requirements gathering, modeling and evaluation

  • first-order predicate logic allows keeping logical consistency of goals and invariants

  • proper understanding of time in concurrent systems limits the need of temporal logic and special calculi like CCS or CSP

  • sound ontology radically simplifies object-oriented paradigm, conceptual modeling, design, as well as implementation and allows to reduce UML+OCL to a subset of meaningful concepts

  • procedure of assisted faultfree implementation can simply extend methodology of structured programming

What I will need in the near future (several months), it is possibility to consult problems and get review.

The Plan

My plan is:

  • developing a tool now in order to perform some case studies

  • performing case studies (e-mail or BBS, tractor engine tester, agenda of assembling and trading PCs...)

  • preparing presentation (e.g. discussion classes)

Four discussion classes are prepared: information, ontology (foundation of conceptual modeling), gnoseology (foundation of requirements gathering), time (foundation of real time and distributed systems).

Tools

MS Office appears to be a good tool for drawing diagrams, including UML. MS Excel allowed me to provide easily my former lectures on sw engineering with models that simulate behavior of finite automata and show the simulation as animation of state-transition diagrams. This has been appreciated by the public.

Now, preliminary versions of inference machine and Prolog compiler are released. UML+OCL simulator is in early stage of development, nonetheless reusing the same inference machine makes the task easier. Assisted faultfree implementation is now just another intention to employ the inference machine.

Jenny, the new inference machine is small, fast and efficient analytical tool applicable to any computation which follows user-specified logical rules. The special strength of Jenny is its connection with MS Excel spreadsheets, SQL databases and web pages.

See the complete list and download the tool.

Related work

My way to the idea of "faultfree programming"

Similar works of other people

ACM SIGSOFT Software Engineering Notes vol.25, nr.1 published information on similar activities.

ACM SIGSOFT Software Engineering Notes vol.27, nr.2, Mark Doernhoefer reviewed sites on sw development processes.


My name is Ivan Ryant. For more details on me visit my personal pages. There, you may get my professional CV, see pictures, learn of my hobbies and interests, and download some papers and software.