Formal Methods of Software Development

Instructor: David Gloag

David has over 40 years of industry experience in software development and information technology and a bachelor of computer science

In this lesson, we'll look at formal methods of software development, why the industry is reluctant to adopt them, and ways to avoid software errors. By the time you are done, you should have a more complete understanding of this interesting topic.

Delivering Correctness

Software is becoming more and more complex with each passing day. If you don't agree, just consider some of the common applications you use. For example, is the email application on your laptop the same as it was a couple of years ago? Is the instant messaging application on your cell phone the same? Not likely. The fact is that popular, frequently used applications such as these are constantly changing. They have to or people will stop using them. Add to that the fact that they must work correctly when released, and you have a major problem for developers. If this is the case, how do developers do it? How do they constantly deliver correctness? One way is to use 'formal methods'.

What are Formal Methods of Software Development?

Formal methods of software development are mathematical approaches or techniques that are used to confirm the correctness of the software being developed. They use a very specific definition language to describe each capability the system is to include. Rules, objects, and relations form the basis of this language, and when combined, provide a step by step confirmation of the system. Think of it like a series of checksums. You calculate each, one by one, then compare them to their expected values. If they match, you're good. You can move on to the next. If not, you only need to look as far as the calculation that failed. When you are done, you can be confident the system will work as described by the language.

Why is the Industry Reluctant to Adopt Formal Methods?

It is interesting to note, but the software industry as a whole seems to avoid formal methods. In fact, the vast majority of developers today haven't used formal methods in their professional lives. Their experience with these methods is limited to their study of formal methods back at their university or college. Why? Because they have a few significant disadvantages. These include:

  • Significant Development Time - it takes a number of very tight steps to define and confirm each capability required in the definition language. Think of it like writing software in assembly language versus C# or Java. It takes a lot of effort to describe anything significant.
  • Expensive - anything that takes significant time will cost more. This goes without saying.
  • Difficult to Understand - there are several things that must be done for each capability; it is highly mathematical in nature; it stands to reason that it will be challenging to learn.
  • Significant Training Requirements - few will know anything about formal methods, so each team member will have to be trained.

What are Some Ways to Avoid Errors in Software?

Errors in software do occur. This is a fact of life. But there are a number of ways to avoid them without using formal methods. Here are a few:

To unlock this lesson you must be a Member.
Create your account

Register to view this lesson

Are you a student or a teacher?

Unlock Your Education

See for yourself why 30 million people use

Become a member and start learning now.
Become a Member  Back
What teachers are saying about
Try it risk-free for 30 days

Earning College Credit

Did you know… We have over 200 college courses that prepare you to earn credit by exam that is accepted by over 1,500 colleges and universities. You can test out of the first two years of college and save thousands off your degree. Anyone can earn credit-by-exam regardless of age or education level.

To learn more, visit our Earning Credit Page

Transferring credit to the school of your choice

Not sure what college you want to attend yet? has thousands of articles about every imaginable degree, area of study and career path that can help you find the school that's right for you.

Create an account to start this course today
Try it risk-free for 30 days!
Create an account