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:
Post a Comment