Seamless development: focus on the essential
Are you tired of splitting your personality?
With traditional software techniques, you are told to do everything twice and more in different, incompatible notations. Requirements analysis uses formalisms light-years away from programming. Design is again something else. Then you switch to implementation with programming languages that lack appropriate abstraction mechanisms. The tools too are radically different: a requirements environment, a design tool, a compiler and IDE. Each time you have to change your mindset completely, turning from Dr. Jekyll to Mr. Hyde.
Where things go really bad is as soon as any problem detail changes — and change they will! Because the notations at different levels, say UML and Java, are so far apart, you quickly sacrifice one of the two sides. Since in the end “it’s the implementation that counts”, the design and the requirements soon become little more than historical documents: they describe a vision that once existed in someone’s mind but has lost touch with the reality of the code. If there’s anything almost as bad as no design or no analysis, it’s design and analysis that say one thing while the code does something else.
A single framework
Enter seamless development. Stop splitting your personality. Throughout the process of software development, it’s the same issues that are at stake, the same principles that apply, and the same techniques that give you solutions. With object technology and Design by Contract, you can describe a system in a single notation, using the powerful tools of classes, inheritance (single and multiple), deferred classes, contracts, genericity, information hiding.
What changes is the level of abstraction: at analysis time you describe the problem and the external constraints; at design time you describe the architecture of the solution; at implementation time you describe the inner workings of that solution. But all the superficial differences are removed: the notation is the same, the tools (IDE) are the same, the productive ideas are the same.
Welcome to the power of seamless development. No more heavy transitions between incompatible tools, notations and concepts. You concentrate on finding powerful modeling and implementation abstraction. When you hit on a great idea appears at any stage, you can carry it through to the others. For example a class might first start at the analysis level, describing a concept from the problem domain. You then refine it into an architectural unit at the design level. You finally implement it, directly or through subclassing, to produce an implementation that is faithful to the analysis and design concepts.
Reversibility and round-trip engineering
Seamless development delivers even more of its power when circumstances change: new user requirement, customers changing their minds (which customer doesn’t?), new performance constraint, new design idea… In software, the only constant is change; after all, there is a reason the field is called software. With traditional techniques, change is the enemy. With seamless development it becomes a normal occurrence, directly supported by the method, language and tools.
Analysis or design change? Carry it seamlessly to the next levels including implementation. Implementation change? Update the design and analysis effortlessly — they are just some of the classes in your system! This reversibility is the natural consequence of seamless development. It makes Eiffel the only fully roundtrip environment. Everything is part of the same framework.
Tool support for abstraction
The levels of abstraction may need, of course, to be separated. This is where the EiffelStudio tools, in particular the documentation tools — the best in the industry — kick in: they will let you display the level of abstraction that fits your need best at any particular time.
Want to see a graphical picture of the structure? Just use the Diagram Tool to show a clear structural diagram, UML or BON. Want to see the class interfaces? Don’t write anything new (like interface documentation, not anyone’s favorite pastime) but have the “contract view” extracted automatically for you. Want to connect elements of the software with parts of a requirements document — Word, PDF, HTML…? Just use the Eiffel Information System (EIS) to provide traceability both ways.
The tools support textual as well as graphical views. Sometimes a picture is worth a thousand words; sometimes you just want to use the words for detail and precision. With EiffelStudio and seamless development, you don’t have to choose. Use the diagrams when you want, drawing class relations naturally and effortlessly; use text when you find it more appropriate. No need for complex and expensive “model-driven” engineering tools: the text and the diagrams are automatically updated to reflect the latest changes on either side. That’s true roundtripping, Eiffel style: no trip!
Want to stop splitting your developer personality?
You don’t have to hop back and forth between multiple incompatible formalisms. Experience first-hand the power of seamlessness and reversibility by downloading EiffelStudio and following the instructions on Seamless Development in the Eiffel Documentation.