Download Introduction to computer software

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Chapter 3
Introduction to
Computer Software
Software in General


each information system is based upon
software under the form of programs and
procedures
software is needed for input , processing ,
output, storage and management activities
Trends in software development:
 usage
of packages
 usage of non-procedural languages ( 4GL )
Software Categories
O’Brien 88
Computer
Software
System
software
System
Management
Programs
System
Support
Programs
- Operating Systems - System Utilities
- Operating
- Performance
environments
Monitors
- Database
- Security monitors
Management
System
- Telecommunications
monitors
Application
Software
System
Development
Program
Programs
General
Purpose
Application
Application-specific
Programs
- Programming
Language
translators
- Programming
environments
- CASE packages
- Word Processing
- Spreadsheets
- Database
Managers
- Telecommunications
- Graphics
- Integrated
Packages
- Accounting
- Marketing , Sales
analysis
- Manufacturing
- Production
Control
- Finance
Capital
Budgeting ,...
Software Trends
First
Generation
O’Brien 89
Second
Third
Fourth
Fifth
Generation Generation Generation Generation?
Trend: Toward Conversational Natural Programming Languages.
Software
Trends
User-Written
programs
Packaged
programs
Operating
systems
Database
Management
Systems
Machine
language
Symbolic
languages
High-level
languages 4GL
Microcomputer
Packages
Trend: Toward Easy-to-Use Multipurpose Application Packages.
Natural
Languages
Multipurpose
GUI
Expert
Application Software for End Users

General Applicable Software
 suites
– MS-office: word , excel, powerpoint, access, outlook,
explorer
 Web-browsers
– netscape
– explorer
 Electronic
mail
 CASE
 Encyclopedia
 Databases
 Groupware
– Lotus notes
Text: O’Brien p 92 - 101
Interfaces HW - user
System software
•operating system: OS, DBMS, comm
•support: system utilities
•development: compilers, CASE, 4GL
Application software
•packages
•own development
End user
Application SW
System SW
Computerhardware
O’Brien 98
Operating Systems





User interface
file management
Task management
UNIX, VM or MVS, VSM, MS-DOS
Database Management systems


Telecommunication monitors


network servers, front-end processors, middleware
Programming languages and Compilers


ORACLE, Informix, INGRES, SYBASE, DB2, Paradox
procedural vs. non-procedural, 4GL, natural languages
Programming Tools

workbenches, prototyping tools, editors, debuggers
Basic Functions of an Operating System
User
interface
Communication between
system and user
Utility
management
Task
management
File
management
Management of
peripheral devices
Task follow-up
Management of
data and
programs
Multitasking
Virtual memory
Text: O’Brien p 105
Supporting
programs and
other functions
Supporting
functions
Operating System
Examples : UNIX, DOS, OS/2, MVS
Shell
Kernel
provides elementary
computer functions
System
interface
Programs
UNIX
File - and
Directory systems
TextProgramming
processors
languages
Program
interpreter
Communication Programmingand networks utilities
Operating systems
Operating system = management system

hides hardware details for the users

different machines look identical

depends on the type of applications
Other System Software

Network management ( middleware, firewalls, …)

File management

Database management systems

performance monitors

security monitor
Text: O’Brien p 108 - 109
Program Interaction with the Environment
Batch: . no interaction with environment
. required data are prepared in advance
. results are delivered to the user afterwards
. moment in time and speed are unimportant for
the user
Interactive:
. permanent dialogue between program and user
. input of data in function of the results
. moment in time and speed are extremely
important for the user (real time)
. user friendly ( error messages )
The absolute binary loader
A program must first be loaded in central memory and
the P-register must be initialized with the address of
the first instruction of the program.
The absolute binary loader is a small program that:
. loads the binary form of the program (absolute object
code) from the peripheral memory into the central
memory
. is mostly stored in a reserved part of the memory
central memory
ABL
The "command interpreter"
Command interpreter
Program that gives access to tables containing the name
of the program and its address in the mass memory
These tables are managed by the file manager
With an instructive command processor the user inputs via
the terminal , the name of the program to be executed
central memory
Load chess
chess
FMGR
comm.int
ABL
The interrupt handler
Normal program termination
cmnd interpreter
________________________
________________________
________________________
________________________
________________________
________________________
________________________
In case of a program interruption
cmnd interpreter
________________________
________________________
________________________
________________________
________________________
________________________
________________________
control
unit
Program X
________________________
________________________
________________________
________________________
________________________
________________________
________________________
________________________
________________________
________________________
________________________
________________________
________________________
return to cmnd.int
Program X
________________________
________________________
________________________
________________________
________________________
________________________
________________________
________________________
________________________
________________________
________________________
________________________
________________________
return to cmnd.int
Task scheduling
Task scheduler , job scheduler , queue manager
manages the waiting queue of all commands which have not yet
been executed
If there is space available in memory , the task scheduler selects a
task from the input queue and orders the loader to load the
corresponding program into the memory
Selection criteria
. round robin algorithm: FIFO + limited time slice
preempted tasks after t sec
new tasks
CM
finished
tasks
Task scheduler 2
Handle batch queue only if the interactive queue is empty
interactive tasks
interactive queue
finished
tasks
preempted tasks after t sec
new batch tasks
Batch queue
CM
Process scheduling
The process scheduler is the part of the operating
system that decides which program in memory ,
the CPU will work on .
Process status's
active
task terminated
transition
active-waiting
start
i/o
load
wait
for CPU
i/o terminated
(interrupt)
blocked
swap-out
Transition Active-Waiting after action of the process scheduler
Process priorities
Algorithm for according priorities must be :
- simple ( overhead )
- give I/O jobs higher priority for optimal usage of I/O
active
select
process with P max
P:=P-1
wait
for CPU
blocked
P:=P+1
P can get an initial value , eg. depending on the user category
Spooling
In case of shared usage of peripheral equipment in a multiprogramming environment
Spooling monitor:
Part of the operating system that writes all of the available
input and output per program on a disk , and makes it
available as soon as the required peripheral equipment is
free .
Program A
Program B
spooler
Program C
disk
End-User Applications

