Title: Systems Architecture, Fifth Edition
1SCSC 311 Information Systems hardware and
software
2Chapter Goals
- Application development process
- Programming languages
- Program translation software
- Integrated application development software
- Programmers workbenches
- CASE tools
3The Application Development Process
- Application software development is a complex and
expansive process. - Translates user requests into machine
instructions - Software development bridges two gaps
- Human language to machine language (binary)
- High-level abstraction to low-level detail
4Systems Development Life Cycle (SDLC) Unified
Process (UP)
- Systems development life cycle (SDLC)
- IS professionals follow a series of steps when
developing an IS - e.g. Unified Process (UP)
- Business Modeling and Requirements Disciplines
- Design Discipline
- Implementation and Testing Disciplines
- Deployment Discipline
5Methodologies, Models Tools
- Methodology
- Methodology is an integrated collection of
models, tools, and techniques - Developers attempt to minimize errors by using
proven development Methodologies. - UP is methodology that employs OOA, design and
deployment models - e.g., Class diagrams document user and system
requirements - Tools
- to support or completely automate software
development tasks - e.g., OS, programming language, program
translator, DBMS, hardware, etc. - Proper tool selection is a critical
6Chapter Goals
- Application development process
- Programming languages
- Program translation software
- Integrated application development software
- Programmers workbenches
- CASE tools
7Programming Languages
- Programming languages instruct computer to
perform a task, a.k.a. code - Have evolved through several generations
- All but 1GL must be translated into CPU
instructions prior to execution (compilers and
interpreters) - Programmer goals
- Make language easier for people to understand
- Develop languages and development approaches that
require people to write fewer instructions to
accomplish a task - Understand two key terms in programming language
- Instruction explosion (p395)
- Procedural vs. non-procedural (p398)
8Why are there so many different programming
languages?
91st Generation Languages
- A machine-level programming language. It consists
of 1s and 0s - Required programmers to remember binary codes
that represented each CPU instruction and to
specify all operands as binary numbers - Pros Cons
- run very fast and efficiently
- Tedious to program error-prone
102nd Generation Languages
- Use mnemonics to represent variables (program
instruction memory address) and labels (data item
memory address) - The code can be read and written fairly easily by
a human - but it must be converted into binary code by
compiler in order to run on a computer. - Pros and Cons
- Easier to manipulate than binary code
113rd Generation Languages
- Use mnemonics to represent instructions,
variables, and labels - Translated with compilers, link editors, and
interpreters - Developed before GUIs, database managers, and
Internet - e.g. FORTRAN, Basic, Cobol, Pascal, C
- Pros and Cons
- Machine independent
- Have degree of instruction explosion greater than
11
124th Generation Languages
- Majority were proprietary
- many were optional components of database
management systems - Most support mixture of procedural and
nonprocedural instructions - E.g., SQL, VB, etc.
135th Generation Languages
- Nonprocedural language suitable for developing
software that mimics human intelligence - Rule processor accepts a starting state as input
and iteratively applies rules to achieve a
solution - First appeared in 1960s not widely used until
1980s - E.g., Lisp, Prolog
14Object-Oriented Programming (OOP) Languages
- View data and programs as two parts of integrated
whole (object) - Not clear successors to 5GLs neither
nonprocedural nor exclusively used for developing
artificial intelligence - E.g., Smalltalk, C, Java, C
- Pros and Cons
- Promote reusability and portability of source
code - Uniquely suited to developing real-time programs
15Scripting Languages
- Enable programmers to develop applications that
do most of their work by calling other
applications and system software - Evolved from 4GLs, though most now incorporate
OOP concepts - E.g., VB Script, JavaScript, PHP
- Pros and Cons
- Enable rapid assembly of application software by
gluing together capabilities of other programs - Limited capacity, Slow
16Programming Language Standards (self study)
- Set by ANSI and ISO
- Include definitions of
- Language syntax and grammar
- Machine behavior for each instruction or
statement - Test programs with expected warnings, errors, and
execution behavior - Guarantee program portability among operating
systems and application programs
17Chapter Goals
- Application development process
- Programming languages
- Program translation software
- Integrated application development software
- Programmers workbenches
- CASE tools
18Program development
- Program development with a program editor,
compiler and link editor
19Compiler
- Checks for syntax and other errors issues
warning or error messages - Updates internal tables that store information
about data items and program components - Generates CPU instructions or library calls to
carry out the source code instruction
20Four Source Code Instruction Types
- Data declarations
- Data operations
- Control structures
- Function, procedure, or subroutine calls
(Self-study)
21Data Declarations
- Define name and data type of program variables
- Stored in memory allocated by compiler
The compiler updates a symbol table to keep track
of data names, types, and assigned memory
addresses.
(Self-study)
22Data Operations
- Instructions that update or compute a data value
- Translated by compiler into equivalent sequence
of data movement and data transformation
instructions - Compiler refers to entries in symbol table to
determine source and destination memory addresses
for data movement instructions - E.g., f_temperature 212
- f_temperature f_temperature 1
-
(Self-study)
23Control Structures Function Calls
- Control structures are source code instructions
that control the execution of other source code
instructions - Common thread is transfer of control among CPU
instructions - E.g. Conditional branch, loop
- Function calls named instruction sequences
executed by call instructions - Transfer control to the instruction following the
call by executing a return instruction - E.g.,
- c_temperature fahrenheit_to_celsius(f_temperatur
e)
(Self-study)
24Implementing Function Call and Return Instructions
- Compiler generates CPU instructions to
- Pass input parameters to the function
- Transfer control to the function
- Execute CPU instructions within the function
- Pass output parameters back to the calling module
- Transfer control back to the calling module at
the statement immediately following the function
call statement - (This is the same stack operation studied in
interrupt handling. P231)
25Static v.s. Dynamic Linking
- Statically links external reference calls in
object code to library functions combines them
into a single file containing executable code - Dynamically link external calls by statically
linking them to an OS service function that loads
and executes dynamic-link library (DLL) functions
at run time
26Dynamic Linking vs. Static Linking
- Static linking
- Library and other subroutines cannot be changed
once inserted into executable code - Execution speed
- Improves reliability and predictability of
executable programs - Dynamic linking
- Performed during program loading or execution
- Smaller application program executable files
- Flexibility
27Key Benefits of Link Editors in Program
Translation
- 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
28Interpret vs. Compilation
- Interpreters interleave source code translation,
link editing, and execution, one source code
instruction at a time - Advantage (vs. compilation)
- Provide flexibility to incorporate new or updated
code into an - application program (dynamic linking)
- Disadvantage (vs. compilation)
- Increase memory and CPU requirements during
- program execution
29Programming Language Example Java
- OO programming language and program execution
environment - Maximizes reliability of applications and
reusability of existing code - Has a standardized target machine language JVM
for Java interpreters and compilers
(self study)
30Features of Java
- Provision of compilers and virtual machines at
little or no cost - Incorporation of JVMs into Web browsers
- Increasing development of application software
that uses a Web browser as primary I/O device - Ability of Java programs to execute on any
combination of computer hardware and OS - Drawback Reduced execution speed due to use of
interpreted byte codes and OS translation
(self study)
31Symbolic Debugging
- Use of an automated tool for testing executable
programs to - Trace calls to specific source code statements or
subroutines - Trace changes to variable contents
- Execute source code instructions one at a time
- Detect and report run-time errors to programmer
- Uses symbol table, memory map, and source code
files to trace memory addresses to specific
source code statements and variables - Inserts debugging checkpoints after each source
code instruction program execution can be paused - Debugging vs. production/distribution version
- Incorporated directly in most interpreters
(self study)
32Chapter Goals
- Application development process
- Programming languages
- Program translation software
- Integrated application development software
- Programmers workbenches
- CASE tools
33Application Development Tools
34Integrated Application Development Tools
35Programmers Workbench Components
- Programmers Workbench contains
- Smart program editor
- Compiler and/or interpreter
- Link editor and large library of classes or
subroutines - Interactive tool for prototyping and designing
user interfaces - Symbolic debugger
- Integrated window-oriented GUI
- E.g. NetBean, JBuilder
36CASE Tools
- Computer-Assisted Software Engineering (CASE)
- Front-end CASE tools
- Support development of requirements and design
models - Back-end CASE tools
- Generate program source code from models
- E.g. Rational Rose
- By integrating the modeling and development
environments using the Unified Modeling Language
(UML), Rational Rose enables all team members to
develop individually, communicate collaboratively
and deliver better software.
37(No Transcript)