KEMBAR78
Software Engineering Hand Notes | PDF | Software Testing | Class (Computer Programming)
0% found this document useful (0 votes)
7 views42 pages

Software Engineering Hand Notes

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as ODT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views42 pages

Software Engineering Hand Notes

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as ODT, PDF, TXT or read online on Scribd
You are on page 1/ 42

Unit:-01

Introduction
Introduction to Software Engineering
● A software is a program or set of program ............... instructions which provide
desired functionality and engineering is the process of designing building
something that serve a particular purpose and find a cost effective solution to
problem.
● Software Engineering is a systematic approach to the design, development,
operation and maintenance.

Role of Software
1. As a Product:-
● It delivers the computing potential accross network hardware.
● It enable the hardware to....... the expected functionality.
● It acts as information transformer because it produces, manages, modifies, display
or transmit information.
2. As a vehical for delivering a product:-
● It provides system functionality. (Ex: Payroll system)
● It controls other software. (Ex: Operating system)
● It help build other software. (Ex: Software tools)

Objective of software Engineering


1. Maintainability:- It should be feasible for the software to evalve to meet changing
requirements.

2. Correctness:- A software product is correct. It the different requirements as


specified SRS document have been correctly implemented.

3. Reusability:- A software product has good reusability if the different modules of the
product can easily be reued to develop new product.

4. Testability:- Here software facilitates both the establishment of test criteria and
evaluation of the software with respect to those criteria.

5. Reliability:- It is an attribute if software quality.

6. Portability:- In these case, software can be transferred from one computer system to
another computer system.
7.Adaptability:- In these case, software allows differing system constraints and user
needs to be satisfied by making changes to the software.

Importance of Software Engineering


1. Reduces Complexity:- Big software are always complex and difficult to develop.
Software Engineering has a grate solution to decrease the complexity of any project.
Software Engineering divided big problem to several small problem, and then start
solving each small problem one by one.

2. To Minimize Software Cost:- Software require a lot of hardware and software


engineering are highly paid professionals. A lot of man force is require to develop
software with millions of codes. But in Software Engineering programmers plane
everything and reduce all those things that are not required. In turn, cost for software
productions become less as ............. to any software that does not use software
engineering approach. So it you are making your software according to software
engineering approach then it will be reduce lot of time.

3. Handing Big Project:- Big project are not made in few days and they require lot of
planning and management. Software engineering handle big projects without any
problem, company has to go for software engineering approach.

4. To Reduce Time:- Anything that is not made according to the plan always........ time
and if you are making big software then you may need to run many code to get the
ultimate running code. If it is not well managed then it can be take a lot of time. So if
you making your software according to software engineering approach then it will be
reduced lot of time.

5. Reliable Software:- Software should be relable means if you have delivered the
software then it should be work for at least its give time. If any buges come in the
software then company is responsible for soving all these bugs. Because in software
engineering, testing and maintanence is provide so there is no worry of its reliability.

Features of Software Engineering


Software is difined a collection of computer program procedures, rule and data.
Software are classified into six major componets:

1.Functionality:- If refers to the degree of performance of the software againts its


intended purpose.
2.Reliability:- A set of attribute that bear on capability of software to maintain its level
of performance under the given condition for a started period of time.

3.Efficiency:- It refer to the ability of the software to use system resources in the most
effective and efficient manner. The software should make effective use of storage space
and executive command as per desired timing requirement.

4.Maintainability:- It refers to the .... the modification can be made in a software


system to extend its functionalty improve its performance.

5.Portability:- A set of attribute that bear on the ability of software to be transferred


from one environment to another environment without or minimum changes.

Software Development Life Cycle(SDLC):-


Software development life cycle(SDLC) is a framwork defining tasks performed at each
step in the software development process. SDLC is a structure followed by development
team within the software organization. It consists of a describing how to develop,
maintain and replace spacific software.

-:SDLC Phases:-
The SDLC process divided into the following stage:-
Requirement collection and analysis
Feasibility study
Design
Coding
Testing
Installation/Deployment
Maintenance

Phase:-1 Requirement collection and analysis


The requirement is the first stage in the SDLC process. It is conducted by the senior
team member with input from all the stakeholders and domain experts in the industry.
Planning for the quality requirement and recongnization of the risk involved is also done
this stage.

Phase:-2 Feasibility Study


Once the requirement analysis phase is completed the next step is define and document
software need. This process conducted with the help of ‘software requirement
spacification’ document also know as ‘SRS’ document. It includes everythings which
should be designed and development during the project the cycle.
There are mainly five types of feasibility checks:-
1. Economic
2. Legan
3. Operation Feasibility
4. Technical
5. Schedule

Phase:-3 Design
In this phase, the system and software design document are prepare as per the
requirement specification document. This help define overall system architecture.
There are two kinds of design document development in thie phase: High-
Level Design(HLD):-
1. Brief description and name of each module.
2. An outline about the functionality of every module.
3. Database tables identified along with their key elements.
4. Complete architecture diagrams along with technology.

2. Low-Level Design(LLD):-
1. Functional logic of the module.
2. Database table which include type and size.
3. Complete detail of the interface.
4. Listing if error message.
5. Complete input and outputs for every module.

Phase:-4 Codings
Once the system design phase is over, the next phase is coding. In this phase,
development start build the entire system by writing code using the chosen
programming language. In the coding phase, tasks are divided into units or modules and
asigned to the various developments. It is the longest phase of the Software
Development Life Cycle process.

Phase:-5 Testing
Once the software is complete, and it is deployed in the testing environment the testing
team starts testing the functionality of the entire system. This is done to verify that the
entire application. This proces continues until the software is bug-free, stable, and
working according to he business needs of the system.
Phase:-6 Installation
Once the software testing phase is over and no bugs or errors left in the system then the
final deployment process starts. Based on the feedback given by the project manager, the
final software is released and checked for depolyment issues if any.

Phase:-7 Maintenance
Once the system is deployed, and customers start using the developed system following
three activities
Bug fixing:- buys are reported because of some.......... which are not tested at all.
Upgrade:- upgrading the application to the never versions of the software.
Enhancement:- Adding some new features into the existing software.

Software Requirement Spacification(SRS):-


A requirement spacification for a Sofware System is complete description of the
behaviour of System to be developed. It include set of use case that discribes all
Interactors the user will have with Software.

Fuction requirement:-
→ Discrive fuctionality of system Service
→ Depends on types of software expected user.

Non fuctional requiremet:-


→These define system properties and constrants.
Eg: Reliability, responce Time & Storage Requirement.

SRS Document:-

Software Process:-
A Software Process (also known as software methodology) is a set of related activities
that leads to the production of the software. These activities may involve the
development of the software from the scratch, or modifying an existing system.
A software process must include the following four activities:-
1) Software Spacification:- It is define main functionality of the Software.
2) Software Design and Implimentation:- The Software is to be designed and
programmed.
3) Software Verification and Validation:- The Software must confirm its spacification
and meets the customer need.
4) Software Evalution or Software Maintenance:- The Software is being modified to
meet customer and market requirment changes.

Water Fall Model OR Linear Sequential Model


● The waterfall model is sequential approach, where each fundamental activity of a
process represented as a separate process arranged it linear order.

● In the waterfall model, we must plan and schedule all of the activities before
starting working on them (plan-driven process).

● Plan driven process is a process where all the activities are planned first, and the
progress is measured against the plan.

The process of waterfall model are:-


Advantage:-
1) It is simply easy to understand and use.
2) It is simply easy to manage.
3) Phases are process and completed one at a time.
4) Requirement are very well understand.
5) Clearly defined stages.

Disadvantage:-
1) No work software is produced until late during the life cycle.
2) High amount of risk.
3) No good for object oriented.
4) Poor model for large and orgoing project.

Incremental Model:-
● It is use when requirments are well undarstood.
● Multiple independent deliveries are identified.
● Work flow in a linear fashion.
● Interative in nature, focuses on an operational product with each.
● Incremental model is process of software development where requirments are
broken down into multiple standalone moduls of software development cycle.
● Incremental model is done in steps from analysis, design implementation,
testing/verification, maintenance.

Advantage:-
1) The software will be generated quickly during the software life cycle.
2) It is flexible and less expensive to change requirements and scope.
3) This model is less costly compared to other and the development stage change can
be done.
4) A costomer can respond to each steps of building.
5) Errors are easy to be identified.

Disadvantage:-
1) It require a good planning designing.
2) All requirement not collected up front for the entire software.
3) Each phase is rigid and does not overlap each other.

Prototyping Spiral Model:-


● It is combination of waterfall model and itrative model.
● Each phase in spiral model begins with design gole and ends with client
reviewing.
● Software is developed in a series of incremental releses.
When to use spiral model?
*When a project is large.
*When risk & cost evaluation is important.
*When releases are required to be frequent.
*When requirements are unclear and complex.
*When changes may require at any time.
*For medium to high risk projects.

