0% found this document useful (0 votes)
16 views12 pages

Unit 4

The document provides an overview of Data Flow Diagrams (DFDs), detailing their purpose, standard symbols, and various levels of abstraction. It also contrasts structured analysis with object-oriented analysis, highlighting their methodologies and suitability for different project types. Additionally, the document discusses software testing principles, types of testing, debugging, and program analysis tools, emphasizing the importance of these processes in software engineering.

Uploaded by

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

Unit 4

The document provides an overview of Data Flow Diagrams (DFDs), detailing their purpose, standard symbols, and various levels of abstraction. It also contrasts structured analysis with object-oriented analysis, highlighting their methodologies and suitability for different project types. Additionally, the document discusses software testing principles, types of testing, debugging, and program analysis tools, emphasizing the importance of these processes in software engineering.

Uploaded by

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

Unit 4

Data Flow Diagrams


A Data Flow Diagram (DFD) is a traditional visual representation of the information
flows within a system. A neat and clear DFD can depict the right amount of the
system requirement graphically. It can be manual, automated, or a combination of
both.

It shows how data enters and leaves the system, what changes the information, and
where data is stored.

The DFD is also called as a data flow graph or bubble chart.

Standard symbols for DFDs are derived from the electric circuit diagram analysis and are
shown in fig:

Circle: A circle (bubble) shows a process that transforms data inputs into data
outputs

Data Flow: A curved line shows the flow of data into or out of a process or data store.

Data Store: A set of parallel lines shows a place for the collection of data items. The
data store can have an element or group of elements.

Source or Sink: Source or Sink is an external entity and acts as a source of system
inputs or sink of system outputs.

Levels in Data Flow Diagrams (DFD)


The DFD may be used to perform a system or software at any level of abstraction.
Infact, DFDs may be partitioned into levels that represent increasing information flow
and functional detail. Levels in DFD are numbered 0, 1, 2 or beyond. Here, we will see
primarily three levels in the data flow diagram, which are: 0-level DFD, 1-level DFD,
and 2-level DFD.
0-level DFDM

It is also known as fundamental system model, or context diagram represents the


entire software requirement as a single bubble with input and output data denoted by
incoming and outgoing arrows.

The Level-0 DFD, also called context diagram of the result management system is
shown in fig.

1-level DFD

In 1-level DFD, a context diagram is decomposed into multiple bubbles/processes. In


this level, we highlight the main objectives of the system and breakdown the high-
level process of 0-level DFD into subprocesses.

2-Level DFD

2-level DFD goes one process deeper into parts of 1-level DFD. It can be used to
project or record the specific/necessary detail about the system's functioning

Data Flow Diagram (DFD) is a graphical representation of flow of data in an


information system. It is capable of depicting incoming data flow, outgoing data flow,
and stored data. The DFD does not mention anything about how data flows Functionin
through the system.There is a prominent difference between DFD and Flowchart. The
flowchart depicts flow of control in program modules. DFDs depict flow of data in the
system at various levels. It does not contain any control or branch elements.

Types of DFD
Data Flow Diagrams are either Logical or Physical.

1. Logical DFD - This type of DFD concentrates on the system process, and flow of
data in the system. For example in a banking software system, how data is
moved between different entities.

2. Physical DFD - This type of DFD shows how the data flow is actually
implemented in the system. It is more specific and close to the implementation.

1. Structured Analysis : Structured analysis is a method of development that allows


and gives permission to the analyst to understand and know about the system and all
of its activities in a logical way. It is simply a graphic that is used to specify the
presentation of the application.
Example –

1. Object-OrientedAnalysis :
Object-Oriented Analysis (OOA) is a technical approach generally used for
analyzing and application designing, system designing, or even business
designing just by applying object-oriented programming even with the use of
visual modeling throughout the process of development to just simply guide the
stakeholder communication and quality of the product. it is actually a process of
discovery where a team of developers understands and models all the
requirements of the system.

Let us see the important concepts of Object Oriented Design:

1) Objects - All entities involved in the solution design are known as objects.

2) Classes - A class is a generalized description of an object.

3) Encapsulation - In OOD, the attributes (data variables) and methods


(operation on the data) are bundled together is called encapsulation.

4) Inheritance - This makes it easier to define specific class and to create


generalized classes from specific ones.

5) Polymorphism - polymorphism, which allows a single interface performing


tasks for different types.

Example –
Difference Between Structured and Object-oriented analysis :

Structured Analysis Object-Oriented Analysis

The main focus is on the process and procedures of the The main focus is on data structure and real-world objects
system. that are important.

It uses System Development Life Cycle (SDLC)


methodology for different purposes like planning, It uses Incremental or Iterative methodology to refine and
analyzing, designing, implementing, and supporting an extend our design.
information system.