general purpose packages
 word

processing , productivity packages
Application-specific programs
 Business
application programs
 Scientific
application programs
 Education,
entertainment, art, law, medicine, ...

Graphics packages

Integrated Packages
Programming
and
programming languages
Programming
The same hardware can be used for various
applications thanks to the programmability
Specific aspects of tasks are not build-in in the hardware
but in the software . They are loaded in the program memory
( except for some I/O functions ).
Programming is an important aspect in every automation project.
The programmer has to know the problem very well ;
this has to be achieved during analysis or specification gathering .
Specifications are focused on the user.
Specifications are reflected in programs and translated into
an executable program.
Programming Languages
A Programming language is a set of conventions that
allows to express a program in a format that is also more
or less readable for humans.
Machine languages
 Use binary coded instructions
Assembly languages
 use symbolic coded instructions
Higher Programming languages
 use statements that are close to English together with
arithmetic notations
Fourth generation languages
 use natural and non-procedural statements
Object oriented languages
 Data and procedures are combined in objects
Elementary Languages
There is a direct relationship between the
vocabulary of the language ( syntax ) and the
instructions for the computer
The most elementary language is the machine
language
- operation codes and operands have the format of
binary numbers
- completely machine-dependent
- almost unreadable for programmers
- source of errors
- time consuming
- 11011011 represents ADD in a certain language
Assembly Languages
e.g.: opening door
1
STO
0
-
D1
P2
2
STO
0
-
D2
P3
3
EQ?
KFL
0
P3
P4
4
MUL
D2
10
D2
P5
5
ADD
D2
KDA
D2
P6
6
ADD
D1
1
D1
P7
7
NE?
D1
3
P3
P8
8
NE?
D2
207
P1
P9
9
STO
1
-
DDA
P1
• Operation codes and operands get symbolic names
• Addresses of words in memory that contain data
get a meaningful name
• Require important knowledge about computers
• susceptible to errors
• Still hardware related
Higher Level languages
In higher level programming languages they try in the
first place to make abstraction of the used machine

Procedures and data are described in terms that are closer to the
application domain in which they are used

An instruction can represent a set of machine instructions ;
Variables can take abstract values
eg.: month

Much higher productivity;

lower risk for errors:
•
•
Imperative languages: BASIC, FORTRAN, COBOL, ADA, PASCAL, C, Modula, …
Non-imperative languages: LISP, PROLOG, Scheme
Language Example
Calculate the average of two numbers
Memory addresses:
written 30
oral
final
31
40
Pascal:
final := ( written + oral ) / 2
Assembler:
load
add
divide
store
(CALM)
machine language:
a,written
a,oral
a,#2
a,final
66 30
54 31
43 02
67 40
required computer knowledge always higher
Assessment




productivity of programmers is better with higher
programming languages
Translation into machine language is not always optimal
leading to theoretically slower programs
Higher cost for computer capacity largely compensated
by reduced programming costs
elementary languages only used in case of:
- hardware cost much higher than programming cost
- small programs sold in large quantities
- critical parts of programs for supercomputers
Imperative languages
With imperative languages the programmer
writes all tasks to be performed in the
appropriate sequence
e.g.: linear equation AX+B=0
- read coefficients A and B ;
- calculate quotient of B divided by A ;
- change sign of the result ;
- assign the value of the quotient to X ;
- write the value of X .
COBOL, BASIC, ADA , Pascal , Modula , .....
Non-imperative languages
In non-imperative languages only the
relationships between the data are given.
The actions to be performed by thee computer
are derived from this relationships.
The solution of the linear equation can be formulated
as follows:
- The coefficients A and B can be read
- the variable X is defined by X= - B/A
to execute the program it is enough to write:
write X
e.g.: LISP , PROLOG
Object oriented languages
In Object oriented languages programs pass an
instruction to the object to perform the operation.
register
Actual
status
transmit
Text: O’Brien p 113
C++
Eifel
Smalltalk
JAVA
Visual Basic
Compilers and Interpreters

Programs written in a higher language must be
converted into machine language
Source code
Compiler
Interpreter
Object code
Hardware
Compilers and interpreters 2
Compiler:
During compilation the entire program is converted into
executable OBJECT code. It can be saved and reloaded
several times.
This is especially useful for larger programs that have to be
executed several times without having to be modified.
Interpreter:
The source code is translated by the interpreter instruction by
instruction into machine language and immediately executed.
At every execution the translation is redone.
This is interesting to debug programs or for small programs
using little mass memory.
Source code takes much less space than object code.
Compilation vs Interpretation
Compilation
Interpretation
fast
execution
Slow
slow
modifications
fast
cryptic
error messages
clear
large
memory space
small
unavoidable
mass memory
optional