Software development is an often complex affair, beset by a multitude of difficulties ranging from talentless developers, feature bloat, stakeholder politics and poor planning.

The following cartoon, by Alex Gorbatchev, is a modern take on an old, yet still relevant, problem; the reasons for software engineering failures.

Software Engineering Explained

Designing systems today is difficult because there is no consensus on what the problems are, let alone how to resolve them.

Software engineering is often used to solve complex problems, problems where it’s impossible to visualise all the difficulties you’ll run into without actually building the software. This has led to what is known as Wicked Problems. In other words, writing code doesn’t kill projects, too much planning, too much functionality and too many stakeholders do!

Wicked problems arise when an organization must deal with something new, with change, and when multiple stakeholders have different ideas about how the change should take place.

Every wicked problem can be considered a symptom of another problem.

The article goes on to recommend the iterative development process, first proposed by Takeuchi and Nonaka in “The New New Product Development Game” called Scrum. An iterative, as opposed to a Waterfall, process is clearly a step in the right direction. The customer really needed a simple tyre swing but couldn’t articulate that in a meaningful way. Since we’re software developers, not Zen Masters, an answer is to quickly develop a solution in for the customer and keep evolving that solution based on real usage. That way, we can get from the plank to the tyre swing without the need for the roller-coaster ride of complication.

Looking like something out of a James Bond movie the ‘BOB‘ is a personal underwater scooter which replaces scuba gear. The pilot sits on a seat under which ballast weights are secured, with their head inside a clear acrylic bubble which is filled with air from a storage tank. Apparently it provides a more comfortable underwater experience than breathing through a regulator. The training course can be completed in a few minutes. The craft is powered with a 35 pound thrust electric motor which providing a top speed of about 2.5 knots. The craft is navigated with a combination steering and instrument console which provides control and systems monitoring. Novices can master the controls in minutes. Shame you look like a twit riding one!

Breathing Observation Bubble

The Law of Demeter (LoD) as it is commonly called, is really more precisely the “Law of Demeter for Methods”. It is a design-style rule for object-oriented programs, but can be applied to ‘pseudo object-orientated’ languages such as ColdFusion (with regard to the use of ColdFusion Components). In essence it is the “principle of least knowledge” regarding the object instances used within a method. The idea is to assume as little as possible about the structure and properties of instances and their sub-parts. Therefore, it is okay to request a service of an objects instance, but if I reach into that object to access another sub-object and request a service of that sub-object, I am making an assumption of the deeper structure of the original object. This results in tight coupling, which is a sign of a poorly structured application.

The Law of Demeter says that if I need to request a service of an objects sub-part, I should instead make the request of the object itself and let it propagate this request to all relevant sub-parts, therefore the object is responsible for knowing its internal make-up instead of the method that uses it.

Stated in plain English:

  • You can play with yourself
  • You can play with your own toys (but you can’t take them apart)
  • You can play with toys that were given to you; and
  • You can play with toys you’ve made yourself.

Stated more succinctly, the Law of Demeter for Functions says that:

  • Your method can call other methods in its class directly
  • Your method can call methods on its own fields directly (but not on the fields’ fields)
  • When your method takes parameters, your method can call methods on those parameters directly; and
  • When your method creates local objects, that method can call method on the local objects.

The basic idea is to avoid invoking methods of a member object that is returned by another method. When you do this, you make structural assumptions about the container object that may be likely to change. The container object may later need to be modified to contain a different number of the contained objects, or it may end up being changed to contain another object which contains the original component object. If the ‘returned’ object isn’t a sub-part of the object whose method was invoked, nor of some other object, then it typically is not a violation of LoD to invoke a method of the returned object (particularly if the object was created by the invoking method).Using the Law of Demeter (LoD) you instead ask the container to invoke a method on its elements and return the result. The details of how the container propagates the message to its elements are encapsulated by the containing object. This results in weak coupling and strong cohesion, the general goal of high readability and maintainability of an application. This is highly desirable when building a ‘modern’ ColdFusion application as it is all too easy getting trapped into the bad-old-days of “spaghetti code”.

A side-effect of this is that if you conform to LoD, while it may quite increase the maintainability and ‘adaptiveness’ of your application, you also end up having to write lots of little wrapper methods to propagate methods calls to its components, which can add development time overhead.

