Software Engineering Fundamentals

Post on 20-Jan-2015

330 views 1 download

description

Fundamentals of Software Engineering.

Transcript of Software Engineering Fundamentals

Software Engineering

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.

Definition

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

1. Conventional Methods of SE

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

Software Life-cycle

Requirements Analysis Design Construction Testing Installation Maintenance Retirement

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

Analysis Procedure

Requirements Collection Customer Communication

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

Analysis Modeling

ER Diagram Data Flow Diagram

State Transition Diagram

Data Dictionary

Data ObjectDescription

Process/FunctionSpecification

Behavior/ControlSpecification

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

2. Software Project Management

Four P’s of Project Management People Product Process Project

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.

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.

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.

Metrics…

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

Metrics Types

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

Cases)

Estimation

Fundamentals Inputs Process Outputs Types Metrics Samples

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

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

Estimation inputs... Cost data

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

etc,.

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%

Estimation outputs

Direct Project size Effort Duration Resources Cost

Indirect schedule process

Estimation types

Functional LOC Method based Experience based

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

EstimationOptions Delay Estimates

Depends on Similar Projects

Decomposition Techniques

Empirical models

Decomposition Techniques

Software sizing

Function point sizing

Standard component sizing

Estimation

Problem based Estimation

LOC- based Estimation

FP- based Estimation

Process- based Estimation

Estimation

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

Estimation

Work tasks Week1D1 D2 D3 D4 D5

Week2D1 D2 D3 D4 D5

Week3

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

Timeline Chart

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

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

Risk Management

What can go wrong ? What is the likelihood

(Probability) ? What will the damage be

(Impact) ? What can we do about it ?

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

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

Risk Management Paradigm

Identify

Analyze

PlanTrack

Control

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.

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

A Quality Metric

E = total errors found before delivery

D = total defects found after delivery

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

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

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

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

Review Process

Establish Review Guidelines The review meeting Review reporting and record

keeping

4. Software Testing

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.

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

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

Steps in Testing (contd...)

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

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.

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.

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

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

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.