Title: Problem
1Problem
- Software is generally
- Behind schedule
- Over cost
- Defective
- Incorrect (not what the user wanted)
- The problem involves analysis, design, and
implementation
2Premise
- Software quality can be improved by
- Reducing defects
- Reducing maintenance/modification time
- Giving the users what they want
3OO Paradigm
- Closes the cognitive gap between our view of
the system and its implementation to minimize
analysis and design errors - Makes reuse possible so that system components
can evolve toward a defect-free state - Fosters a prototyping life-cycle which increases
the interaction between users and analyzers,
designers, and implementors
4Gaps
- The object-oriented approach provides a closer
match between our shared perceptions of reality
and the languages and tools of analysis, design,
and implementation. - As a consequence, the communication gaps which
can occur between the various system-building
activities are potentially much smaller.
STRUCTURED
Requirements
Analysis/Logical Design
Physical Design / Implementation
OBJECT-ORIENTED
Requirements
Analysis/Logical Design
Physical Design / Implementation
5Systems Development Life Cycle
6Systems Development Life Cycle
Requirements Document
DFD / ERD
Functional Decomposition
Code
7History of OO
- Three interwoven threads
- programming
- knowledge representation
- linguistics
- data modeling
OORA
OOA
OO
OODBMS
OOD
OOI
OOSE
KR
DM
OOPL
8Building an OOS OOADI interacting activities
in an iterative, recursive, incremental
process(add your own buzz-words here)
OOA
OOI
OOD
9Object-Oriented Domain Analysis (OODA)
- Includes existing systems, domain expert
knowledge, domain theory, and domain technology - Promotes reuse
- Creates, manages, and expands a repository of
analysis and design artifacts, objects, and
patterns. - Spans projects as an ongoing effort
10Object-Oriented Analysis (OOA)
- Focuses upon a particular system or application
in a domain - Draws upon and contributes to the repository
(reuse) - Models the problem space
- May model (parts of) the solution space
11Object-Oriented Design (OOD)
- The bridge between conceptualization and
implementation - Logical OOD
- blends with OOA
- establishes a system architecture
- draws upon and contributes to the repository
(reuse) - includes the user interface
- Physical OOD
- blends with OOI
- modifies the results of analysis and logical
design to accommodate the implementation
environment
12Object-Oriented Implementation or Programming
(OOI or OOP)
- Blends with physical OOD
- Involves coding, software engineering, and
metrics - May require special techniques to support a
distributed environment
13OOAD Methodologies/Notations/Approaches
- a partial list
- Beck Cunningham
- Berard
- Booch
- de Champeaux, Lea, Faure
- Coad Yourdon
- Emblay, Kurtz, Woodfield
- Firesmith
- Graham
- Henderson-Sellers Edwards
- Jacobson
- Lorenz
- Martin
- Martin Odell
- Meyer
- Rubin Goldberg ( Gibson)
- Rumbaugh, et al.
- Shlaer Mellor
- Wirfs-Brock, et al.
and the (current) winners are Notation
Process - UML (Booch, Jacobson, and Rumbaugh)
14Warning!
- It is possible to write truly awful
object-oriented programs. - There is no substitute for
- intelligence
- experience
- taste
- work
- Presentation by Bjarne Stroustrup at the Second
Annual Alan J. Perlis Symposium on Programming
Languages as reported by Phil Pfeiffer in ACM
SIGPLAN Notices, 28(9) 6-12, September 1993.
15What is Java?
Java is a simple, object-oriented, distributed,
interpreted, robust, secure, architecture-neutral,
portable, high-performance, multithreaded, and
dynamic programming language. (Java is buzzword
compliant)
16More officially
- Java is an object-oriented programming language
from Sun Microsystems. - It allows programmers to develop applets or
standalone computer applications that run as any
program written in another programming language.
17Portability
- One of the most significant benefits of Java is
its promise of write-once, run anywhere
portability. - This is especially important on the Internet,
where applets on web pages might be downloaded
and run on PCs, Apple iMacs, Web TV, Unix boxes
and more. - This portability is made possible by the java
runtime environment -- also called the Java
Virtual Machine, or JVM -- which is packaged with
each currently popular browser. - Standalone Java applications can be run on any
computer that has the Java runtime environment
installed.
18Java vs. JavaScript
- Although the names are almost the same, Java is
not the same as JavaScript! - Java is an object-oriented programming language.
- JavaScript is a scripting language, implemented
as an extension of HTML.
19More Java vs. JavaScript
- The languages also differ in how each interacts
with browsers and Web pages. - You can use Java to create either standalone
applications or applets that run within a
browser. - JavaScript works only within a browser and is not
compiled. You cannot use it to develop standalone
applications. It is used for writing short
programs (scripts) such as log-on procedures. - JavaScript originated as Netscape's LiveScript,
but because of its similarity in syntax to Java,
it was renamed JavaScript.
20JavaScript Java
- Interpreted (not compiled) by client.
- Object-based. Code uses built-in, extensible
objects, but no classes or inheritance. - Code integrated with, and embedded in, HTML.
- Variable data types not declared (loose typing).
- Dynamic binding. Object references checked at
run-time. - Cannot automatically write to hard disk.
- Compiled on server before execution on client.
- Object-oriented. Applets consist of object
classes with inheritance. - Applets distinct from HTML (accessed from HTML
pages). - Variable data types must be declared (strong
typing). - Static binding. Object references must exist at
compile-time. - Cannot automatically write to hard disk.
21Java Genealogy