Professional Documents
Culture Documents
Course: BCA
Subject: Fundamental of Computer
Unit: 2
Software & Hardware?
System Software
Application Software
System Software:
System Software includes the Operating System and all the
utilities that enable the computer to function.
Example:
Operating Systems, Compiler, Loader, Linker, Interpreter.
Application Software:
Application Software includes programs that do real work for
user.
Example:
In Unix, the loader is the handler for the system call execve().
System Software (contd):
Linker: A linker or link editor is a program that takes one or
more objects generated by compilers and assembles them into
a single executable program.
Programming Machine
Language Language
Compiler
(Source) (Target)
16
What Do Compilers Do
• Compilers may generate three types of code:
– Pure Machine Code
• Machine instruction set without assuming the existence of
any operating system or library.
• Mostly being OS or embedded applications.
– Augmented Machine Code
• Code with OS routines and runtime support routines.
• More often
– Virtual Machine Code
• Virtual instructions, can be run on any architecture with a
virtual machine interpreter or a just-in-time compiler
• Ex. Java
17
What Do Compilers Do ?
• Another way that compilers
differ from one another is in the format of the
target machine code they generate:
– Assembly or other source format
– Relocatable binary
• Relative address
• A linkage step is required
– Absolute binary
• Absolute address
• Can be executed directly
18
The Structure of a Compiler
Source
Program Tokens Syntactic Semantic
Scanner Parser
(Character Stream) Structure Routines
Intermediate
Representation
Code
Generator
19
Target machine code
Interpreter
• It helps the user to execute the source program with a few
differences as compared to compilers. The source program is
just like English statements in both interpreters and compilers.
• Interpreter reads the program line by line, whereas in compiler
the entire program is read by the compiler, which then
generates the object codes.
• Interpreter directly executes the program from its source code.
Due to this, every time the source code should be inputted to
the interpreter.
• In other words, each line is converted into the object codes. It
takes very less time for execution because no intermediate
object code is generated.
Interpreter
Software Development Models
Waterfall Model
• Requirements – defines needed
information, function, behavior,
performance and interfaces.
• Design – data structures, software
architecture, interface
representations, algorithmic
details.
• Implementation – source code,
database, user documentation,
testing.
Waterfall Strengths
• Easy to understand, easy to use
• Provides structure to inexperienced staff
• Milestones are well understood
• Sets requirements stability
• Good for management control (plan, staff, track)
• Works well when quality is more important than cost
or schedule
Waterfall Deficiencies
• All requirements must be known upfront
• Deliverables created for each phase are considered
frozen – inhibits flexibility
• Can give a false impression of progress
• Does not reflect problem-solving nature of software
development – iterations of phases
• Integration is one big bang at the end
• Little opportunity for customer to preview the system
(until it may be too late)
When to use the Waterfall Model
• Requirements are very well known
• Product definition is stable
• Technology is understood
• New version of an existing product
• Porting an existing product to a new platform.
V-Shaped SDLC Model
• A variant of the Waterfall
that emphasizes the
verification and validation
of the product.
• Testing of the product is
planned in parallel with a
corresponding phase of
development
V-Shaped Steps
• Project and Requirements Planning – • Production, operation and
allocate resources maintenance – provide for
enhancement and corrections
• Product Requirements and • System and acceptance testing –
Specification Analysis – complete check the entire software system in its
specification of the software system environment
• Detailed Design – develop algorithms • Unit testing – check that each module
for each architectural component acts as expected
38