16
An Examination of the An Examination of the Borland C++ Builder Borland C++ Builder Framework: Illustrating How Frameworks Framework: Illustrating How Frameworks and Patterns Improve Software Development and Patterns Improve Software Development Presented by Michael James Anderson Presented by Michael James Anderson North Central College North Central College Naperville, Illinois Naperville, Illinois March 12, 2001 March 12, 2001

An Examination of the Borland C++ Builder Framework: Illustrating How Frameworks and Patterns Improve Software Development Presented by Michael James Anderson

Embed Size (px)

Citation preview

An Examination of the An Examination of the Borland C++ BuilderBorland C++ Builder Framework: Illustrating How Frameworks and Framework: Illustrating How Frameworks and

Patterns Improve Software DevelopmentPatterns Improve Software Development

Presented by Michael James AndersonPresented by Michael James Anderson

North Central College North Central College

Naperville, IllinoisNaperville, Illinois

March 12, 2001March 12, 2001

What ? Improve Software Development

Why?•On average, large projects take 50% longer than planned•75% of large projects planned are operational failures•25% of large projects are cancelled

-W. Gibbs, Software’s Chronic Crises Scientific American, Sept. 1994

Software Quality Will Improve!

This Project’s Methodology

1. Create software that will increase QOL

2. Use a software tool to expedite step 1

3. Expand the concept

Software Frameworks

Framework: A collection of Classes. The Classes represent Objects that have been created to be reused and/or combined to build a computer system.

Benefits of Frameworks

• Code Reuse

• Rapid Application Development

• Amortize Development Costs

• Object Oriented Design (OOD)

• Shorten OOD Learning Curve

Pitfalls of Frameworks

• Increased Overhead

• Coding Outside the Framework

• GUI Design is Difficult

• Prototypes are NOT Production Systems

• Framework must be Bullet Proof

Frameworks = Reusable Objects

Patterns = Reusable Design

Simple Definition

Pattern: A solution to a design problem that is not obvious and that has been corroborated by experts in the field.

Software Pattern History

•1968 NATO Software Engineering Conference

• Notes on the Synthesis of Form, C. Alexander

•1977 A Pattern Language, C. Alexander

•1992 Advanced C++ Programming Styles and Idioms, J. Coplien

•1995 Design Patterns: Elements of Reusable Object-Oriented Software, E. Gamma, R. Helm, R. Johnson, and J.Vlissides

Pattern Flavors

• Low-Level - Idioms

• High-Level - Design Patterns, Organizational

• Anti-Patterns

Name: Minimize Human Intervention

Author: James Coplien, (1996) Software Patterns, New York: SIGS Books and Multimedia

Problem: History has shown that people cause the majority of problems in continuously running systems (wrong actions, wrong systems, wrong buttons).

Context: High-reliability continuous-running digital system where downtime, human-induced or otherwise must be minimized.

High-Level Design Pattern

Forces: Humans are truly intelligent; machines aren’t. Humans are better at detecting patterns of system behavior, especially among seemingly random occurrences separated by time (People Know Best).

Humans feel a need to intervene, if they can’t see that the system is making serious attempts at restoration. Human reaction and decision times are very slow (by orders of magnitude) compared to computer processors.

Human operators get bored with ongoing surveillance and may ignore or miss critical events.

Normal processing or failure events are happening so quickly that inclusion of the human operator is infeasible.

State of Pattern Research

Gang of Four Hillside Group

PLoPChili, Euro, Koala

http://hillside.net/patterns/

Patterns do not create experts

Conclusion

Frameworksbefore choosing carefully consider

Time to Deliver vs

Maintenance Costs

PatternsReduce Discovery CostsImprove Communication

Quality

$=