We develop Waza for software developers who are challenged to build high quality software, for example, for high performance and safety-critical systems.
Today, there exist many different approaches, languages, techniques and strategies each adding small improvements to software development. Waza takes a fundamental approach that provides a giant evolutionary leap forward towards engineering defect-free software. Waza takes the bull by the horns, so to speak. It’s concepts are highly effective and powerful because they improve software quality, reduce complexity, reduce development costs, and they are simple to use, all at the same time. This is so very promising that we are excited to bring these concepts to the software industry. With Waza your software development department may take a leapfrog of more than 10 years ahead of your competitors. Why? Well, conventional software engineering takes concurrency the wrong way for decades, which makes software engineering tremendously complex and unpredictable. Waza solves this problem without sacrificing flexibility. We can’t ignore concurrency. Concurrency is fundamental to thinking, designing, analyzing and programming systems. Thanks to concurrency we are able to understand the complex world we live in.
Engineering is based on theory and practice
Waza is the new generation programming paradigm based on a great philosophy with a formal foundation (mathematics). Waza brings theory and practice together in a way that software engineers easily understand. It bridges the gap between academia and industry with the intent to let software engineering evolve such that software engineers are able to create high quality software for increasingly complex systems of the future.
With engineering disciplines, such as electrical engineering, mechanical engineering, physics, etc, we don’t find big gaps between academia and industry. If there is a gap then there is a bridge. This is why these engineering disciplines gradually evolve, keeps quality high, and are successful in industry. Software engineering on the other hand evolves very slowly in many directions. In each direction, it has serious difficulties to keep the quality high. Best practice is no longer sufficient. We believe that one of the biggest gaps between computer science and the software industry is the different views on ‘concurrency’. Software engineering is the only discipline with a false understanding of concurrency. Here, concurrency is has become something artificial and a source of complexity. It is similar to parallelism and it is associated with multithreading. Most software developers try to avoid concurrency, because it complicate things. Other engineering disciplines use concurrency to their benefits and it helps them to simplify things. We seems to do something wrong! In our daily life, we use concurrency to understand or operate in this concurrent world we live in. Concurrency isn’t parallelism and it is definitely not a technology. Concurrency is human-related, it is our view on real-world systems. Software engineers who try their best to ignore concurrency are compensating by becoming the best at learning workarounds. Our experience is that these are not the best software engineers. Waza can help you to benefit from concurrency and to become a better software engineer who is in control of the complexity of systems and delivering high quality software (according to academic standards).
To whom is Waza useful?
Waza is useful for all software developers, e.g. programmers, designers, architects and testers. Waza is also useful for academic researchers, students and hobbyists. Waza is currently available for Java. Waza will also be available for other modern programming languages in the near future. Waza is highly useful in agile software development environments.
Where to begin?
Download the Waza API for Java and the Waza Channel Generator tool on the downloads page. See the examples and try to create your own concurrent program in Java. You will see how easy it to create parallel processes without programming with threads directly. You will also experience how simple and powerful the library is. It offers solutions to parallel issues in a simple and elegant way. What you need to understand the semantics of the channels and the process constructs; e.g. termination-events and communication-events. You will notice that these semantics are based on harmonic and compositional concepts. You can use them to create the most sophisticated software for the most complex systems. There is no more need to implement the complicated synchronized-wait-notify
constructs in Java. You will also learn that object-orientation is better applicable with processes than with threads.
Waza
Waza is Japanese for technique, art, craftsmanship, accomplishment, ability and performance. Waza is expressed by one Japanese character, which denotes a synergy of these words with a spiritual flavor. It is a term that is often used in martial arts, where offensive and defensive techniques are practiced and studied. It is also about listening to your inner self and expressing your thoughts, feelings or intuitions to the outside or real world using techniques. In sports, Waza is the balance of mind, body and spirit. In art, it is expressing your thoughts, feelings or spirit through painting, playing an instrument, singing, or writing. In engineering, it is about understanding things and building something using techniques. Techniques are studied, trained and applied. We try to improve ourselves by inventing and applying techniques to reach perfection and to become effective.
If you google for ‘waza’ or ‘concurrency’ you may find the Waza Heroku conference in 2013 and Rob Pike’s talk about concurrency that he gave at that conference. Rob Pike’s thoughts about concurrency have lots in common with Waza’s concurrency here. Waza’s concurrency is by no means derived from this event. Wazalogic exists years before the Waza Heroku conference in 2013 and my research about concurrency is since 1996. This is a happy coincidence, because I am not the only one who understands that Waza is essential to engineering…and that concurrency is essential to Waza.