Thousands of businesses worldwide face the challenge of establishing their web presence; a goal difficult to achieve without efficient web site development and testing tools. If someone where to ask you how good your website was, how would you answer; could you answer? There are so many factors to take into consideration, such as code validation, speed of download accessibility, usability etc, that there is no one correct answer and subsequently no one website that can provide you the definitive answer.

This article was inspired by a great blog post at Aviva Directory, entitled Grade Your Website: 31 Free Online Tests.

Below is a compendium of tools I use on a regular basis to test website I work on, based on Aviva Directory’s headings (incidentally they list the same tools I use regularly).:

Code Validation

The WDG HTML Validator is an excellent tool for identifying syntax errors on pages driven by markup languages. There is also an option to recursively check for errors on every page in the website directory, which is invaluable when checking large, dynamic websites.

The W3C Link Checker searches for and identifies broken links for a given URL. The tool specifically checks that all the links are de-referenceable, no links and anchors are defined twice and warns about invalid http and directory redirects.

Accessibility

Watchfire’s WebXACT is a must use tool for all serious designers and developers. The tool lets you test single pages and generates a very detailed report on the quality, accessibility and privacy of a website.

Speed

Web Page Analyzer from Website Optimization is an excellent tool that calculates page size, composition, and download time. The script calculates the size of individual elements and sums up each type of web page component (objects, CSS, images etc). Based on these page characteristics the script then offers advice on how to improve page load time. The script incorporates best practices web site optimisation techniques into its recommendations.

Browser Simulator

Browsershots is a tool, created by Johann C. Rocholl, which takes screenshots of your website in various browsers and platforms including Firefox and Internet Explorer on Windows, Firefox and Safari on Mac OS X and Iceweasal and Konqueror on Linux. When the user submits a URL it is added to a job queue. Unfortunately the queue requires you to wait up to three hours before retrieving your screenshots, but the results provide a clear indication of how the website will be received by different user setups.

Search Engine Optimisation (SEO)

SEO Workers SEO Analysis Tool is an extremely useful tool that analyses an assortment of page features including meta tags, keyword density and load time. A user simply submits a URL for testing and the report is returned.

Revolution Art Fist

RevolutionArt is an international magazine edited in pdf format as a collective sample of the best of the graphics arts.

It’s a revolutionary platform, a massive propaganda to communicate messages and make the people think about them.

The objective of RevolutionArt is the one to serve as a inspirational source to artists, advertisers, photographers, designers and communicators in general who wish to explore new alternatives of expression through graphical samples of design, photo, ads, and general arts.

The magazine is distributed freely in digital format through http://revolutionart.publicistas.org and it’s available for the users in pdf format to download and share.

Download Issue One
Download Issue Two
Download Issue Three
Download Issue Four
Download Issue Five

Swiss design company Rinspeed, makers of the Rinspeed Splash have created a true sports car which transforms into a hydrofoil speed boat capable of a very respectable 50 kph. Under the ultra-light carbon-composite skin lies much more than just an agile and lively sports car. The Rinspeed “Splash” is the true incarnation of a really cool and fun sports toy. At the push of a button a cleverly thought-out hydraulic mechanism transforms the sports car into an amphibious vehicle. A highly complex integrated hydrofoil system enables the Splash-to-fly at an altitude of about 60 cm above the water.

On land, on water, and in the air

The almost magical transformation from a street vehicle into a floating and “flying” all-rounder is made possible by an electronically controlled hydraulic system with an array of sophisticated sensors.

The transformation starts with the nondescript rear panel, which flips up to reveal a Z-drive in horizontal rest position, borrowed from a watercraft. The Z-drive is fitted with a conventional 3-bladed propeller and can be lowered to its fully standing position from the cockpit. The position of the drive is infinitely variable, which guarantees immediate propulsion upon entering the water. A custom-designed transfer case sends power to the rear wheels, the propeller or both, depending on the input from the pilot. Starting at a water depth of about 1.1 meters the Z-drive can be lowered all the way to its fully standing position. Steering commands are entered via the steering wheel and transferred to the Z-drive.

At a minimum water depth of about 1.3 meters the pilot can deploy a highly complex system of hydrofoils integrated into the sleek body of the Splash. The Formula-1 type rear spoiler rotates 180 degrees down and comes to rest below the Splash. To the left and right of the high side walls of the cockpit two hydrofoils integrated into the outside skin rotate 90 degrees to point straight down before unfolding into their lifting V shape.

