Typestate: A programming language concept for enhancing software reliability | IEEE Journals & Magazine | IEEE Xplore