software development and programming languages

46
Introduction to Software Development and Programming Language Made By Prashant Kumar Amit Dahiya Siddhant Mohanpuria Pankaj Gautam

Upload: prashant-kumar

Post on 18-Jul-2015

860 views

Category:

Software


1 download

TRANSCRIPT

Page 1: software development and programming languages

Introduction to Software Development and Programming LanguageMade ByPrashant KumarAmit DahiyaSiddhant MohanpuriaPankaj Gautam

Page 2: software development and programming languages

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

Page 3: software development and programming languages

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

Page 4: software development and programming languages

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

Operating System

Application{The Computer

Software

• Windows 98/2000/XP• Linux/Unix

• Browser• Email• Word Processor

Page 5: software development and programming languages

5

What does it do?

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.

Hardware

Operating System

Application

Data In ProcessingInformation

OutFrom the user/device/sub-system

To the user/device/sub-system

Page 6: software development and programming languages

6

Types of Software

Generic (Off-the-shelf) Applications 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.

Hardware

Operating System

Application

Page 7: software development and programming languages

7

Types of Software

System Software 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

Operating System

Application

Page 8: software development and programming languages

8

Types of Software

Application Software Business Software

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.

Hardware

Operating System

Application

Page 9: software development and programming languages

9

Types of Software

Application Software Embedded Software

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.

Hardware

Operating System

Application

Page 10: software development and programming languages

10

Types of Software

Application Software Artificial Intelligence (AI) Software

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)

Hardware

Operating System

Application

Page 11: software development and programming languages

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.

Page 12: software development and programming languages

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: 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.

Page 13: software development and programming languages

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.

AnalysisDesign

CodeTest

Requirements

Software

Page 14: software development and programming languages

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.

Page 15: software development and programming languages

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

Page 16: software development and programming languages

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.

Page 17: software development and programming languages

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.

Page 18: software development and programming languages

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?

Page 19: software development and programming languages

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

Page 20: software development and programming languages

20

Page 21: software development and programming languages

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.

Page 22: software development and programming languages

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?

Page 23: software development and programming languages

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

Page 24: software development and programming languages

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.

Page 25: software development and programming languages

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.

Page 26: software development and programming languages

Levels of Programming LanguagesHigh-level program class Triangle {

... float surface() return b*h/2; }

class Triangle { ... float surface() return b*h/2; }

Low-level program LOAD r1,bLOAD r2,hMUL r1,r2DIV r1,#2RET

LOAD r1,bLOAD r2,hMUL r1,r2DIV r1,#2RET

Executable Machine code 0001001001000101001001001110110010101101001...

0001001001000101001001001110110010101101001...

Page 27: software development and programming languages

What Are the Types of Programming LanguagesFirst Generation LanguagesSecond Generation LanguagesThird Generation LanguagesFourth Generation LanguagesFifth Generation Languages

Page 28: software development and programming languages

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.

Page 29: software development and programming languages

Second Generation Languages

Assembly languagesSymbolic 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.

Page 30: software development and programming languages

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.

Page 31: software development and programming languages

Third Generation Languages (continued.)Alternative to compilation is interpretation

which is accomplished by a system program called an interpreter.

Common third generation languagesFORTRANCOBOLC and C++Visual Basic

Page 32: software development and programming languages

Fourth Generation Languages

A high level language (4GL) that requires fewer instructions to accomplish a task than a third generation language.

Used with databasesQuery languagesReport generatorsForms designersApplication generators

Page 33: software development and programming languages

Fifth Generation Languages

Declarative languagesFunctional(?): Lisp, Scheme, SML

Also called applicativeEverything is a function

Logic: PrologBased on mathematical logicRule- or Constraint-based

Page 34: software development and programming languages

The principal paradigms

Imperative Programming (C)Object-Oriented Programming (C++)Logic/Declarative Programming (Prolog)Functional/Applicative Programming (Lisp)

Page 35: software development and programming languages

Programming Languages

Two broad groupsTraditional 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

Page 36: software development and programming languages

Traditional Programming Languages

FORTRANFORmula TRANslation.Developed at IBM in the mid-1950s.Designed for scientific and mathematical

applications by scientists and engineers.

Page 37: software development and programming languages

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.

Page 38: software development and programming languages

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.

Page 39: software development and programming languages

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.

Page 40: software development and programming languages

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.

Page 41: software development and programming languages

Special Programming Languages

Scripting LanguagesJavaScript and Vb ScriptPhp and ASPPerl and Python

Command Languagessh, csh, bash

Text processing LanguagesLatex, Post Script

Page 42: software development and programming languages

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.

Page 43: software development and programming languages

Special Programming Languages (cont)XML

Extensible Markup Language.A language for defining other languages.

Page 44: software development and programming languages

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.

Page 45: software development and programming languages

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.

Page 46: software development and programming languages