The angle of attack of each hydrofoil can be adjusted individually by the pilot to account for the various operating states. Already at low speeds the vehicle begins to lift itself out of the water. The fully suspended position can be reached at speeds as low as 30 km/h. The unusual vehicle then travels as a true hydrofoil at an altitude of about 60 cm above the water. Even the wheels are free of water contact. On smooth water the Splash is capable of reaching a top speed of about 80 km/h (approx. 45 knots).

Naturally the Splash can also be operated as a conventional amphibious vehicle. With retracted hydrofoils the Splash reaches a top speed of almost 50 kph (approx. 28 knots). That is fast enough for water skiing or knee boarding.

The body of the Splash is designed to be watertight. Additional buoyancy chambers provide extra lift. Also borrowed from shipbuilding are a bulkhead design with independent chamber.


Compact natural-gas power from just 750 cm3The Splash is powered by an environmentally friendly bivalent turbocharged natural-gas engine. Natural gas is an extremely clean-burning fuel that consists almost entirely of methane with near-zero sulfur content. The Splash is the world’s first amphibious vehicle to be equipped with this future-oriented engine technology.

Preserving the environment does not mean sacrificing driving fun - and neither does the low overall weight: The turbocharged two-cylinder four-valve engine from Weber Motor powers the watercrafts and snow mobiles from Polaris, albeit as a gasoline-powered engine. In its bivalent turbocharged natural-gas configuration the engine delivers a maximum power output of 140 hp/103 kW at 7′000 rpm. The peak torque of 150 Nm is available at a low 3′500 rpm. Street performance is nothing to be ashamed of: The 825 kg quick-change artist accelerates in about 5.9 seconds to 100 km/h and reaches a top speed of 200 km/h.

No bounds

The sleek lines of the Splash draw attention at first glance. However, one of the basic ideas behind the Splash concept was to design an automobile whose multi-functional capabilities are not immediately apparent. Hardly anyone will realize that the soft-edge design Splash can fulfill the age-old child’s dream of almost boundless mobility at the push of a button.

The entire body of the Splash consists of multi-layered carbon composite, a state-of-the-art plastic mainly used in Formula One racing. It offers exceptional stability at a low specific weight. The striking bodylines of the Splashare the expression of the fine art of engineering. The low windshield protects against drafts and its tinted Folia Tec glass contributes to the futuristic chrome look.

The sporty stainless-steel exhaust system from Remus provides the adequate powerful engine sound. The chrome-plated dual exhaust tips give the Splash a unique and highly dynamic rear appearance.

The lightweight body sits on a suspension custom-developed by KW automotive. It features inboard shock absorbers, adjustable ride firmness and height. The suspension engineers succeeded in creating a suspension that represents a perfect synthesis of ride comfort and sporty handling characteristics.

In.pro. custom-developed chrome-plated bi-xenon headlamps for the Splash as well as LED taillights. The latter not only represent the beginning of a new design trend, their ability to come on almost instantly also contributes to the prevention of accidents.

Aye aye, Captain

The interior of the Splash clearly pays tribute to its maritime qualities. Lightweight and waterproof plastics cover the tubular frame and the ergonomically shaped plastic seats. The small sport steering wheel is perfect for the agile handling characteristics of the lively and highly maneuverable Splash. A number of chrome-plated shift knobs, which govern the amphibious functions and the angle of attack of the hydrofoils, exude an atmosphere reminiscent of an airplane cockpit.

Hydroplaning - on water only

The Rinspeed Splash runs on Continental SportContact tires with 17-inch diameter in front (215/35-17) and 18 inches in the back (225/35-18). The Continental tires combine environmentally friendly design, very good handling characteristics and excellent grip. They are mounted on chrome-plated aluminum rims (7×17″ front, 7.5×18″ rear) custom-made by Barracuda.

The Fusedoc is a standardized way of documenting our code so that all members of the web team can more quickly and efficiently create and maintain ColdFusion templates.To see some examples of how it can be used and tools used to parse the information go to GrokFuseBox.

This Fusedocs file contains the Fusedoc DTD, an example ColdFusion page and documentation on the Fusedoc methodology.