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.