51
Software Engineering

Software Engineering Fundamentals

Embed Size (px)

DESCRIPTION

Fundamentals of Software Engineering.

Citation preview

Page 1: Software Engineering Fundamentals

Software Engineering

Page 2: Software Engineering Fundamentals

Definition Software: The programs, routines and

symbolic language that controls the functioning of the hardware and direct its operation.

Engineering: The application of scientific and mathematical principals to practical ands such as the design, manufacture & operation of efficient and economical structures, machines, processes and systems.

Page 3: Software Engineering Fundamentals

Definition

Software Engineering: A systematic approach to the analysis, design, implementation and maintenance of software.

Page 4: Software Engineering Fundamentals

1. Conventional Methods of SE

Analysis Concepts and Principals Analysis Modeling Design Concepts and Principals Architectural Design User Interface Design

Page 5: Software Engineering Fundamentals

Software Life-cycle

Requirements Analysis Design Construction Testing Installation Maintenance Retirement

Page 6: Software Engineering Fundamentals

Analysis concepts and Principals

Understand the Information domain of the problem

Define the functionalities of the S/W Represent the behavior of the S/W Partition the models that models

that depict information, function and behavior

Page 7: Software Engineering Fundamentals

Analysis Procedure

Requirements Collection Customer Communication

(Questionnaire, Interviews etc.) Modeling Partitioning Prototyping Requirements Specification

Page 8: Software Engineering Fundamentals

Analysis Modeling

ER Diagram Data Flow Diagram

State Transition Diagram

Data Dictionary

Data ObjectDescription

Process/FunctionSpecification

Behavior/ControlSpecification

Page 9: Software Engineering Fundamentals

Design Concepts & Principals

Data Design Data Structures

Architectural Design Relationship among structural elements

Interface Design Human-Computer interaction

Procedural Design Procedural description of S/W

components

Page 10: Software Engineering Fundamentals

2. Software Project Management

Four P’s of Project Management People Product Process Project

Page 11: Software Engineering Fundamentals

Project Management… People must be organized into effective

terms, motivated to do high-quality s/w work and coordinated to do effective communication.

The Product requirements must be communicated from customer to developer, partitioned into their constituent parts and positioned for work by the software team.

Page 12: Software Engineering Fundamentals

Project Management… The Process must be adapted to the

people and the problem The Project must be organized in a

manner that enables the software team to succeed.

The Project Management also includes Measurement and metrics estimation, risk analysis, schedules, tacking and control.

Page 13: Software Engineering Fundamentals

Metrics

Measurement enables to improve the software process, assist in planning, tracking and control of a software project and assess the quality of the product that is produced.

Measures of specific attributes of the process, project and product are used to compute S/W metrics.

Page 14: Software Engineering Fundamentals

Metrics…

Metrics is a quantitative measure of the degree to which a system, component or process posses a given attribute.

Page 15: Software Engineering Fundamentals

Metrics Types

Size Oriented Metrics (LOC) Function Oriented Metrics (FP) Use Case Oriented Metrics (Use

Cases)

Page 16: Software Engineering Fundamentals

Estimation

Fundamentals Inputs Process Outputs Types Metrics Samples

Page 17: Software Engineering Fundamentals

Estimation fundamentals

NONO zone zoneKnowKnow zone zone

Actual reqmtsActual reqmts

Requirement clarityRequirement clarity

• Accelerate progress into KNOW zoneAccelerate progress into KNOW zone

• Advanced requirements gathering tech Advanced requirements gathering tech

• Approximate NO zone with riskApproximate NO zone with risk

Page 18: Software Engineering Fundamentals

Estimation inputs High quality requirements Historical productivity rates

LOC/hr, FP/hr, Pgms/day Application attributes Project team experience PM experience Language used Methodology used Platform Code complexity

Page 19: Software Engineering Fundamentals

Estimation inputs... Cost data

S/w cost H/w cost Service charge Salaries Link Miscellaneous - travel, team meet expenses

etc,.

Page 20: Software Engineering Fundamentals

Estimating process Identify the solution offerring - Organization

std process DB 5% Freeze inventory and deliverables 50% Alternative implementation techniques - build,

buy, outsource, tool based 10% Gather other estimation inputs 20% Perform estimate - Excel 10% Create schedule - res, onsite/offshore 2% Estimate the cost in $ 3%

Page 21: Software Engineering Fundamentals

Estimation outputs

Direct Project size Effort Duration Resources Cost

Indirect schedule process

Page 22: Software Engineering Fundamentals

Estimation types

Functional LOC Method based Experience based

Page 23: Software Engineering Fundamentals

Estimation - Metrics

Productivity : size/hrs Quality

Product - achieve funct & tech requirements

Process - defect removal rate, measures Cost: price/prj.unit size Customer satisfaction – prj time

based review

Page 24: Software Engineering Fundamentals

EstimationOptions Delay Estimates

Depends on Similar Projects

Decomposition Techniques

Empirical models

Page 25: Software Engineering Fundamentals

Decomposition Techniques

Software sizing

Function point sizing

Standard component sizing

Estimation

Page 26: Software Engineering Fundamentals

Problem based Estimation

LOC- based Estimation

FP- based Estimation

Process- based Estimation

Estimation

Page 27: Software Engineering Fundamentals

EstimationEmpirical Models

LOC- oriented estimation models

E = 5.2*(KLOC)0.91 Walton-Felix Model

E = 5.5+.73*(KLOC)1.16

Bailey-Basali Model

E = 3.2+(KLOC)1.05 Boehm simple Model

E = 5.288+(KLOC)1.047