Advantage:-
1) Additional fuctionality and change can be done at letter stage.
2) Cost estimation becomes easy.
3) Development is fast & featurs are added in systematic way.
4) There is always space for costomer feedback.

Disadvantage:-
1) Risk is not meeting the schedule and budget.
2) Documentation is made as it has intermediate phases.
3) It is not advisable for smaller projects it might cost is lots.
Role of Management in Software Development:-

● Proper management is an integral part of software development. A large software


development project involves many people working for long period of time. We
have seen that a development process the problem of developing software into a
set of phases.
● To meet the Cost, Quality and Schedule Objective Resource have to be properly
allocated to each activity for the project, and progress of defferent activities has to
be monitored and corrective action taken if needed.

The activity of management process are divided into three phase:-


1) Planning
2) Monitoring and control
3) Termination analysis

1) Planning:- Project manager begins with planning which is perhaps the single largest
responsibility of the project manager.

2) Monitoring and control:- The projet monitoring & control phase of the management
process is the longest in terms of duration. It include alt activity of project management
has to perform while the development is going on to ensure that project
developed to the plan.

3) Termination analysis:- Termination analysis is performed when the development


process is over, the basic reason for performing termination analysis is to provide
informations about the development process.

Requirment Engineering Process (Problem Analysis)


● It helps software engineer to better understand the problem.

Participants involved in software engineering process:

1) Software Engineer:- A Person who is develop the Software and Solve the
problem in software engineering.
2) Managers:- A Person who is guid every things.
3) Costomers:- A person who view the problem.
4) Users:- A person who view the solution.

Understanding Requirements:- requirement understand by Some steps:-


1) Collecting needs from costomer.
2) Managing the process.
Tast Involved in Engineering Process:

1) Inception:- Inception is done in beginning here we identifying. The stackholder, and


multiple viewpoint initiate communication.
2) Elcitation:- Here we extraction the problem we identifying understand.
3) Elabration(Explanation):- Here we explain the inception and eliciation.
4) Negotiation(coopration):- Here the cooperation with costomer and Software
engineer.
5) Spacification final work product.
6) Validation error detected in SRS has to be conected.
7) Requirements management.

Cocomo-Model-Constractive cost model.


The Cocomo model is algorithmic software cost estimation model developed by Barry
W. Boehm. it was first published in 1981.

⇒ It is use for calculate the effort, development time average staff size and productive.

Stages of software development


1- Basic Cocomo model
2- Intermediate cocomo model
3- Complefe / delailed cocomo model

Each stage can be used three types of software development mode/poject.


1- Organic mode
2- Semidetached mode
3- Embedded mode

Project size Nature of Project Innovation Deadine of Project

Organic mode 2-50 kloc Small size Little Not tight

Semidetached 50-300 kloc Mediume size project Medium Medium


mediume size team

Embedded over 300. Large project real Significant Tight


time system
Unit:03
Software Design

Software Design Principal:-


Software design principales are a set of guidlines that helps developers to make a good
system design.

The most important principal is SOLID Principal. The key Software Design Principal
are as:-

1. SOLID:- It combination of five basic designing:-


(1) Single Responsibility Principal(SRP):- This Principal states that there should never
more then one reason for 9 class to change. This means that you should design Your
class in such a way that each class should have Single Purpose.

Ex. An Account class is responsible for managing Saving and Current Accout but
current and Saving Account Classes wouldbe responsible for manager.

(2) Open/Closed Principal (OCP):- This Principal states that software entities (Class,
modules, fuctions) shoud be open for extension but closed for modification

(3) Liscov Substitution Principal (LSP):- This Principal states that fuction That use
pointers or references to base classes must be able to use objects of derived classes
without Knowledge it.

(4) Interface Segregation Principal (ISP):- This pricipal states that clients should not be
forced to depend upon Interfaces that they donot use. This means the numbers of
members In the Interface that is visible to the dependent class should be minimized.

(5) Dependency Inversion Principal (DIP):-


1. High level modules should not depend upon low level modules. both should be
depend upon abstractions.
2. Abstraction should not depend on details, details should depends upon Abstraction.