It is suitable for well-defined projects with stable user It is suitable for large projects with changing user
requirements. requirements.

Risk while using this analysis technique is high and Risk while using this analysis technique is low and reusability
reusability is also low. is also high.

Requirement engineering includes the Use case model (find


Structuring requirements include DFDs (Data Flow
Use cases, Flow of events, Activity Diagram), the Object
Diagram), Structured Analysis, ER (Entity Relationship)
model (find Classes and class relations, Object interaction,
diagram, CFD (Control Flow Diagram), Data Dictionary,
Object to ER mapping), Statechart Diagram, and deployment
Decision table/tree, and the State transition diagram.
diagram.

This technique is old and is not preferred usually. This technique is new and is mostly preferred.

Software Testing
Testing is the process of executing a program to find errors. To make our software
perform well it should be error-free. If testing is done successfully it will remove all the
errors from the software. In this article, we will discuss first the principles of testing and
then we will discuss, the different types of testing.

Principles of Testing

 All the tests should meet the customer’s requirements.

 To make our software testing should be performed by a third party.


 Exhaustive testing is not possible. As we need the optimal amount of testing
based on the risk assessment of the application.

 All the tests to be conducted should be planned before implementing it

 It follows the Pareto rule(80/20 rule) which states that 80% of errors come from
20% of program components.

 Start testing with small parts and extend it to large parts.

Software testing is a process of identifying the correctness of software by


considering its all attributes (Reliability, Scalability, Portability, Re-usability, Usability)
and evaluating the execution of software components to find the software bugs or
errors or defects.

Types of Testing
With the help of below image, we can easily understand the type of software testing:

The different types of Software Testing


Unit Testing :-In SDLC or V Model, Unit testing is the first level
of testing done before integration testing.
Unit Testing is a software testing technique using which individual units of
software i.e. group of computer program modules, usage procedures, and
operating procedures are tested to determine whether they are suitable for use
or not. It is a testing method using which every independent module is tested to
determine if there is an issue by the developer himself. It is correlated with the
functional correctness of the independent modules.
Objective of Unit Testing:
The objective of Unit Testing is:

 To isolate a section of code.

 To verify the correctness of the code.

 To test every function and procedure.

 To fix bugs early in the development cycle and to save costs.

 To help the developers understand the code base and enable them
to make changes quickly.
 To help with code reuse.

Advantages of Unit Testing:

 Unit Testing allows developers to learn what functionality is provided


by a unit and how to use it to gain a basic understanding of the unit
API.

 Unit testing allows the programmer to refine code and make sure the
module works properly.

 Unit testing enables testing parts of the project without waiting for
others to be completed.

Disadvantages of Unit Testing:

 The process is time-consuming for writing the unit test cases.

 Unit Testing is not efficient for checking the errors in the UI(User
Interface) part of the module.
 It requires more time for maintenance when the source code is
changed frequently.

 It cannot cover the non-functional testing parameters such as


scalability, the performance of the system, etc.

Black box testing – Black-box testing is a type of software testing


in which the tester is not concerned with the internal knowledge or
implementation details of the software but rather focuses on validating the
functionality based on the provided specifications or requirements.

Features of black box testing:

 Independent testing: Black box testing is performed by testers who


are not involved in the development of the application, which helps
to ensure that testing is unbiased and impartial.

 Requirements-based testing: Black box testing is typically based


on the application’s requirements, which helps to ensure that the
application meets the required specifications.

 Different testing techniques: Black box testing can be performed


using various testing techniques, such as functional testing,
usability testing, acceptance testing, and regression testing.

 Easy to automate: Black box testing is easy to automate using


various automation tools, which helps to reduce the overall testing
time and effort.

 Scalability: Black box testing can be scaled up or down depending


on the size and complexity of the application being tested.

Advantages of Black Box Testing:

 The tester does not need to have more functional knowledge or


programming skills to implement the Black Box Testing.

 It is efficient for implementing the tests in the larger system.

 Tests are executed from the user’s or client’s point of view.

 Test cases are easily reproducible.


 It is used in finding the ambiguity and contradictions in the functional
specifications.

Disadvantages of Black Box Testing:

 There is a possibility of repeating the same tests while implementing


the testing process.

 Without clear functional specifications, test cases are difficult to


implement.

 Sometimes, the reason for the test failure cannot be detected.

 Some programs in the application are not tested.

 It does not reveal the errors in the control structure.

White box Testing :- White box testing is a software testing technique that involves
testing the internal structure and workings of a software application. The tester has
access to the source code and uses this knowledge to design test cases that can verify
the correctness of the software at the code level.It is also called glass box testing or
clear box testing or structural testing. White Box Testing is also known as transparent
testing or open box testing.
White box testing is also known as structural testing or code-based testing, and it is
used to test the software’s internal logic, flow, and structure. The tester creates test
cases to examine the code paths and logic flows to ensure they meet the specified
requirements.
Features of white box testing:

 Knowledge of programming languages: Testers performing white box testing


