Tuesday, May 16, 2006

14 February 2006

Plan too much, plan ahead, or don’t plan at all?

Development of software systems can suffer from;
Analysis paralysis: attempt to consider all possible changes in the future
Tooo design: there is tremendous pressure to deliver, not quality.
Fast Implementation: developers jump to code too quickly..

Solution to the above problem

Analysis re-use

Don’t reinvent to wheel
Requires a precise understanding of common, recurring requirement
Leverage previous work

Design re-use

Don’t reinvent to wheel
Requires a precise understanding of common, recurring design
Leverage previous work

Code re-use


Don’t relevant the wheel
Requires clean, elegant, understandable, general,
Stable code
Leverage previous work

Patterns as the solution

The concept of patterns, of which there are several different types:
Analysis Pattern – conceptual model
Design Pattern – implementation model
Architectural Pattern – system architecture.
Idiom Pattern – specific to a programming language

Principles of Good Design

Program to interface, not an implementation
Use interfaces rather than concrete classes.
Clients remain unaware of the classes of objects they use – they do adhere to the interface
This reduces implementation dependencies between subsystems.
Then use interface names, not class names.

What is variable in the design?

Consider what is variable in your design
Instead of focusing in what might force a change to your design.

Consider what you might want to change.

Two major Design Principle in Object-Oriented Paradigm

Goals
Principles
Techniques
Inheritance & Polymorphism – Modularity, Reusability
Class & Objects – Abstraction, Robustness
Interfaces & Typing – Encapsulation, Adaptablity

Why model?

To help understand the problem
To help communication of the problem.

What is a Design Pattern?

Abstract a recurring design structure
Comprises class and/ or object
Dependencies
Structure
Interactions or
conventions

Design Patterns – Why?

Designing OO software is hard
Designing reusable OO software – harder
Expert designer know not to solve every problem from first principles
They reuse solutions.

GoF Design Pattern

Scope

Purpose
Creational
Structural
Behavioural


Class
Factory Method
Adaptor (class)
Interpreter
Template Method

Object

Abstract Factory
Builder
Prototype
Singleton
Adaptor (object)
Bridge
Composite
Decorator
Flyweight
Façade
Proxy
Chain of responsibility
Command
Iterator
Mediator
Memento
Observer
State
Strategy
Visitor

11:46 a.m.

Patterns are not business objects, frameworks, algorithms, components, libraries, packages, .

Pattern is the reusable design concept.

Patterns & Algorithm

Gang of Six (GoS)

Patterns – You have to design first

Def. Of Patterns: General/ Solution to a recurring problem explained in a specific context.
Problem
Solution
Context

You can use any language your presentation.

Def. Of Algorithm: is any set of detailed instructions which results in a predictable end-state from a known beginning.

In patterns established set of rules captured.

Compare/ Differences: Overtime by experience software designers while algorithms are snippet of code which

Patterns

Typically concerned with broader architectural issues that have larger scale effects
May use algorithms

Algorithms

Solve more fine-grained computational computing (e.g. sorting, searching)
More deterministic
Have less variation among implementation strategies and tactics.

Patterns and Software: Essential Concepts and Terminology by Brand Appleton

Cont’d

Algorithm tends to be more in-depth than pattern because they mostly address issues of computational complexity and not so much the underlying the issues of the people who are both using and building the software. On the other hands patterns fundamentally address people issues (like maintainability) more so than simple hardware & software efficiency memory issues.

Alexander’s word …
Def. of patterns.

Why are we comparing of these?

Reusability is a common.

12:15 p.m.

Patterns and Components

Patterns can implement – small talk, C++, Java (programming language)

Components

A small binary object or program that perform a specific function and designed in such a way that.
No context specific
Can be implemented in any programming language.

e.g. look at the chair
Make up separately.
How interface? – components may be component made by wood.
Problem with the chair – stiff/ flexible/ relax
Solution – soften

12:41 p.m.

Patterns vs. Business Objects

Are modeled after a business concept e.g. person, place event or process.
Also represent real world things e.g. employees.

They are also objects in computer programs which
They are also used to solve business object problem.
Reuse the business object or software.

Component can use any language
Is a partly of software.
Can’t change anything

Business object is an object to build for a singular, particular software.

Patterns

Suggestive
Requires implementations and usually change
Used for rationale behind the model or code
User molds it to fit their requirements
Has little effect on systems integration

Business Objects

Perscriptive
Used as is
Used for its model or code
User molds to its requirements
Helps with integration of systems

Analysis Patterns and Business Objects by Martin Fowler

14:00 p.m.

Patterns vs. Frameworks

A set of cooperating classes that make up a reusable design for specific class of software e.g. business applications, .

Framework exhibit inversion of control at runtime.

-.NET is a product.
Type of pattern.
Software architecture and design.

Together patterns and frameworks
Help to improve software quality and reduce development time e.g. through reuse, extensibility, modularity and performance
Using that you can build complete software. That is a framework.
You can be created patterns within the framework.

Can Patterns be created within the framework?
e.g. .Net application – you can use .net pattern

A pattern is ‘the abstraction from a concrete form which keeps recurring in specific non-arbitrary contexts’.
Patterns support the reuse of software architectures and mechanistic design.
Patterns capture the static and dynamic structures of successful solutions to problems that arise in a particular domain.

A framework is a set of cooperating classes that make up a reusable design for a specific class of software. Frameworks support the reuse of detailed design and code.

Patterns

Represents knowledge and experience about software
Logical in nature
Need to be implemented each time they are used
Less specialized
Smaller architectural elements

Frameworks

Executable software
Physical in nature
Can be reused
More specialized
Implementation of a system of design patterns

Patterns and Software: Essential Concepts and Terminology by Brad Appleton

Library is a collection of particular class.
You can call particular class.

Package is a similar to framework.

Library – package – framework.

Library is a piece of routine.

Problem – solution

What types of problem to choose a particular solution/ class.
To solve this problem.

Patterns vs. Packages

Microsoft word – is a software package

Patterns - Same problem in a context.

Recurring problem
Identify solution
Context
Consequences

Patterns – identify to software.

Patterns

Is a concept
The concept can be used in any programming language
Patterns are used in the design phase of the software development life cycle.
It as easy for a novice adopt to patterns.
It can be modified
Patterns can be compared to a template as its an outline of best way to solve a problem its generic written and needs (modification) to suit the programming language

Packages

A piece of software
Packages are normally in a specific programming language
You would have to be knowledgeable in
Cannot be modified
Packages are used in the coding phase in the development life cycle.

No comments: