Tutorial: What Software Lawyers Need to Know about Software
Download
Report
Transcript Tutorial: What Software Lawyers Need to Know about Software
Software - 1960s to 1970s
Computer software is customdeveloped
Most computer systems are
large and have unique
configurations
Languages are procedural
(FORTRAN, COBOL, BASIC, C)
A computer system costs
$100K and up
Source code is usually
delivered
Software - 1980s
Development of
DOS/Wintel platform
PCs become ubiquitous
and standardized
Software becomes an
off-the-shelf product
Source code is not
delivered
Software - 1990s to 2000s
"Free software" movement /
opensource
Rise of object-oriented
programming (e.g. C++, Java)
Rise of distributed computing:
client-server technology and
web servers/Java
Software - 2010s +
Cloud/web applications
Mobile / responsive design
Niche/business market products
Mass consumer free.
Software Development
1950-1960's:
Emphasis on efficiency
fast algorithms
small program size
limited memory use
Now:
Emphasis on
programmer’s productivity
team development
reusability of code
easier maintenance
Often cryptic code
Not user-friendly
Upgradability
Better documented
User-friendly
Programming Languages
Assembly
languages
1940
1950
C
C#
LISP
Scheme
Logo
1960
1970
Fortran
Machine
code
C++
1980
Pascal
Java
1990
2000
Python
Basic
Smalltalk Smalltalk-80
Top Computer Languages 2014
Source Code, Binary Code, and Compilers
Source Code
Written in “Higher Level Computer Language“
Trained programmer can read, understand, critique, edit and Improve
Computer CANNOT use in this form
Designed to show logic and structure
Compiler Software
Converts source to machine-readable form
Strips out human-readable comments and logic
Results in Binary Code - “1’s and 0’s”
Machine Code
Executable by computers
Used in binary or “object” form
Conventional form of distributed proprietary software
Programs written in some languages need not be compiled to be read
by a computer (e.g., BASIC, PHP, HTML,JAVASCRIPT)
Java’s Compiler + Interpreter
Editor
Compiler
:
:
7
K
Hello.java
Hello.class
Interpreter
Interpreter
:
Hello,
World!
Why Bytecodes?
Platform-independent
Load from the Internet faster than source code
Interpreter is faster and smaller than it would be for Java
source
Source code is not revealed to end users
Interpreter performs additional security checks, screens
out malicious code
Types of Programs
Console applications
Applets
GUI applications
Web Services
Console Applications
Simple text dialog:
prompt input, prompt input ... result
C:\javamethods\Ch02> path=%PATH%;C:\Program Files\Java\jdk
1.5.0_07\bin
C:\javamethods\Ch02> javac Greetings2.java
C:\javamethods\Ch02> java Greetings2
Enter your first name: Josephine
Enter your last name: Jaworski
Hello, Josephine Jaworski
Press any key to continue...
GUI Applications
Menus
Clickable
panel
Buttons
Slider
OOP —
Object-Oriented Programming
An OOP program models a world of active objects.
An object may have its own “memory,” which may
contain other objects.
An object has a set of methods that can process
messages of certain types.
OOP (cont’d)
A method can change the object’s state, send
messages to other objects, and create new objects.
An object belongs to a particular class, and the
functionality of each object is determined by its class.
A programmer creates an OOP application by defining
classes.
Inheritance
A programmer can define hierarchies of classes
More general classes are closer to the top
Person
Child
Baby
Toddler
Adult
Teen
OOP Benefits
Facilitates team development
Easier to reuse software components and write reusable
software
Easier GUI (Graphical User Interface) and multimedia
programming