Transcript Chapter 10
Chapter 10
Application
Development
Chapter Goals
Describe the application development process and the role of
methodologies, models and tools
Compare and contrast programming language generations
Explain the function and operation of program translation
software, including assemblers, compilers and interpreters
Describe link editing and contrast static and dynamic linking
Describe integrated application development software,
including programmer’s work-benches and CASE tools
Software Development
Process of translating user needs into CPU
instructions
This is a complex process that requires
significant effort and resources
Software is the most costly component of IS
Software Development
Systems Development Life Cycle
SDLC Phases
Systems requirement model – provides the
detail needed to develop a specific system to
meet user needs
Design model – provides an architectural
blueprint for system implementation
Development of programming
languages
Programming Languages
Programming languages
Language used to instruct a computer to
perform a task
Programming language development has
tried to
–
–
Make the language easier to understand
Develop a language that takes less time (requires
fewer instructions) to complete a task
Programming languages cont.
Variety of programming languages
Link to Google programming languages page
http://directory.google.com/Top/Computers/Pr
ogramming/Languages/
Development of languages
First Generation – binary CPU instructions
First programmers wrote code as sequences
binary digits
–
–
Tedious and error prone
As software grew in complexity this became
unpractical
Languages cont.
Second generation language – assembly
languages (simple machine)
Mnemonic represents CPU instruction
Mnemonic can also represent location in
memory (variable)
Mnemonic can also represent a program
instruction memory address (label)
Assembler
Code from 2GL (Assembly code) is
translated into binary instructions by
Assembler
Translates each mnemonic into its
corresponding binary digit sequence
Programmer still required to write one
assembly instruction per CPU instruction
2GL is for a specific CPU (i.e. processor)
Machine independence
Programs written in 2GL (assembler) only
work for a specific CPU
Companies spend a long time developing
custom systems
These systems continue to evolve over time
–
–
New modules added
Systems updated and maintained over time
Machine independence cont.
When company buys a new computer (i.e.
new CPU) what happens to the old software?
Still a problem, still a lot of mainframe
systems running (COBOL) due to difficulty of
porting to a new computer
3G languages
3GLs address the issue of machine
independence
Code is standardized (ANSI, etc.)
Special software called a compiler takes
standard code and translates it to a specific
CPU
–
Each CPU needs to have its own version of the
compiler
3GLs
FORTRAN, COBOL, BASIC,PL/1, Pascal
and C
3GL code is translated (compiled) into
assembly code, then into binary code
First languages to exploit machine
independence – 3GL code is the same
regardless of the CPU that executes it
Languages cont.
Third generation language – allows
programmers to specify many CPU
instructions per program instruction or
statement
This one-to-many (1:N) relationship is called
instruction explosion
Instruction explosion
One line of code – Cobol, Pascal, C – are
translated into many lines of CPU
instructions
Makes programmer more productive
CPU code is more efficient
–
Compiler (software that generates CPU
instructions) can optimize CPU instructions
4GLs
Addressed the following limitations of 3GL
–
–
–
Higher instruction explosion
Ability to develop GUI
Ability to interact with database
Most 4GL were proprietary packages
VB and SQL are still in use
Object Oriented Languages
OOP is an attempt to address problems of
software maintenance and re-use
Data and programs are viewed as integrated
parts called objects
Objects communicate using methods
Client – server model
Prominent examples: C++, Java
OOP systems models
Language standardization
American National Standards Institute (ANSI) and
International Standards Organization (ISO) set
standards for programming languages (C, C++,
COBOL)
–
–
Advantage: guarantee portability between platforms,
promotes machine independence
Disadvantage: slow to improve and develop
Creating executable code
Modern programming languages use a
syntax more suited to human understanding
Computer requires instructions made out of
0s and 1s
Creating .exes cont.
Software applications have become quite
complex
Hundreds if not thousands of programmers
contribute part of the solution
Solutions are designed to be re-usable
Producing an .exe
Individual programmer’s work needs to be
translated into machine code
–
Translate the source code of an individual file into
0s and 1s
All the work of many programmers needs to
be packaged together
–
Collect and bundle different parts of binary code
into a single load module
IDE
Integrated development environment is a
software development tool that brings
together software tools to facilitate:
–
–
Translating higher order languages into 0s and 1s
(binary code)
Managing and combining libraries of existing
programming solutions
Compiler
Steps in development process
Programmer produces a program in a
specific language
Program is called source code
Code is made up of
–
–
–
Data declarations
Statements
Function calls (using pre-written library routines)
Steps cont.
Source code (as produced by programmer)
becomes input into compiler
Compiler tests each line of code comparing it
to syntax requirements of specific language
If errors exist, produces an error report
After “clean compile” compiler produces
object code (assembly instructions)
Output of compile step
Symbol table – list of variable names
associated with a memory location
Assembler instructions – mnemonic for CPU
instructions
Symbol table
Steps cont.
Object file (output of compile step) becomes
input into next step – link editor
Link editor combines object file with code
from software libraries
Output of link step is .exe file
Example in C++
Example program showing compile link and
exe output
Go to Visual C++
Link Editor
Modern programming languages allow programmers to use
pre-existing routines in their code
Using a function is referred to as a function call
A link editor searches object code (the output of the compile
step) for references to external library function calls
When an external function call is found, the link editor searches
for the corresponding executable code that implements the
function
Link editor
Benefits of a link editor
Allows a project to be developed among different
files (i.e. each programmer develops a separate file)
A single executable program can be constructed
from multiple object code files compiled at different
times
A single compiler can generate executable programs
that run under multiple operating systems
Dynamic vs. static binding
Dynamic Linking – linking is performed during
program loading or execution
example: DLLs and Visual Basic, Java
Static Linking – library and other subroutines
cannot be changed once they are inserted into the
executable code
example: C++ program
Dynamic vs. static linking
Dynamic Linking Advantages
Smaller application program files
Flexibility
Static Linking Advantages
Execution speed
Improved reliability and predictability of executable
programs
Interpreters
Reads a single source code instruction, translates it
into CPU instructions or a DLL call
Advantage: flexibility to incorporate new or updated
code into an application program
Disadvantage: increased memory and CPU
requirements during program execution
Visual Basic
Is an interpreted language
See VB example
Compilers vs. Interpreters
Java language
OOL developed by Sun
Originated as operating system for
interactive TVs
Applied to demands of producing code for a
distributed computing environment (i.e. the
Web)
Java web resources
Java web site http://java.sun.com/
Java software http://java.sun.com/java2/
Java documentation
http://developer.java.sun.com/developer/infodocs/?fr
ontpage-main
Java tutorials http://java.sun.com/docs/books/tutorial/
Java applet examples
http://javaboutique.internet.com/javasource.html
Development for the Web
What are the requirements for an application
development tool designed to produce
applications for a distributed computing
environment?
Requirements
Seamless multi-platform capability
Built in security & protection capabilities
Multi-threaded, i.e. easily break a problem
into independent sections run concurrently
How does Java address these requirements?
Java Requirements
Multi-platform
–
Built in security
–
Java virtual machine
Security restrictions for applets
Multi-threaded
–
Built-in thread class in standard library
Java
Java example
Run java example with java console
Microsoft’s Answer
.Net framework
Supports 20 different programming
languages
Supports distributed networked applications
(see presentation)
Summary
Application systems are developed by following the steps of the
systems development life cycle. (SDLC)
Executable software consists entirely of CPU instructions
All programming language generations other than the first must
be translated into CPU instructions prior to execution
Compiled and interpreted programs must be linked to libraries
of executable functions or methods
Application development is more efficiently supposed by
integrated suites of automated tools