User Control Panel
Search iVirtua
Advanced/Tag Search...
Search Users...
What is iVirtua Exclusive Community?
  • An exclusive gaming industry community targeted to, and designed for Professionals, Businesses and Students in the sectors and industries of Gaming, New Media and the Web, all closely related with it's Business and Industry.
  • A Rich content driven service including articles, contributed discussion, news, reviews, networking, downloads, and debate.
  • We strive to cater for cultural influencers, technology decision makers, early adopters and business leaders in the gaming industry.
  • A medium to share your or contribute your ideas, experiences, questions and point of view or network with other colleagues here at iVirtua Community.
Guest's Communication
Live Chat
Teamspeak (VOIP) Audio Conference
Private Messages
Check your Private Messages
Choose an iVirtua Community theme to reflect your interests...
Business Theme
India/Arabic Theme

Gaming Theme
iVirtua Recommends
Fly Emirates Advertising
Why simplicity starts with design - Definitive Guide
Digg This Digg Topic Tag it on Tag topic on On Technorati Search Technorati Search Post to Slashdot Post to Slashdot
You are currently in Graphic Design, Web Design and Creative Arts Concepts
Post new topic Reply to topic
Fri Jan 18, 2008 6:48 am Reply and quote this post
Four top tips
I was talking with a fellow IT professional recentlywho was saying that you should "program simply" but "design withcomplexity". I do understand the point that he was trying to make -that is, during the design stage take into account the problems in yourdomain so that these have been worked out as much as possible beforethe coding starts.
In many ways this is sound advice as otherwise a solution may beproposed that is inappropriate, inefficient or impossible to implement.However, if this is taken to the extreme, then the design may take onthe importance of the final deliverable in the minds of the designers.It may also become complex enough to be worthless!
document.write('\x3Cscript src=";'+RegExCats+GetVCs()+'chl=plan;pid='+RegId+';'+RegKW+'maid='+maid+';test='+test+';pf='+RegPF+';dcove=d;sz=336x280;tile=3;ord=' + rand + '?" type="text/javascript">\x3C\/script>'); <ahref=";chl=plan;dcove=d;sz=336x280;tile=3;ord=XPakY0gD9jwAAHz4aNgAAAJg?"target="_blank"><imgsrc=";chl=plan;dcove=d;sz=336x280;tile=3;ord=XPakY0gD9jwAAHz4aNgAAAJg?"width="336" height="280" border="0" alt="" />
Last timetime I argued to "Keep it Simple Stupid", or KISS, with regard tosoftware implementation. However, it is not just the software thatneeds to maintain its simplicity - it is also the design. That is notto say the design will be simplistic but rather that it should be assimple as it can be in order to fulfill its requirements.

This in itself sounds straight forward, but consider what I havesaid here: that the design should be "as simple as it can be in orderto fulfill its requirements" - that is a slightly odd phrase. What I amtrying to get at is that the design should be no more complex than isneeded to help to understand how the software will need to beconstructed.

This differs from the requirements of the software itself. Remember,a design is an abstraction of the software that will be written - it isnot the software itself. At the end of the day, it should not be ascomplex as that software - it's a simplified representation of it.

Clear models in any Java-oriented design process, modeling is a keyelement. An overly complex model may actually be less useful than asimple model anyway. Why? Because a complex model, with a large numberof classes, objects, relationships and use cases may actually obscurethe meaning originally intended. Worse, the density of elements in themodel may actually mean that developers get "model overload" and switchoff.

If this happens, then the formal model may be forgotten anddevelopers will work from their own interpretation of the requirements.This may result in the production of an implicit design, which is nomore than a set of mental models.

So, how can simplicity in design be achieved? Here are some practices that I believe can help:
Don't try to test designs
As I have said above, a design is an abstraction of the software tobe implemented. As such it is not possible to test a design to checkits completeness, its suitability or to validate its functionality. Sowe should not attempt to do so. If we need to validate part of a designthen prototypes can be built. If we need to explore some complexconcept then a proof-of-concept implementation can be created. Weshould not pretend that a design is something that can ever be as allencompassing or complete as the resulting software. Instead the testshould be: "Is it fit for purpose?" If it passes this test, then it hasmet its goals.
Use the simplest tools
Tools are another area in modeling that people get hung up on. Somemodeling tools tend to promote the creation of large complex models -this may be to do with the modelers creating models for their own sake.However, the use of a dedicated, and isolated modeling tool tends tohelp promote this. Personally I am a big fan of tools such as Omondo- the Eclipse plug-in that can create models from Java source code andsource code from Java models. I like such tools because they arelightweight, do not get in the way of the modeling process and tend torestrict the creation of very large, and potentially meaningless,models.
Use Patterns gently
Design patterns are good things, yes? Not always. Due to their verynature, if a design includes a number of interacting design patternsthe end result may become, at best, complex and, at worse, opaque andpotentially useless. However, I sometimes wonder whether some designerstry and show how clever they are by producing complex designs thatencompass numerous design patterns. As Scott Ambler has said: "Use design patterns gently!"
Design with others
Of course most designers do not start out with the aim of producingoverly complex designs and models. Actually achieving simplicity indesign is a much harder thing to succeed at, than to strive for. Oneway to keep things simple is by designing with others. In my experiencethis tends to help to things stay focussed, to ensure that the designsremain meaningful and that they are as clear as possible given theapplication. It is essentially the design equivalent of XP's LINK pair programming.
SummaryIn conclusion, it is important to note that I am not advocatingsimple design, but rather the goal should be to aim for the simplestdesign that fulfils its purpose. Thus we should aim for simplicity indesign just as we should in actual implementation.

Contributed by Editorial Team, Executive Management Team
372659 iVirtua Loyalty Points • View ProfileSend Private MessageBack to Top

Related Articles
Post new topic   Reply to topic

Page 1 of 1

iVirtua Latest
Latest Discussion

Latest Articles and Reviews

Latest Downloads
Subscribe to the iVirtua Community RSS Feed
Use RSS and get automatically notified of new content and contributions on the iVirtua Community.

Tag Cloud
access amd announced applications author based beta building business card case company content cool core course cpu create data deal dec demo design desktop developers development digital download drive email feature features file files firefox flash free future gaming google graphics hardware help industry information intel internet iphone ipod jan launch linux lol love mac market media memory million mobile money movie music net nintendo nov nvidia oct office official online patch performance playing power price product program ps3 pst publish ram release released report rss sales screen search security sep server show size software sony source speed support technology thu tue update video vista war web website wii windows work working works xbox 360 2006 2007 2008

© 2006 - 2008 iVirtua Community (UK), Part of iVirtua Media Group, London (UK). Tel: 020 8144 7222

Terms of Service and Community RulesAdvertise or Affiliate with iVirtuaRSSPress Information and Media CoverageiVirtua Version 4PrivacyContact