software engineering

33

Transcript of software engineering

Page 1: software engineering
Page 2: software engineering

What is Software

1. It is a set of programs and related documentation which activates hardware and get things done.

2. Instructions that when executed provide desired function and

performance, Data structures that enable the programs to adequately

manipulate information and Documents that describe the operations and

use of the programs.

3. Software is a set of instructions to acquire inputs and to manipulate

them to produce the desired output in terms of functions and

performance as determined by the user of the software.

It also includes a set of documents, such as the software manual, meant

for users to understand the software system. Today's software

comprises the Source Code, Executables, Design documents,

Operations and System Manuals and Installation and Implementation

Manuals.

Page 3: software engineering

Types of Software

Software is classified into two classes : Generic and Customized.

Generic software is designed for a broad customer market whose

requirements are very common, fairly stable and well understood by the

software engineer.

Customized products are those that are developed for a customer where

domain, environment and requirements being unique to that customer

and cannot be satisfied by generic products.

Requirements and specifications in a generic product are controlled by

the developer, whereas in the case of the customized product, these are

controlled by the customer and influenced by the practices of that

industry.

The bare minimum essential attributes of good software are four

Maintainability Dependability Efficiency Usability

Page 4: software engineering

Categories of Software

All such software applications are categorized into five types for

convenience. They are

System Software : It is the enabler and service provider to software

applications loaded on the computer system. It regulates the system’s

performance and helps to run user-initiated applications. (DOS, Unix)

Business Software : It can be generic or customer specific product.

Some are common to all industries while some deal with industry

specific information processing requirements. (ERP, SCM, CRM

Packages)

Design and Scientific Software : It deals with processing requirements in

their specific field. They are written for specific applications using the

principles and formulae of each field.

Continued ….

Page 5: software engineering

Categories of Software ….. Continued …….

Embedded Software : When software written to perform certain functions

under control conditions and further embedded into hardware as a part

of larger systems, is called embedded software.

Artificial Intelligence : it uses non numerical algorithms which use the

data and information generated in the system, to solve the complex

problems. These problem scenarios are not generally amenable

(responsive) to problem-solving procedures, and require specific

analysis and interpretation of the problem to solve it.

Page 6: software engineering

What is Engineering

Engineering means Design & Build. So software engineering means

systematic, structured and professional approach of designing and

developing software. Software engineering is a layered technology to

provide maximum quality.

It is defined as discipline that addresses Economic, Design,

Maintenance, Implementation aspects of the software.

It is systematic, scientific and methodical use of standards, models and

algorithms in design and development. It considers issues like

hardware, operating systems, interoperatability between platforms,

performance, scalability and upgrades.

Page 7: software engineering

System Analyst / Software Engineer

Designing & Implementing systems to suit organizational needs are the

functions of system analyst. He/she plays a major role in seeing business

benefit from computer technology. He is a person who conducts a

methodical study and evolution of an activity to identify its desired

objectives in order to determine procedures by which these objectives can

be gained. (Methodical study – Define Objectives – Decide procedures – in

controlled environment – with available resources – to achieve common

goals)

System Analyst / Software Engineer - Interpersonal Skills

Communication

Understanding

Teaching ( Educating people )

Selling ( selling ideas, promoting innovations )

Creativity ( Own ideas )

Authority ( Confidence to tell people what to do )

Responsible

Versatility ( Doing different projects & handling changes )

Page 8: software engineering

System Analyst / Software Engineer - Technical Skills

1. Analysis and Modeling abilities

2. Conceptualize a software solution and support it by design.

3. Dynamic interface (Blending technical and non-technical

considerations in functional specifications and general design.)

4. Project Management (scheduling, coordinating, staffing, directing,

planning, control)

5. Problem solving (reducing problems to their elementary levels,

developing alternative solutions )

6. Domain knowledge of software systems.

7. Essential Technology and language skills - Basic Knowledge

Page 9: software engineering

Change agent

Investigator & monitor

Architect

Psychologist

Salesperson

Politician

User interface analyzer

Behavioral issues

System contracts

Conflict solutions.

Role of System Analyst / Software Engineer

Role of System Analyst / Software Engineer in each phase of SDLC

Page 10: software engineering

What is System Types of System

Elements of the System Characteristics of the System

Organizational relationship

among functioning units.

Deterministic / Probabilistic

Open / Closed system

Physical / Abstract

Empirical / Conceptual

Natural / Manmade

Social / Man-machine / Exclusive machine

Inputs

Outputs

Processes

Control

Feedback

Organization

Interaction

Interdependence

Integration

Environment

Boundaries and Interface

Quality

Central Objective

Page 11: software engineering

What is a System

It is a collective entity consisting of groups of elements that are

interdependent, interrelated and that interact to achieve certain

objectives. A system could be a part of bigger system.

System Definition

General systems theory is concerned with “developing a systematic,

theoretical framework upon which to make decisions. It discourages

thinking in a vacuum and encourages consideration of all the activities of

the organisation and its external environment. The idea of systems has

become more practical and necessary in conceptualizing the

interrelationship and integration of operations, especially when using

computers. Thus a system is a way of thinking about organizations &

their problems. It also involves a set of techniques that helps in solving

problems.

The term system is derived from the Greek word “Systema” which means

a organizational relationship among functioning units or components.

e.g. Transport system, Telephone system.

Page 12: software engineering

Common Characteristics of Any System

Organization :- Arrangement of components to achieve objectives. Such a arrangement portrays a system sub-system relationship, define the authority structure, specifies formal flow of communication and formalizes chain of commands.

Interaction :- Manner in which components functions with each other.

Interdependence :- Proper coordination and linking of components.

Integration :- It is the completeness of the system

Central Objective :- user must know the central objective early in the analysis for successful design and conversion.

Environment :- It is the source of external elements that impinge on the system. In fact it often determines how a system must function

Boundaries & Interface :- A system should be defined by its boundaries. i.e. the limits that identify its components, processes, and interrelationship when it interfaces with another system. e.g. a teller system in commercial bank is restricted to the certain related activities.

Page 13: software engineering

Concept of sub-system & supra system

Sub system Supra system Super system

Human beings… Organisation… Industry… Economy… Global economy.

Deterministic & Probabilistic System

A deterministic system operates in a predictable manner and in a given

environment. The behavior of the system’s internals is known with

certainty.In other words, in a deterministic system the next state of the

the system can be predicted without doubt if the current state of the

system is known.

In contrast, a probabilistic system operates in an unpredictable manner.

The behavior of the system internal is probabilistic and hence its

outcome becomes unpredictable. Even if the status of the current system

is known, the next state of the system cannot be predicted with certainty.

Page 14: software engineering

Closed or Open System

A closed system is one that is self contained and self reliant (dependent),

and does not need to interact; it is not influenced by the external

environment.

Open systems are designed to exchange or to interact with the

environment and react to inputs accordingly. These systems are

designed to receive undefined inputs. The design and architecture of the

open system is such that it is easily adaptable to changes arising out of

environmental changes.

Exercise : write short note on

Physical / Abstract Systems Empirical / Conceptual Systems

Natural / Manmade Systems Man-machine / Exclusive machine Systems

A large complex system is built with principles to ensure effective

system design. The principles used in system building are

Decomposition Simplification Decoupling

Page 15: software engineering

1. Identify & Understand the problem

2. Breaking down the problem into sub problems – Modularity

3. Objective Definition

4. Preliminary Investigation - Fact Finding - Information Gathering

5. Feasibility Study

6. System Analysis

7. System Design

8. Coding - Programming

9. Testing

10. Implementation

11. Maintenance & Support

Page 16: software engineering

Software architecture embodies modularity; that is, software is divided

into separately named and addressable components, called modules

that are integrated to satisfy problem requirements.Modularity is the

single attribute of software that allows a program to be intellectually

manageable. As the number of modules grows, the effort (cost)

associated with interfacing the modules also grows.

Coupling - Coupling is a measure of interconnections among modules

in software structure and program structure. The concept is used in

design and architecture.

Page 17: software engineering

Questionnaire

Random Sampling

Document Study

Interviews

Observation

Define Prime objectives.

Define sub-system (modular) objectives.

Definition of system procedures and functions.

Definition of system constraints.

Definition of system maintenance responsibility.

Page 18: software engineering

Technical

Operational

Economical

Social

Motivational

Technical Feasibility - Analysis showing the feasibility of meeting

requirements through software capability, reliability, availability and the

skills of development team. It is concerned with whether the system

proposed for development can be computerized. But due to rapid &

fantastic development in the hardware industry, now technical feasibility

means whether to & how to computerize. This calls for a look on the

software and computer experts rather than the hardware.

Page 19: software engineering

Operational Feasibility - analysis of the operational environment (users, work culture, capacity and capability of organisation etc.) to confirm whether the system will succeed in actual usage even though it is technically and economically feasible. It focuses on the willingness and ability of the management, employees, customers and suppliers of an organization to operate, use and support a proposed system.

Economical feasibility :- It is basically cost benefit analysis. consideration of Startup Cost ( Salaries to programmers and analysts, preparation of data and system manuals, other supporting documents, cost of additional hardware and training ) & Operational Cost ( H/w or S/w rental of depreciation charges, Salaries of operating staff, maintenance staff, installation cost, overheads)

Steps to be followed in CBA Cost benefit Analysis1. Study the information 2. Define the objectives3. Determine various inputs & outputs 4. Establish main system5. Identify changes 6. Estimate cost involved7. Estimate benefits 8. Perform CBA

Page 20: software engineering

Analysis Phase - it involves preparing a detailed analysis of the

different functions to be carried out by the system and identification of

the data flow among the different functions. Each function required by

the user is studied carefully and then recursively decomposed into

various subfunctions and the data flows.

Detailed Study of Existing System’s procedures, Existing Systems

Document Study, Its Significance, Num. Of Copies, Information Flow,

File Organizations, Validations & Complexities, Data Processing

Requirements, Such as Searching, Sorting, Merging & Indexing.

Process Logic Etc.

Page 21: software engineering

Output Design

Input Design

File Design

ERD to Files

Normalization

Process Design

Structured English

Decision Trees

Decision Tables

Code Design

Menu Design

Location Wise Testing

Onsite

Off Site - Developer’s Site

User Wise Testing

End User - Operators

Programmers

Software Engineer

Page 22: software engineering

System Design

Design Phase - The exact requirements of the customer are determined and documented in a SRS Document. The goal of the design phase is to transform the requirements specification into a structure that is suitable for implementation in some programming language. In technical terms, through the design phase we derive the software architecture from the SRS Document. There two distinct design approaches are being followed. I.e. Traditional design approach and object oriented approach.

Interface design - it describes how the software communicates with itself I.e. within various components.

Software Testing

Location wise testing User wise testing General Testing

Location wise Testing – Onsite (Client’s Site) , Offsite (Developer’s site)

Page 23: software engineering

Output Design

Contents Format

Location Frequency

Response Volume

Data-File Design

Normalisation

ERD into filesProcess Design ( Specification )

Structured English, Decision trees, Decision Tables

Data flow diagrams

Functional decomposition diagrams

Program Specification

Menu Design

Code Design

Input Design

Data Recording Data Conversion

Data Verification Data Control

Data Validation

Data Correction

Page 24: software engineering

User wise TestingUser or OperatorRun all the programs with test dataList out the errors foundFollow data security measures, backups, recoveries as per system specifications.

ProgrammerPreparation of test data and filesLogical error handling of program modules & debug themDocumentation of bugs and effort to remove them

System AnalystModule wise and system wise study of errors.Comparison of outputs with designOverall monitoring and control activity.Beta Test - a test is conducted at customer site by the end user without the presence of developer.

Page 25: software engineering

Black Box Test - a test to confirm whether the outcome is correct and as expected for the given inputs.

White box testing - it tests the internals of the system. It tests all internal independent paths, logical decisions, loops within boundaries and internal data structure.

Bottom up Testing - a process of testing that begins at the lowest level and moves upwards in layers. ( sub module to module to sub system … ) - Similarly Top Down Testing

Incremental testing - testing strategy in which sub systems are tested in isolation as units, the testing then continues for integration testing.

Integration Testing - Systematic testing process that discovers errors associated with interfaces which build integrated program structure.

Unit Testing - testing an individual module in isolation. This is in contrast to integration testing.

Usability testing - it measures the ease of use and satisfaction of the users.

Page 26: software engineering

Procure necessary h/w and s/w. – Site Preparation

Procurement of necessary preliminary software

Creation of master files with necessary updates

Install the system package, executable version

Training to all end users

Preparation of user manuals

Monitor the running operations

Discard the old system.

System Conversion

Version Control

Page 27: software engineering

Implementation

System implementation includes all those activities that take place to

convert from the old system to the new. The new system may be totally

new, replacing an existing manual or automated system, or may be a

major modification to an existing system. Proper implementation is

essential to provide a reliable system to meet organization requirements.

Preparation of user manuals

Creation of master files with necessary updates

Training to all end users

Procure necessary h/w and s/w.

Install the system package, executable version

Monitor the running operations

Discard the old system.

Page 28: software engineering

User Manual - It provides a vehicle of communication between customer and developer. It is prepared using information form the system definition as well as the results of prototype studies and mock-ups of user displays and reports.

User’s Manual Should Contain

System objectives

Related system

ResponsibilitiesCost benefit analysis

Data flow diagrams

Operating procedures Security measures

File layouts

Report layouts

System process logic

Validation parameters

Summery about system results

Page 29: software engineering

Maintenance - it is a process for modifying the software after its release

to customer. There are different types of maintenance, namely

corrective, preventative, avoidance and adaptive.

Four different types of changes encountered during the maintenance

phase.

Corrective :- It changes the software to correct defects

Adaptive :- It results in modification to the software to accommodate

changes to its external environment.

Enhancement (Perfective) :- It extends the software beyond its original

functional requirements

Preventive :- It makes changes to computer programs so that they can

more easily corrected, adapted and enhanced.

Page 30: software engineering

1. Water Fall Model – Classic Life Cycle – Linear Approach

2. Prototyping Approach

3. Spiral Model

4. 4 GT – CASE Tools

5. OOM – Object Oriented Modeling / Programming

6. RAD – Rapid Application Development

Page 31: software engineering

ProblemIdentification

Modularity

ObjectiveDefinition

FactFinding

FeasibilityStudy

SystemAnalysis

SystemDesign

Programming

Testing

Implementation

Page 32: software engineering

Start

Stop

Gather &Refine

Information

QuickDesign

BuildPrototype

CustomerEvaluation

RefinePrototype

EngineerProduct

Page 33: software engineering

Customer Evaluation

Planning Risk Analysis

Engineer the Product

GoNo-Go

Decision