Design is a contexual process

(Though following is written from point of view of software designer, ideas are valueable to any engineering designer.)

Software design is creative process. Design involves significant mental efforts towards creating new ideas or using existing ones for a purpose. Software does not exist before you design it. You, as a designer, play a role of The God. You make decisions about structure and behaviour of software-to-be-constructed.

Design is more of an invention and less of a discovery. As a creator, you may take guidance from other experienced creators or knowledge-base, but you must never forget that your design is primarily your creation and it is up to you to make final decisions about it during specific project, and be accountable for it as a designer.

And design is done, by definition, before construction. Note that design may be for a system, for a subsystem, for a component, for a class, for a method or for any other element. Sometimes you first construct software, then learn from software construction and then design a better one. Still, this better design will be meaningful only if it is implemented. In the most basic sense, designs are created for implementations. That is where painters are luckier than building architect. Both draw pictures of some sort. But architect’s drawing is called design as it is intended to be implemented. This essential property of design that, it is intended to be implemented, is called feasibility of design. Every design must be feasible to sufficient degree.

Any design can be subjectively judged for quality from judgement of how easily design can be implemented in a context. Obviously, judge’s skill and knowledge about both construction and design comes into picture. This make design evaluation two-folds.

1. Design must be fit for purpose sufficiently in a context or in other words, design must be sufficiently easy (ignore inherent complexities) to use for constuction for a context.
2. Design’s quality attributes may easily become subjective in practical situation of a specific project.

Overall, design is very context-sensitive activity. If you do not understand context of design, then you may end up taking inappropriate design decisions. Let us try to see what kind of contextual information you need to do good design.

Purpose: If you are not purposeful, either you will come up with design which will not serve its purpose or design will not allow constructors to produce software with proper quality attributes. Without purpose, you will not have any yardstick to measure success of design. This usually means your clarity about software developement lifecycle objectives.

Business: Beyond knowing verticals, you should be clear about your customer’s business and his expectations in context of a specific project.

Design Tools and Processes: Beyond knowing modelling platform e.g. UML & tools in combination with methodologies e.g. OOAD, you need to know contextual application to specific project after tweaking generic ideas.

Construction Platform: If you do not have good contextual information about construction platform, you may end up doing less feasible design.

Organization Platform: You will work for yourself or somebody else. Make sure you know ways of working within your organization or your project team or your immediate-colleagues team in such a way that your personal context is aligned with organizational context.

Any other project specific contextual information: This one is toughest, and this is what makes each project unique. This is where your creativity, communication and analytical abilities are tested. No matter what, each project has this and you have to unconver this context.

Summary in nutshell: Design is a contexual process.

You can utilize guidance from articles, knowledgebase, best practices, patterns, frameworks, consltants etc but finally, you have to apply all guidance according to your understanding of your context as a designer. You do not have to apply all generic things as they are. In a hindsight, you must have kept your brain on while you have applied generic ideas to your specific project!

  • RSS
  • Print
  • PDF
  • Twitter
  • Facebook
  • LinkedIn
  • Google Bookmarks
  • Digg
  • Add to favorites
  • StumbleUpon

Post a Comment

Your email is never published nor shared. Required fields are marked *