1. Introduction to Software
Development and Programming
Language
Made By
Prashant Kumar
Amit Dahiya
Siddhant Mohanpuria
Pankaj Gautam
2. 2
Content
Software
What is Software?
Types of Software
Why develop new Software?
Introduction to Software Development
Process Models
The Waterfall Model
Programming Language
System Software
Languages
3. 3
Software
Why is it so important?
The economies of ALL developed nations are
dependent on software.
9/11 highlights this with the destruction of the stock
exchange computers
More and more of our daily lives are being
supported/monitored by software
The engines of our cars
Our washing machines
Getting on a bus/train
4. Operating System
{ Application The Computer
4
What is Software?
Software is the part of a
computer that makes it
useful.
In this module we are going to
focus upon application software
development.
Software is not tangible.
It is ‘conceptual’ so doesn’t wear
out like hardware.
Software is a set of
instructions (Programs).
These are acted upon (executed)
by the hardware.
Software is also the documents
that describe the operation and use
of the programs.
Hardware
Software
• Windows 98/2000/XP
• Linux/Unix
• Browser
• Email
• Word Processor
5. 5
What does it do?
Application
Operating System
Hardware
Generally software takes in data and processes it
into information.
The many different types of software basically vary
from where/whom data is acquired and where/whom
information is sent/given.
Data In Processing Information
Out
From the
user/device
/sub-system
To the
user/device
/sub-system
6. 6
Types of Software
Generic (Off-the-shelf) Applications
Application
Operating System
Hardware
Well known packages such as word processors,
accounting, image editing, … to name but a few.
Anyone is able to buy them.
Bespoke (Customized) Products
Systems that are built specifically for individual
people/organisations.
They can also be generic software packages that are
customized.
The high-cost nature of this type of software
means it is not economically available to all.
7. 7
Types of Software
System Software
Application
Operating System
This type of software exists at the Operating
System layer. It is the operating system itself,
compilers, editors….any kind of software that
supports the execution and/or development of
applications.
Application Software
Real-time Software
Programs that monitor/analyse/control real world events.
A nuclear power plant cooling system is a good
example.
Hardware
8. 8
Types of Software
Application Software
Business Software
Application
Operating System
Hardware
Business Information Systems such as payroll, accounts
and order management/tracking. There are off-the-shelf
packages available for small businesses, however large
businesses usually develop their own software.
Engineering and Scientific Software
Typically ‘number crunching’ programs for areas such as
astronomy, molecular biology, weather forecasting and
Computer Aided Design (CAD) for engineers. Generic
programs do exist for some of these areas, however
research usually requires new software to be developed.
9. 9
Types of Software
Application Software
Embedded Software
Application
Operating System
Hardware
Intelligent products such as cookers, washing machines
and microwaves use embedded software that typically
resides in a Read Only Memory (ROM). Due to the
individual nature of such products this software is
usually developed/tailored for each.
Personal Computer Software
Spreadsheets, word processors, computer graphics,
multimedia and database applications are typical. This
type of software is predominantly off the shelf but does
go through many versions to remove bugs and increase
functionality.
10. 10
Types of Software
Application Software
Artificial Intelligence (AI) Software
Application
Operating System
Hardware
AI is used to solve complex problems such as
scheduling the maintenance of manufacturing equipment
to minimise their shutdown. Other uses include pattern
recognition (speech/visual). This software is typically
newly developed for each application.
The application of computers through
software development is only limited by our
imaginations……(and its’ cost)
11. 11
Why develop new Software?
As hardware will always eventually wear out, it will
need to replaced.
Software on the other hand, doesn’t wear out in this
traditional sense, but will become increasingly less
useful as users requirements for it changes over
time.
This means that software needs to be either periodically
updated or replaced.
Understanding the process of software development
is therefore paramount in keeping software
systems/applications continually useful to its users.
12. Introduction to the Software
Development Process
There are many documented software development
processes; too many to mention here. However, all
software development processes can be
categorised into:
12
Sequential Process Models
Where software is developed in a sequence of stages,
typically: Analyse, Design, Code, Test.
Iterative Process Models
Where a sequential process model is repeated until the
software is deemed correct. Typically used when the
requirements for a piece of software are not fully known when
development starts.
13. The Waterfall Model (Sequential)
While other process models will be
investigated in this module, we will be
focussing upon the central stages of the
Waterfall Model of Software Development.
13
Analysis
Design
Code
Test
Requirements
Softwar
e
14. 14
Analysis (Waterfall Model)
The analysis phase of software development aims
to develop a requirements specification that can be
used to design the new software system.
While there is usually more to a requirements
specification, we will be focussing on two of its main
parts:
Functional Requirements
First, an abstract definition of what the system must do.
Then, a detailed set of functional requirements can be
bulleted.
Non-functional Requirements
Usually ‘qualitative’ factors such as performance, efficiency
and usability are described.
15. 15
Design (Waterfall Model)
System design is concerned with how the
system functionality is to be provided by the
different components of the system. It
involves:
Requirements Partitioning and Identification of
Sub-systems (if any)
Assign requirements to sub-systems and specify
their functionality
Define sub-system interfaces
16. 16
Design (Waterfall Model)
For each sub-system, a detailed design document is
then created.
It specifies the structural make-up of the sub-system and
were necessary how data is stored, manipulated and
communicated as well as how information is presented.
Design is often an iterative process, especially in a
system made up of several sub-systems
As problems identified during the design of one sub-system
can cause the re-design of another.
Design is typically specified using a mixture of
textual descriptions and structural diagrams.
17. 17
Coding (Waterfall Model)
Coding can be seen as simply interpreting the
design documents into machine executable
instructions.
There are many different programming languages
Factors including the application’s domain will help
in making a choice of which programming language
to use:
Platform (Hardware, Operating System, Network),
Programming Paradigm (Object-Oriented/ Function-based/
Event-based)
Experience of the ‘programmers’ available to do the coding.
18. 18
Testing (Waterfall Model)
Testing should start as soon as the
requirements specification is available.
A test plan document should be drawn up in
parallel with the initial design of the system
The plan uses the requirements to provide an
overall testing strategy for the complete system in
order to satisfy the following conditions:
Verify – Have we built the system right?
Validate – Have we built the right system?
19. 19
Testing (Waterfall Model)
As a more detailed design for each of the
sub-systems is generated, specific testing
strategies for each sub-system can be
designed
When the code for a sub-system is complete,
specific tests for each sub-system can be
designed based upon the chosen strategy
21. Programming Languages and Compilers
are at the core of Computing
All software is written in a programming language
Learning about compilers will teach you a lot about the
programming languages you already know.
Compilers are big – therefore you need to apply all you knowledge
of software engineering.
The compiler is the program from which all other programs arise.
22. Programming Language Concepts
What is a programming language?
Why are there so many programming
languages?
What are the types of programming
languages?
Does the world need new languages?
23. What is a Programming Language
A programming language is a set of rules
that provides a way of telling a computer
what operations to perform.
A programming language is a set of rules
for communicating an algorithm
It provides a linguistic framework for
describing computations
24. What is a Programming Language
English is a natural language. It has words,
symbols and grammatical rules.
A programming language also has words,
symbols and rules of grammar.
The grammatical rules are called syntax.
Each programming language has a different
set of syntax rules.
25. Why Are There So Many
Programming Languages
Programming languages have evolved over
time as better ways have been developed to
design them.
First programming languages were developed in
the 1950s
Since then thousands of languages have been
developed
Different programming languages are
designed for different types of programs.
26. Levels of Programming Languages
High-level program class class Triangle Triangle {
{
...
float surface()
...
float surface()
return b*h/2;
}
return b*h/2;
}
Low-level program LOAD r1,b
LOAD r1,b
LOAD r2,h
MUL r1,r2
DIV r1,#2
RET
LOAD r2,h
MUL r1,r2
DIV r1,#2
RET
Executable Machine code 0001001001000101
0001001001000101
0010010011101100
10101101001...
0010010011101100
10101101001...
27. What Are the Types of
Programming Languages
First Generation Languages
Second Generation Languages
Third Generation Languages
Fourth Generation Languages
Fifth Generation Languages
28. First Generation Languages
Machine language
– Operation code – such as addition or
subtraction.
– Operands – that identify the data to be
processed.
Machine language is machine dependent as it is
the only language the computer can understand.
Very efficient code but very difficult to write.
29. Second Generation Languages
Assembly languages
Symbolic operation codes replaced binary
operation codes.
Assembly language programs needed to be
“assembled” for execution by the computer. Each
assembly language instruction is translated into
one machine language instruction.
Very efficient code and easier to write.
30. Third Generation Languages
Closer to English but included simple
mathematical notation.
Programs written in source code which must be
translated into machine language programs called
object code.
The translation of source code to object code is
accomplished by a machine language system
program called a compiler.
31. Third Generation Languages
(continued.)
Alternative to compilation is interpretation
which is accomplished by a system program
called an interpreter.
Common third generation languages
FORTRAN
COBOL
C and C++
Visual Basic
32. Fourth Generation Languages
A high level language (4GL) that requires
fewer instructions to accomplish a task
than a third generation language.
Used with databases
Query languages
Report generators
Forms designers
Application generators
33. Fifth Generation Languages
Declarative languages
Functional(?): Lisp, Scheme, SML
Also called applicative
Everything is a function
Logic: Prolog
Based on mathematical logic
Rule- or Constraint-based
34. The principal paradigms
Imperative Programming (C)
Object-Oriented Programming (C++)
Logic/Declarative Programming (Prolog)
Functional/Applicative Programming (Lisp)
35. Programming Languages
Two broad groups
Traditional programming languages
Sequences of instructions
First, second and some third generation languages
Object-oriented languages
Objects are created rather than sequences of
instructions
Some third generation, and fourth and fifth
generation languages
36. Traditional Programming Languages
FORTRAN
FORmula TRANslation.
Developed at IBM in the mid-1950s.
Designed for scientific and mathematical
applications by scientists and engineers.
37. Traditional Programming Languages
(cont)
COBOL
COmmon Business Oriented Language.
Developed in 1959.
Designed to be common to many different
computers.
Typically used for business applications.
38. Traditional Programming Languages
(cont)
C
Developed by Bell Laboratories in the early
1970s.
Provides control and efficiency of assembly
language while having third generation
language features.
Often used for system programs.
UNIX is written in C.
39. Object-Oriented Programming
Languages (cont)
C++
It is C language with additional features.
Widely used for developing system and
application software.
Graphical user interfaces can be developed
easily with visual programming tools.
40. Object-Oriented Programming
Languages (cont)
JAVA
An object-oriented language similar to C++ that
eliminates lots of C++’s problematic features
Allows a web page developer to create
programs for applications, called applets that
can be used through a browser.
Objective of JAVA developers is that it be
machine, platform and operating system
independent.
41. Special Programming Languages
Scripting Languages
JavaScript and Vb Script
Php and ASP
Perl and Python
Command Languages
sh, csh, bash
Text processing Languages
Latex, Post Script
42. Special Programming Languages
(cont)
HTML
Hyper Text Markup Language.
Used on the Internet and the World Wide Web
(WWW).
Web page developer puts brief codes called
tags in the page to indicate how the page
should be formatted.
44. Criteria in a good language design
Writability: The quality of a language that enables a
programmer to use it to express a computation clearly,
correctly, concisely, and quickly.
Readability: The quality of a language that enables a
programmer to understand and comprehend the nature of
a computation easily and accurately.
Reliability: The quality of a language that assures a
program will not behave in unexpected or disastrous ways
during execution.
Maintainability: The quality of a language that eases
errors can be found and corrected and new features
added.
45. Criteria (Continued)
Generality: The quality of a language that avoids special
cases in the availability or use of constructs and by
combining closely related constructs into a single more
general one.
Extensibility: The quality of a language that provides
some general mechanism for the user to add new
constructs to a language.