Doty Model for KLOC >9

E is effort in person months

Page 28: Software Engineering Fundamentals

Estimation

Work tasks Week1D1 D2 D3 D4 D5

Week2D1 D2 D3 D4 D5

Week3

1.1 Identify Needxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxmilestone1.2Define desired-----

Timeline Chart

Page 29: Software Engineering Fundamentals

Tracking

Work Tasks PlannedStart

ActualStart

PlannedComplete

Actual Complete

AssignedPerson

EffortAllocated

Notes

1.1 Identify Need Wk1 d1 Wk1 d1 Wk1 d2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxmilestone1.2Define desired-----

Project Table

Page 30: Software Engineering Fundamentals

Estimation

1 Introduction

2 Project Estimate

3 Risk Management Strategy

4 Schedule

5 Project Resources

6 Staff Organization

7 Tracking and Control Management

8 Appendices

Project Plan

Page 31: Software Engineering Fundamentals

Risk Management

What can go wrong ? What is the likelihood

(Probability) ? What will the damage be

(Impact) ? What can we do about it ?

Page 32: Software Engineering Fundamentals

Reactive Rick Management Project team reacts to risks when they

occur Mitigation – plan for additional

resources in anticipation of fire fighting Fix on failure - resources are found and

applied when the risk strikes Crisis management - failure does not

respond to applied resources and project is in jeopardy

Page 33: Software Engineering Fundamentals

Proactive Risk Management

Formal risk analysis is performed Organization corrects the root

causes of risk TQM concepts and statistical SQA Examining risk cources that lie

beyond the bounds of the s/w Developing the skill to manage

change

Page 34: Software Engineering Fundamentals

Risk Management Paradigm

Identify

Analyze

PlanTrack

Control

Page 35: Software Engineering Fundamentals

3. Software Quality

Conformance to explicit and implicit customer requirements

Striving for excellence in reliability and functions by continuous [process] improvement, supported by statistical analysis of the causes of failure.

Page 36: Software Engineering Fundamentals

Measuring S/W Quality No. of errors & defects, severity,

type, cause, effort to correct+ Design measures, Complexity,

structure, flow= Defect removal efficiency, statistical

SQA data, design quality metrics

Page 37: Software Engineering Fundamentals

A Quality Metric

E = total errors found before delivery

D = total defects found after delivery

Defect removal efficiency (DRE) = E / (E+D)

Page 38: Software Engineering Fundamentals

Software Quality S/w Quality is achieved through a

disciplined approach called Software Engineering

S/w Quality can be defined, described, and measured.

S/w Quality can be assessed before any code has been written

S/w Quality cannot be tested into a product

Page 39: Software Engineering Fundamentals

Software Quality Assurance SQA Goals: To improve s/w quality by

monitoring both the process and the product

To ensure compliance with all local standards for software engineering

O ensure that any product defect, process variance or standards noncompliance is noted and fixed

Page 40: Software Engineering Fundamentals

Formal Technical Reviews

A meeting conducted by technical people for technical people

A technical assessment of a work product created during the s/w engineering process

A S/w Quality Assurance mechanism

A training ground

Page 41: Software Engineering Fundamentals

Review Process

Establish Review Guidelines The review meeting Review reporting and record

keeping

Page 42: Software Engineering Fundamentals

4. Software Testing

Page 43: Software Engineering Fundamentals

What is Software Testing?

Any activity aimed at evaluating an attribute or capability of a program or system, to verify that it meets its required results.

It is the process of executing software in a controlled manner.

Testing is the process of executing a program with an intent to find errors.

A process of verification and validation.

Page 44: Software Engineering Fundamentals

IEEE-Definition of Testing

“The process of exercising or evaluating a system by manual or automatic means to verify that it satisfies specified requirements or to identify differences between expected and actual results.”

Page 45: Software Engineering Fundamentals

Steps in Testing

Determine the goals and what is to be measured in the test

Satisfy the Requirements Reliability

Decide how to test Inspections walkthrough manual automation

Page 46: Software Engineering Fundamentals

Steps in Testing (contd...)

Develop test plans and test cases Determine the expected results Execute the test cases Compare the results

Page 47: Software Engineering Fundamentals

Levels in Software Testing

Unit Testing Individual units are tested Confirms the module is coded correctly Types are Black Box testing & White Box

testing

Integration Testing Test the sub systems and modules and its

interfaces Checks if they function properly and meet the

system requirements.

Page 48: Software Engineering Fundamentals

Levels in SoftwareTesting

System Testing Black box Testing. Entire system is tested as an entity.

User Acceptance Testing Testing the finished product with respect to

the user perception.

Page 49: Software Engineering Fundamentals

Points to remember while Testing

Testing is the process of executing a program to find an error.

It is impossible to test any module or system completely.

There are practical and theoretical limitations. Correcting an error can introduce another error. Testing can prevent errors. Find them early. Testing is best done by independent testers. Generally the person who codes the module carries

out the Unit Testing

Page 50: Software Engineering Fundamentals

Why is Testing required? General

Developers are not infallible Requirement implications are not seen Find the bugs and limitations

Business Post release debugging is too expensive Reputation,sales,operations all affected Hazardous bugs(life/property)

Professional Test case design challenging, rewarding Good testing gives confidence in work Systematic test is effective

Page 51: Software Engineering Fundamentals

Definitions

Bug/Defect Deviation from specification or standard Anything that causes customer dissatisfaction

Validation Test phase of life cycle. It is the process of checking

if what has been specified, is what the user actually wanted.

Verification Quality control activity. It is the checking or testing

of items, including software, for conformance and consistency with an associated specification.