must have knowledge of programming languages like Java, C++, Python, and
PHP to understand the code structure and write tests.

 Identifying logical errors: White box testing helps to identify logical errors in the
code, such as infinite loops or incorrect conditional statements.

 Integration testing: White box testing is useful for integration testing, as it allows
testers to verify that the different components of an application are working
together as expected.

 Unit testing: White box testing is also used for unit testing, which involves
testing individual units of code to ensure that they are working correctly.
 Optimization of code: White box testing can help to optimize the code by
identifying any performance issues, redundant code, or other areas that can be
improved.
 Security testing: White box testing can also be used for security testing, as it
allows testers to identify any vulnerabilities in the application’s code.

Advantages:

 White box testing is thorough as the entire code and structures are tested.

 It results in the optimization of code removing errors and helps in removing extra
lines of code.

 It can start at an earlier stage as it doesn’t require any interface as in the case of
black box testing.

 Easy to automate.

 White box testing can be easily started in Software Development Life Cycle.

 Easy Code Optimization.

Disadvantages:

 It is very expensive.

 Redesigning code and rewriting code needs test cases to be written again.

 Missing functionalities cannot be detected as the code that exists is tested.

 Very complex and at times not realistic.

 Much more chances of Errors in production

System Testing
System testing is a type of software testing that evaluates the overall functionality and
performance of a complete and fully integrated software solution. It tests if the system
meets the specified requirements and if it is suitable for delivery to the end-users. This
type of testing is performed after the integration testing and before the acceptance
testing.

Advantages of System Testing :

 Verifies the overall functionality of the system..


 Improves system reliability and quality.
 Enhances the overall performance of the system.
 Increases user confidence and reduces risks.
 Facilitates early detection and resolution of bugs and defects..
 Improves the system’s maintainability and scalability.

Disadvantages of System Testing :

 This testing is time consuming process than another testing techniques since it
checks the entire product or software.
 The cost for the testing will be high since it covers the testing of entire software.
 It needs good debugging tool otherwise the hidden errors will not be found

Debugging – Software Engineering


Debugging is the process of identifying and resolving errors, or bugs, in
a software system. It is an important aspect of software engineering
because bugs can cause a software system to malfunction, and can lead
to poor performance or incorrect results. Debugging can be a time-
consuming and complex task, but it is essential for ensuring that a
software system is functioning correctly.
There are several common methods and techniques used in debugging,
including:

1. Code Inspection: This involves manually reviewing the source


code of a software system to identify potential bugs or errors.

2. Debugging Tools: There are various tools available for debugging


such as debuggers, trace tools, and profilers that can be used to
identify and resolve bugs.

3. Unit Testing: This involves testing individual units or components


of a software system to identify bugs or errors.

4. Integration Testing: This involves testing the interactions between


different components of a software system to identify bugs or
errors.

5. System Testing: This involves testing the entire software system


to identify bugs or errors.

Difference between Testing and Debugging


Testing Debugging
Testing is the process to find bugs and Debugging is the process of correcting the
errors. bugs found during testing.
It is the process to identify the failure of It is the process to give absolution to code
Testing Debugging
implemented code. failure.
Testing is the display of errors. Debugging is a deductive process.
Debugging is done by either programmer or
Testing is done by the tester.
the developer.
There is no need of design knowledge in Debugging can’t be done without proper
the testing process. design knowledge.
Testing can be done by insiders as well Debugging is done only by insiders. An
as outsiders. outsider can’t do debugging.
Debugging is always manual. Debugging
Testing can be manual or automated.
can’t be automated.
Testing is initiated after the code is Debugging commences with the execution of
written. a test case.

Program Analysis Tools in Software Engineering


Program Analysis Tool is an automated tool whose input is the source
code or the executable code of a program and the output is the
observation of characteristics of the program. It gives various
characteristics of the program such as its size, complexity, adequacy of
commenting, adherence to programming standards and many other
characteristics.
Classification of Program Analysis Tools:Program Analysis Tools are
classified into two categories:

1.)Static Program Analysis Tools: Static Program Analysis Tool is such


a program analysis tool that evaluates and computes various
characteristics of a software product without executing it. Normally, static
program analysis tools analyze some structural representation of a
program to reach a certain analytical conclusion.
2.)Dynamic Program Analysis Tools:Dynamic Program Analysis Tool is
such type of program analysis tool that require the program to be
executed and its actual behavior to be observed. A dynamic program
analyzer basically implements the code.

You might also like