2. DRY (Don't Repeat yourself):- This Principal states each small pieces of knowledge
(code) may only occur exactly once in the entire system. This helps us to write scalable,
maintainable and reusable Code
Ex:- Asp.net mvc framework, work on this principal.

3. KISS (Keep it Simple, Stupid:- This Principal states that try to keep each small piece
of software simpal and unnecessary complexity should be avoided. This helps us to
write easy maintainable Code.
4. YAGNI (You ain't gonna need it):- This principal states that always implement things
when you actually need theem never implements things before you need them.

Problem Partitioning
Dependence between modules in a software System is one reasons for high maintenance
costs. Clearly proper partitioning will make the system easier design easier to
understand.

When solving a small problem, the entire problem can be tackled at once.

The complexity of large problems and the limitations of human minds do not allow large
problem to be treated

Basic aim of problem analysis is to obtains a clear understanding of the need of the
clients and the user.

The goal is to divide the problem into manageable small pieces that can solve
speparately, because the cost of solving the entire problem is more than the sum of the
cost of solving all the pieces.

Abstraction
Abstraction is the act of representing essential features without including the
background details or explanations. In the computer science and software engineering
domain the absraction principle is used to reduce complexity and allow efficient design
and implementation of Complex software system.

Top-down and bottom-up Design

IMAGE

Top-down approach starts with the big picture it bracks down from there into smaller
segments.

A bottom-up approch is the piecing togeter of systems to give rise to more complex
system, thus making the orginal systems, Sub-systems of the emergent system.
Top-Down approach
Each system is divided into several subsystems and Components. Each of the Subsystem
is further divided into set of subsystem and Components.

This Process of devision facilitated. in forming a system hierarchy Structure.

The complete software system is considered as a single entity and in relation to the
characteristics, the system is spit into sub system and Components.

The Same System is done with each of the sub system. This Process is continued until
the lowest Level of the system is reached.

Advantage:- The main advantage of Top-down approch is That its strong focus on
requirements helps to make a Design responsive according to its requirments.

Disadvantage:- A Project and system boundries tends to be application Spacification


oriented. Thus it is more likely that advantage of component reuse will be missed.

The system is likely to miss, the benefits of a well-Structured, Simple architecture.

Bottom-up approach:-
The Design Start with the lowest level component and Subsystem.
By using these system components, the next imidieate higher level components and
subsystem are created.
The process of contintinued till all the components and subsystem are composed into
Single Component
The amount of abstraction grow high as the design move to more high levels.

Disadvange:-
It is not so closely related to the structure of the Problem.
High Quality bottom-up solution are very hard to construct.
It lead's to proliferation of 'Potentially usefull' fuction rather than most approprite ones.

Advantage:-
The economics can results when general solution can be reused.
It can be used to hide the low-level details of Implementation and be merged with top-
down technique.

Structured approach (Architefural design)


Software Archictural design represent the structure of Data and Program components.
that are required to build a computer based System.
⇒ Architectural design, representing the system in Context:
→ System Engineer must model the context
→ Context diagram-model in which the system interacts with external entities.

⇒ System that Interoperate with the target System are represent as:-
Super Ordinate System:- using the target system as part of higher level processing
scheme

Sub ordinate system:- use by the target system to provide data and proceessing needed
to complete the target System.

Peer level System:- Peer levet System Producing and Consuming information needed by
beers and Target System.

Actors:- Those entites that intract with the Target System by producing and consuming
information that is necessary for request.

⇒Interface must be defined (relationship)


⇒ All the data that flow into and out of the target System must be identified.

Super ordinate system

IMAGE

Object Oriented Approach(00A) (Analysis)


OOA Determined the system requirements recognized the classes and relationship
between the class.

The main purpose of OOA is the recognization application domain and specific
requirements of the system.

There are three techniques of OOA


1. Object Modeling
2. Dynamic modeling.
3. Fuctional modeling

Object Modeling:- object modeling develops the static Structure of the system regarding
to object.
→It recognize the objects; relation between object and class
Process of object modeling:-
1. Recognization object and grouped into class.
2. Relationship between the classes
3. User object model diagram is generated.
4. Define attributes of user object.
5. Define operations need to perform on classes.

2. Dynamic modeling:- Examine the behaviour of the Object regarding time and
external change

Process of Dynamic modeling:-


1. State of every object is recognization
2. Recognize the object
3. Generate dynamic model diagram enclose with the state translations
4. Communicate with the every state regarding object attributs.
5. Verify state transition.

Functional modeling
It is last components of object oriented design. It shows the process executed in an
object how to data change when in move between the method.
Ex:- 1. All input and output and application are recognized
2. Create data flow dig to show fuctional dependency
3. Identify the motive of every function
4. Identify the constrants.
5. Descrive the optimization criteria

Object Oriented Design(OOD)


Object oriented designing the Objects, classes and the relationship between the classes
Classes:- classes is the blueprint and template, idetify Something data and operation
Objects object is instance of class.

Object oriented design (OOD) works around the entities and thesis characteristics
instead of fuctions involved in the software system.

Let us see the important concepts of Object Oriented Design

Objects:- All entities involved in the solution design are know as object for example:-
Person, Banks, Company and costomers are treated as objects.

Classes:- A classes is a generalized description of an objects. An objects is an instance of


a class. class defines all the attributes, which an object can have and methods, which
define the fuctionality of the obrect.

Encapsulation:- In OOD the attributes (Data and Variables) and methods (operation on
the data) are bundled together is called encapsulation. Encapsulation not only bundled
important information of an object together, but also restricts access of the data and
method.

Inheritance:- OOD allows similar classes to stack up in hierarchical manner where the
lower or sub classes are import, impliment and reuse allowed Variables and methods
from their immediate suber classes.

Polymorphism:- OOD Language Provide a mechanism where methods performing


similar task but vary in arguments, Can be assigned same name. This is called
Polymorphism.
Cohesion and Coupling:-
Cohesion and Coupling are recessory in making any software reliable and extendable.

Cohesion:- Cohesion is measur of function strength of module


In general, it measure the relationship strength beetween the pieces of fuctionality
within a given module in software programing.

Cohesion are two type:-


1. High Cohesion:- In a good module, Various part having high cohesion is preferable
due to its:- reliability, reusability, robustness and understandbility.

2. Low Cohesion:- Low Cohesion associate with undesirable Traits including difficult
is:- maintaning, reusing and understanding.

Advantage of high Cohesion:-


1. High cohesion leads to increased module reusability.
2. System maintainbilly in increse
3. Module compexity

Types of Cohesion Classification

1. Fuctional Chesion:- fuction cohesion is Best Type of cohision. In which the Part of
module are grouped. besause they all contribute to the module single well defined task.
Two Element perform one fuction.

2. Sequential Cohesion:- when the Parts of module grouped due to output from one part
is the input to other.
Ex:-

27

3. Communication Cohesion:- The Port of the module are grouped between they operate
on. Same data when two Element can share one data. work on same data

4. Procedural Cohesion:- The Part of the module are grouped between a certain
sequence of execution is followed by them.
Ex-Algorithms for decoding massage.

5. Logical Cohesion:- It one of wrest type Tegunice. all the Element of module perform
similar operations.
Ex:- A set of print fuction to generate an output report arranged into single module

Coupling:-
A Coupling Indicates How closely two modules intract and how Interdependent they are
The degree of modules between two module depends on ther their interface complexity.
If the system has low coupling, its is deign of Well structured Computer System and
great design
The Coupling is an indication of strength of interconnection between all the components
system.

Highly Coupled:- system have interconnection in which program, unit depend upon
each other.
→Highly coupled fully depend upon each other.
Loosely Coupled:- The loosely coupled are made up of Components which are
Indeprent and all most independent.
→Loosely coupled are Less dependancy. But it can depend to one module to another
module Elements.

Types of Coupling

Data:- Data coupling are communicate with each Other is called data coupling. They are
just passing information.

Stamp:- When two module Can Share Same data structure is called stamp coupling.

Control:- When two module are communicate with the help of control like flags.
Common:- When two module can share global data its Called common coupling.

Content:- When two module can interchang data is called Content Coupling.

Functional Independence that a module Perform a single task and need very little
intration with Other module.
A module that is highly cohesiove and also have Low Coupling with other moduls is
said to be functionaly independent of other modules.

Error Isolation:-
Whenever an error exists in a module fuctional Independences redus chances of error
propagating to other module
Further once a failure is detected, error Isolation makes it Very easy to locate error.

Module Reusability:-
A functionaly independent module performs some well defined speacific Fask.
So it becomes easy to reuse such modules is defferent Program requiring same
fuctionality

Understandability:
When moduler and functionlly indepedent Complete of design is greatly reduced

Understandability is major advantage of modular design


Unit:04
Testing
It is a process used to Identify the correctness, completors and quality of developed
computer software.
It also touted help to identify errors, gaps and missing requirment.
It can be done Either manualy or using some software tool.

Software testing is the process of evaluation a software item to detect differences


between given input and expected output. Testing assesses the quality of the product.
Software testing is the process that should be done during the development process

A Strategic Approch to Testing

General characterstics of strategic to testing:-


To Perform effective testing a software team should Conduct technical reviews.

Testing begins at the Component level and work toward the integration of Entire
Computer base System.
Defferent testing techniques are appropriate at differed Point in Time.

Testing is done by developer of software, for long Prorect by on independent test group.

Testing and debugging are different activities but debugging must be accommodated in
any test start

In other words software testing is verification ond Validation process.

Verification:- “Does the product meet its spacifications”?


The set of activies that Ensure that software Correctly impliments a specification fuction
and algorithm in other words, to make sure the product behaves the way we want it to.
Ex:- Passport Verification

Validation:- "Does a the Product Perform as desired"?


The set of activites that ensure that the software has been built traceable to costomer
requirements in other words. to make sure the product is built as Per costomer
requirements.
Testing is two types:-

1. Black Box Testing:-


It is method of software testing that Examines the functionaulity an application without loking
into its Internal structures and workings.

This method is applied at Every level of software testing unit, integration, system and
acceptance.

Test are based on requirements and fuctionality.


It is Caried out to test fuctionality of the Program also called as 'Behavioral testing'.

The tester in this case:-


It has a set of Input values and desired results

It providing Input, If output matches with the desired results, the program is tested 'OK'

In this testing method the design & structure of code are not known to tester and testing
engineers and End user conduct this test on software.

Diffrent Black Box Testing:-


1. Graph Base Testing
2. Equivalance Partioning
3. Boundry valu Analysis
4. Orthogonal Arry testing.

1. Graph Base testing:-

Directed Graph link


Bi-Direction link
Parallel link
2. Equivalence Partioning:-
It divides the Input P.domain into Various classes of data
Guidelines for generating equivalence classes

If Input condition spatify a range

If input condition requires spacific valu

If Input Condition spacifics a mensber of Set


Ex:- valu=4 sol{1, 2, 3, 4, 5}

Value of Set → Valid.


Not a value of set → Invalid

If Input condition is Boolean:-

True → Valid
False → Invalid

Boundry Value Analysis(BVA):-


Large Number of errors occur at boundries.
The BVA actually selects the test cases at the “edges” of clas guidlings for BVA

1. Range: between a and b the test case should be designed beyond a and b
Ex:- range(3-5)
1 2| 3 4 5 |6

2. If input selects min<max than Values Just above <just b. blow also tested.
Ex:-{20, 18, 21, 24}

Min=18 → Just above (17).


Max=24 → Just above (25).

3. The above to guidline are applied to output conditions:-

4. If Internal Program or its Data Structured Pre dscribed Some Boundory values like an
array of 100 nos then it Should use test cases that are upto 100 entries only.

4. Orthogonal array testing:- The problems in which the input domain is small but it is long
enough to accomodate the testing.
Consider 3 input valu X, Y and Z all these of value have three discrete valu associated with it.

White Box Testing:-


Testing is based on an analysis of the internal structure of Components and System.
White box testing also known as clean box testing. Glass box testing, transparent box testing
and structured box testing.
It can applied at all levels of Software elevelopment Life cycle.
Most of the defects are found in unit, Component Integration levels is through white box.
Test are based on Coverage of code statement, branches Path, conditions

Two different white-box testing methods.

Base Path Testing:-


Flow graph Notation
Independent Program Path
Deriving test case
Graph matrices

Control Structure Testing:-


Condition testing
Data Flow testing
Loop testing

Base Path Testing

1. Flow Graph Notation:-

2. Diriving test Case:-


Prepare test case that will fore execution of each path in the Basic set.

3. Graph matrices:-

Control Structure Testing:-

1. Condition Testing:-
1. Relational Expression→E, <relational operator> E2
2. Simpal Condition→unary operators (~) NOT
3. Compound condition (E1&E2) | (E2&E3)
4. Boolen Expression→ True/False

2. Data Flow Testing:-


Data flow testing cheek data can be correctaly flow or not, it can cheek variable. and use of
variables.

3. Loop Testing:-

Unit Testing:-
Unit testing focuses on the smallest Element of the Software design module.
It make heavy use of white box testing
Unit box testing use white Box testing methology.
Unit testing is smallest part of Application called as units. Here testing will be done on the
Induvisual modode Independently.

Ex:-Calculator=add, sub, multi, divid


WHY To Test EACH UNIT INDENDANTLY?
1- Fault Isolation and debugging became easier during unit testing
2- We can take an ezhaustive approach in case of unit testing by devid and concor rule

WHAT TO TEST DURING UNIT TESTING?


Module Interfaces:- Interfaces to check the correct flow of Information in outside the module

Local Data structure:- Local data Structure examin to ensure that the intermediate results or
data is maintind or store properly..

Independent/Basic Path:- Independents Path are tested to Ensure that all the statement within
the module are exicuted at list once during test.

Internal Logic:- Internal Logic we have cheek Loops, Precedence Comparision of data type

Boundry conditions:- Boundry conditions are testes output or Computation at boundry valu is
correct.

Error Handling:-

Integration Testing:-
The Purpose of integration testing is to expose falts in the interaction between integrated unit.

The integration testing is the process of testing the interface between two software units or
module.

It can be done in 3 ways.


1- big bang approach
2. Top down approach.
3- Bottom-up approach

1- big bang approach: combining all the modules once and verifying the fuctionality after
Completion of individual module testing.
Ex
2. Top Down Approach:-
In top Down approach, testing takes place From top to Bottom

High level modules are tested first and then Low-Level. module and finally integrating the low
level modules to high level module.

Stubs are use as a temporary module, if a module is not ready for Integration testing.

(Stubs are dumy module) only Top module is tested with stubs.
stubs are replace with actual components one at a time in a depth-first or breadth
first mannar.
3. Bottom-up approach:-
Bottom-up approch testing take Place from bottom to up.

lowest level modules are tested first and then high level moduls and finally integrating the
high level modules to low level module.

Drivers are used as a temparary moduls for intigration testing.

Note:- Drivers→is Calling Program-Bottom-up-approach


Stub→is called Program-Top-Down approach

Drivers are replaced one at a time "defth first"


Worker modules are grouped in to cluster and integrated.

Sandwitch Testing (Combined approach):-


Top down strategy for upper level and bottom-up strategy for Subordinate level.
Top modules are tested with stubs.
Bottom moduls are tested with Drivers.
worker modules are tasted grouped into cluster and intigrated.
System Testing:-
The System testing is testing in Intier system.

The system as a whole is tested to uncover requirement errors.

System testing verifing that all system Element work Properly and that overall system fuction
and Performance has been achived or not

Types of System Testing:-

1. Alpha Testing:- It Carred out by the test team within the developing organization.

2. Beta Testing:- It performed by selected group of friendly customers.

3. Acceptance Testing:- It is performed by customer to dermine whether to accept and reject


the delevery of testing.

4. Performance Testing:- It is carried out to cheek whaether the System meets the non
Fuctional requirments Identified in the SRS document.
Unit:05
Software Project Management:-
Software Project Management is the art and science of planning and Leading software
projects. It is a Sub-discipline of Projects management in which software Projects are Planned,
Implemented, monitored and controlled.

Project Management software project.

Effective software project management focuses on the four P's:-

The People:- It Deals with the cultivation of motivated, highly skilled People.
Software Engineering Institute has developed a people Management Capability Maturity
Model (PM-CMM) to enhance the readiness of software organizations to undertake Increasing
complex application by helping to

People Consists of:-


1. Stak Holder:- stak holder Consists of five Cotegories

(1) Senior Manager:- Seniess manager Define business Issues that often have Significant
Influence on the project.

(2) Project (Tech.) Manager:- They plan, Motivate, organize and control the Practitioners who
do the work.

(3) Practitioners:- Deliver the technical skills that are necessary to engineer a product or
application.

(4) Customers:- Specify the requirements for the software to be engineered and other
stakholders who have a Peripheral interest in the outcome.

(5) End User:- Intract with the software once it is released for Production use.

2. Team Leaders:- Team leaders Qualities are define in three types:-


(1) Motivation:- The ability to encoverage technical People to produce to their best ability.

(2) organization:- Ability to mad existing Processes.

(3) Ideas or Innovation:- Ability to encaurage to go byeond theirs Skills

3. The Software Team:- Seven Project factors to be considered when structuring a software
developments

Team:-
Dificulty
Size
Time
Degree
Quality
Delivery
Communication.

→four oraganizational Paradigm for software development Team.

(a) Closed Paradigm:- Traditional hierarchy of authority works well when producing software
similar to Past efforts, members are less likely to be innovative-

(b) Random Paradigm:- Depends on individual initiatue of team members, work well for
Projects requiring innovation or technological break.

(c) Open Paradigm:- Hybrid of the closed and random peradigm works well for solving
complex problems, requiring Collaboration, communication

(d) Synchronous Paradigm:- Organizes team members based on the natural pieces of the
problem members have little communication outside of their Subgroups-

The PRODUCT:- The Scope of the Software Development must be establised and bounded:-

Context:- How does the software to be built fit into a larger System, Procluct, or business
context and what constraints are imposed as a result of the Context?

Information:- what customer visible data objects are produced as output from the software?
what data objects are required for Input?

fuction and Performance:- what fuction does the software performance the transform input
data into output? Are there only special

The Process:- The project managers must decide which Process model is must appropriate
based on-
→The Customer who have requested the product and the people who will do the work.
→The characteristics of the product itself.
→The Project environment in which the software team works.

The Project:- Planning and controlling a software project is done for one Primary Reason, it is
only know way to manage complexity.

It will be work W5 HH Principle


A Series of Questions that led to difinition of Key Project characteristic and the resultant
Project plan

Why is the system being Developed?


→ Assesses the validity of business reasons and Justifications.

what will be done?


→Establishes the Task set requeired for the Project.

When will it be done?


→Establishes a project Schedule

where are they organizationally located?


→Notes the organizational location of team member, costomer and other stakhalder

who is responsible for fuctional?


→Define the Role and responsibility of each Team member

How will the Job be done technically and managerally?


→Establishes the management and technical strategy for the Project

How much of each resource is needed?


→Establishes estimates based on the answer to the Previous Question.

Cost Estimation:-
Number of estimalion technique have been developed having Some attributes in common:-

Project scope must be established in advanced


Softioare matrics are used as basic from which estimates are made.
Project is divided into small pieces which are estimated Individually.

Cast Estimation has divided into two model

Static Single variable model:-


In static Single variable model, a unique (single) Variable size taken as unique Element for
Calculating all other factor (Cast, time).
Formula

[C=aLb]
C= Cast
L= Line of Code (Size of code)
a, b are constants

[E=1.4L 0.93]
E = Effort in Person/month
L= Line of Code (size of con

[DOC=30.4L]
Doc = documentation in no of Pages
L= Line of code

[D=4.6L o.26]
D= Duration

Static Multivariable Modle:-


The static multivariable model often based on
Equation=[C= aLb]

They actully depend on several veriable representing various aspects of software development
Environment.
for Example:-
1-user participation
2- Customer oriented change
3- memory constrants.

E =5.2 L0.91

D=4.1 L0.36
Poject Scheduling:-
An activity in which we decided how you will divide the Project Into the Smaller tasks.
you we also how these tasks will be executed.
How much time a task will take to complete.

Step1:- set milestone:-


Here we set the milestones.
May be your 1st milestone will be consist on first two tasks if your Projects is divided into so
many tasks.

what is milestone?
It Can be any like your software is consist of three functions the first fuction is consist on 1 st
two tasks so you will achieve it after Completing first two task

Step2:- Estimate resources.


If your project is divided into 6 task lets suppose So you should have knowledge what kind of
and how much recourses are required to Complete spacific task.

for Example: To complete task 1, I need SGB of storage as it will be consist on high graphics
and movi clips so I should check if I have enough space for task 1 or not.

Key Point:-
Some tasks will goes on in parallel
Some time things go wrong don't make Schedule to much tight
People working on the Project may fall ill.
Make estimate as nothings will go wrong and then add more few days to the final estimation
as it goes something wrong so we have at least Some extra days.

Schedule Representation

Task Duration (day) Dependencies.

T 14
T2 7 T
T3 20 (M1)
T4 6 T3
T5 27 maxday (M2)
T6 7
T7 10 (M3)
Software Maintenance

Software maintenance includes:-


Error correction
Enhancement of Capabilities.
Deletion of absolute capabilies
Optimization.

Any work done to change the software after it is in operation is concidered to be mantenance
work.

Categories of mantenance:-
1- Corrective Maintenance
2- Adaptive maintenance
3- Perfective Maintenance
4. Preventive maintenance

1- Corrective Maintenance:-
Initiated as result of defect in software.
Change the any kind of coding, design, logical errors.

→ appropriate actions are taken to restore the correct fuctionalty of the software system.

2. Adaptive maintenance:
Modifying the Software to match changes in ever changing Environment.

→ Environment any type of outside factor:-Platform changes, Gov. Policies, bussiness rules.

3- Perfective Maintenance:- Improving the processing efficiency OR Performance or


restructuring the software to improve Changeability.

4- Preventive mantenance:- Making the program easter understand and this helps us in future
mantenance work
Maintenance Log
it store→ what will be change
→what?
→when?
→why?

→step for creating maintenance Log:-

1) make all entries in maintenance log.

2) Perform routine maintenance & make each entry in Log-

3) keep Electronic record of Interaction that occured.

4) check it and compare it with previouse state..

5) Restore the data to orginal stak for inconstant stak.

You might also like