OOAD

Software Design Fundamentals

Software Design Fundamentals:

Let us explain and understand the following Design Terms:

1. Design Principle

2. Design Pattern

3. Design Characteristics

4. Design Paradigm

5. Design Pattern Language

6. Design Standard

7. Best Practice

Design Principle:

Requirements Gathering: what It is?

Technology Point
Having identified a business need for new software, IT managers must make the decision to either build a custom application or purchase a commercial-off-the-shelf (COTS) product. Regardless of the choice, IT must make sure business needs are adequately understood so that it can deliver a suitable solution. In some cases, the build versus buy choice can depend upon what the business requirements are (e.g. whether customization is necessary or cost effective).

Web Design and Usability Guidelines from the Experts

The US Department of Health and Human Services has released the 2006 edition of Research-Based Web Design and Usability Guidelines. This book is a valuable tool for Web designers and editors. It was prepared by leading usability researchers and contains sections devoted to best practices for:

•Process and evaluation.
•Page layout.
•Navigation.
•Links.
•Content organization.
•Search.
•Usability testing.

SOA Repository Best Practice

SOA Repository Best Practice
By: John Moe, Head of Business Integration, TORI Global
Tuesday, December 8, 2009

For those of us who have been developing applications for many years (think COBOL & Assembler from the 70s and 80s), the idea of having a code library (programs and routines) is nothing new. However for the Web Services generation, this concept has taken a while to re-emerge, but has now been packaged in the form of a services registry and/or repository.

Why method calling through interfaces are slower than calling from abstract classes?

What is SOA?

SOA establishes an architectural model that aims to enhance the efficiency, agility, and productivity of an enterprise by positioning services as the primary means through which solution logic is represented in support of the realization of the strategic goals associated with service-oriented computing.

Factory Method Explained

Intent
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses. [GoF, p107]
Defining a "virtual" constructor.
The new operator considered harmful.

Problem
A framework needs to standardize the architectural for a range of applications, but allow for individual applications to define their own domain objects and provide for their instantiation.

Discription

Interfaces in C#

in

An interface contains only the signatures of methods, delegates or events. The implementation of the methods is done in the class that implements the interface, as shown in the following example:

interface IExampleInterface
{
void ExampleMethod();
}

class ImplementationClass : IExampleInterface
{
// Explicit interface member implementation:
void IExampleInterface.ExampleMethod()
{
// Method implementation.
}

static void Main()
{
// Declare an interface instance.
IExampleInterface obj = new ImplementationClass();

Dealing with Changes: Using Functional Decomposition

Using modularity to isolate variation

Example 1-1. Using Modularity to Contain Variation
function: display shape
input: type of shape, description of shape
action:
switch (type of shape)
case square: put display function for square here
case circle: put display function for circle here

Problems with modularity in a functional decomposition approach

Then, when I receive a requirement to be able to display a new type of shapea triangle, for instanceI only need to change this module (hopefully!).

Introducing SOA Design Patterns

Originally inspired by techniques used to design buildings and cities, and popularized by the Gang of Four during the mainstream emergence of object-orientation, design patterns have seen us through the various shifts in architecture, technology, and, of course, design. Pattern catalogs have periodically emerged, one building on the other, and each revealing a set of problem-solving techniques and providing invaluable insights as to how and when those techniques should be used to help us attain our design goals.