0% found this document useful (0 votes)
149 views37 pages

Software Engineering

The document discusses software engineering and its key concepts. It defines software engineering as the systematic development of software using scientific principles, methods and procedures. The document outlines the evolving role of software and its characteristics such as reliability, usability and maintainability. It also discusses different types of software applications including system software, networking software, embedded software and reservation software.

Uploaded by

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

Software Engineering

The document discusses software engineering and its key concepts. It defines software engineering as the systematic development of software using scientific principles, methods and procedures. The document outlines the evolving role of software and its characteristics such as reliability, usability and maintainability. It also discusses different types of software applications including system software, networking software, embedded software and reservation software.

Uploaded by

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

Unit - I

1. Introduction to Software Engineering 15


1.1 The Evolving Role of Software
1.2 Definition & Concept Software Engineering
1.3 Software Characteristics
1.4 Software Applications
1.5 Software Evolution
1.6 Software Crisis & Horizon
1.7 Software Myths
Unit - II
2. Software Development Life Cycle(SDLC)and Methodologies 15
2.1 Introduction
2.2 Activities of SDLC
2.3 A Generic Process Model
2.4 Prescriptive Process models
2.4.1 Waterfall Model
2.4.2 Incremental Process Models
2.4.3 Evolutionary process Models (Prototyping and Spiral Model)
2.5 Concurrent Models, Types
Unit - III
3. Analysis and Design Tools 10
3.1 Decision Tree and Decision Table
3.2 Data Flow Diagrams (DFD)
3.3 Data Dictionary
3.3.1 Elements of DD
3.3.2 Advantages of DD
3.4 Input and Output Design
3.5 PseudoCode
3.6 Case Studies on above topics
Unit - IV
4. Software Testing 10
4.1 Definition
4.2 Verification and Validation
4.3 Black box Testing
4.4 White-Box Testing
4.5 Unit Testing

Asst. Prof. Patil Girish S. Page 1


Unit - I
1. Introduction to Software Engineering

1.1 THE EVOLVING ROLE OF SOFTWARE :-

software takes on a dual role. It is a product and, at the same time, the vehicle for
delivering a product. As a product, it delivers the computing potential embodied by
computer hardware or, more broadly, a network of computers that are accessible by
local hardware. Whether it resides within a cellular phone or operates inside a
mainframe computer, software is an information transformer—producing, managing,
acquiring, modifying, displaying, or transmitting information that can be as simple as a
single bit or as complex as a multimedia presentation.

As the vehicle used to deliver the product, software acts as the basis for the control
of the computer (operating systems), the communication of information (networks),
and the creation and control of other programs (software tools and environments).
Software delivers the most important product of our time—information.

Software transforms personal data (e.g., an individual’s financial transactions) so that


the data can be more useful in a local context; it manages business information to
enhance competitiveness; it provides a gateway to worldwide information networks
(e.g., Internet) and provides the means for acquiring information in all of its forms.

The role of computer software has undergone significant change over a time span of
little more than 50 years. Dramatic improvements in hardware performance, profound
changes in computing architectures, vast increases in memory and storage capacity,
and a wide variety of exotic input and output options have all precipitated more
sophisticated and complex computer-based systems. The lone programmer of an
earlier era has been replaced by a team of software specialists, each focusing on one
part of the technology required to deliver a complex application.

1.2 Definition & Concept Software Engineering

Software is more than just a program code. A program is an executable code, which
serves some computational purpose. Software is considered to be a collection of

Asst. Prof. Patil Girish S. Page 2


executable programming code, associated libraries and documentations. Software,
when made for a specific requirement is called software product.

Engineering on the other hand, is all about developing products, using well-defined,
scientific principles and methods.

So, we can define software engineering as an engineering branch associated with the
development of software product using well-defined scientific principles, methods and
procedures. The outcome of software engineering is an efficient and reliable software
product.

IEEE defines software engineering as:

The application of a systematic, disciplined, quantifiable approach to the development,


operation and maintenance of software.

We can alternatively view it as a systematic collection of past experience. The


experience is arranged in the form of methodologies and guidelines. A small program
can be written without using software engineering principles. But if one wants to
develop a large software product, then software engineering principles are absolutely
necessary to achieve a good quality software cost effectively.

Without using software engineering principles it would be difficult to develop large


programs. In industry it is usually needed to develop large programs to accommodate
multiple functions. A problem with developing such large commercial programs is that
the complexity and difficulty levels of the programs increase exponentially with their
sizes. Software engineering helps to reduce this programming complexity. Software
engineering principles use two important techniques to reduce problem complexity:
abstraction and decomposition. The principle of abstraction implies that a problem
can be simplified by omitting irrelevant details. In other words, the main purpose of
abstraction is to consider only those aspects of the problem that are relevant for
certain purpose and suppress other aspects that are not relevant for the given
purpose.

1.3 Software Characteristics

Asst. Prof. Patil Girish S. Page 3


These components are described below:

 Software does not wear out:


Different things like clothes, shoes, ornaments do wear out after some time. But,
software once created never wears out. It can be used for as long as needed and in
case of need for any updating, required changes can be made in the same software
and then it can be used further with updated features.

 Software is not manufactured:


Software is not manufactured but is developed. So, it does not require any raw
material for its development.

 Functionality:
It refers to the suitability, accuracy, interoperability, compliance, security of
software which is measured as degree of performance of the software against
its intended purpose.

Asst. Prof. Patil Girish S. Page 4


 Reliability:
Refers to the recoverability, fault tolerance, maturity of software, which is
basically a capability of the software that provide required functionality under
the given situations.

 Efficiency:
It is the ability of the software to use resources of system in the most effective
and efficient manner. Software must make effective use of syetm storage and
execute command as per required timing.

 Usability:
The usability of the software is the simplicity of the software in terms of the
user. The easier the software is to use for the user, the more is the usability of
the software as more number of people will now be able to use it and also due
to the ease will use it more willingly.

Asst. Prof. Patil Girish S. Page 5


 Maintainability:
It is the ease with which the modifications can be made in a software to extend
or enhance its functionality, improve its performance, or resolve bugs.

 Portability:
It is the ease with which software developers can relaunch software from one
platform to another, without (or with minimum) changes. In simple terms,
software must be made in way that it should be platform independent.

1.4 Software Applications

1. System Software –
System Software is necessary to manage the computer resources and support the
execution of application programs. Software like operating systems, compilers,
editors and drivers, etc., come under this category. A computer cannot function
without the presence of these. Operating systems are needed to link the machine-
dependent needs of a program with the capabilities of the machine on which it
runs. Compilers translate programs from high-level language to machine language.

2. Networking and Web Applications Software –


Networking Software provides the required support necessary for computers to
Asst. Prof. Patil Girish S. Page 6
interact with each other and with data storage facilities. The networking software
is also used when software is running on a network of computers (such as the
World Wide Web). It includes all network management software, server software,
security and encryption software, and software to develop web-based applications
like HTML, PHP, XML, etc.

3. Embedded Software –
This type of software is embedded into the hardware normally in the Read-Only
Memory (ROM) as a part of a large system and is used to support certain
functionality under the control conditions. Examples are software used in
instrumentation and control applications like washing machines, satellites,
microwaves, etc.

4. Reservation Software –
A Reservation system is primarily used to store and retrieve information and
perform transactions related to air travel, car rental, hotels, or other activities. They
also provide access to bus and railway reservations, although these are not always
integrated with the main system. These are also used to relay computerized
information for users in the hotel industry, making a reservation and ensuring that
the hotel is not overbooked.

5. Business Software –
This category of software is used to support business applications and is the most
widely used category of software. Examples are software for inventory
management, accounts, banking, hospitals, schools, stock markets, etc.

6. Entertainment Software –
Education and entertainment software provides a powerful tool for educational
agencies, especially those that deal with educating young children. There is a wide
range of entertainment software such as computer games, educational games,
translation software, mapping software, etc.

7. Artificial Intelligence Software –


Software like expert systems, decision support systems, pattern recognition
software, artificial neural networks, etc. come under this category. They involve
complex problems which are not affected by complex computations using non-
numerical algorithms.

8. Scientific Software –
Scientific and engineering software satisfies the needs of a scientific or engineering
user to perform enterprise-specific tasks. Such software is written for specific

Asst. Prof. Patil Girish S. Page 7


applications using principles, techniques, and formulae specific to that field.
Examples are software like MATLAB, AUTOCAD, PSPICE, ORCAD, etc.

1.5 Software Evolution

The process of developing a software product using software engineering principles


and methods is referred to as software evolution. This includes the initial development
of software and its maintenance and updates, till desired software product is
developed, which satisfies the expected requirements.

Evolution starts from the requirement gathering process. After which developers
create a prototype of the intended software and show it to the users to get their
feedback at the early stage of software product development. The users suggest
changes, on which several consecutive updates and maintenance keep on changing
too. This process changes to the original software, till the desired software is
accomplished.
Even after the user has desired software in hand, the advancing technology and the
changing requirements force the software product to change accordingly. Re-creating
software from scratch and to go one-on-one with requirement is not feasible. The
only feasible and economical solution is to update the existing software so that it
matches the latest requirements.
1.7 Software Myths
Beliefs about software and the process used to build it- can be traced to the earliest
days of computing myths have a number of attributes that have made them insidious.
Management myths: Manages with software responsibility, like managers in most
disciplines, are often under pressure to maintain budgets, keep schedules from
slipping, and improve quality.

Asst. Prof. Patil Girish S. Page 8


a. Myth: We already have a book that‘s full of standards and procedures for
building software - Wont that provide my people with everything they
need to know?
Reality: The book of standards may very well exist but, is it used? Are software
practitioners aware of its existence? Does it reflect modern software
engineering practice?
b. Myth: If we get behind schedule, we can add more programmers and catch up.
Reality: Software development is not a mechanistic process like manufacturing.
As new people are added, people who were working must spend time educating
the new comers, thereby reducing the amount of time spend on productive
development effort. People can be added but only in a planned and well
coordinated manner.
c. Myth: If I decide to outsource the software project to a third party, I can just
relax and let that firm built it.
Reality: If an organization does not understand how to manage and control
software projects internally, it will invariably struggle when it outsources
software projects. SOFTWARE ENGINEERING

Customer myths: The customer believes myths about software because software
managers and practitioners do little to correct misinformation. Myths lead to
false expectations and ultimately, dissatisfaction with the developer.
Myth: A general statement of objectives is sufficient to begin with writing
programs - we can fill in the details later.
Reality: Although a comprehensive and stable statement of requirements is not
always possible, an ambiguous statement of objectives is recipe for disaster.
Myth: Project requirements continually change, but change can be easily
accommodated because software is flexible.
Reality: It is true that software requirements change, but the impact of change
varies with the time at which it is introduced and change can cause upheaval
that requires additional resources and major design modification.

Practitioner’s myths: Myths that are still believed by software practitioners: during
the early days of software, programming was viewed as an art from old ways
and attitudes die hard.
Myth: Once we write the program and get it to work, our jobs are done.
Reality: Someone once said that the sooner you begin writing code, the longer
it‘ll take you to get done. Industry data indicate that between 60 and 80 percent
of all effort expended on software will be expended after it is delivered to the
customer for the first time.
Myth: The only deliverable work product for a successful project is the working
program.
Reality: A working program is only one part of a software configuration that
includes many elements. Documentation provides guidance for software
support.
Asst. Prof. Patil Girish S. Page 9
Myth: software engineering will make us create voluminous and unnecessary
documentation and will invariably slows down.
Reality: software engineering is not about creating documents. It is about
creating quality. Better quality leads to reduced rework. And reduced rework
results in faster delivery times.

Asst. Prof. Patil Girish S. Page 10


Asst. Prof. Patil Girish S. Page 11
Unit - II
2. Software Development Life Cycle(SDLC)and Methodologies

2.1 Introduction:-

Software Development Life Cycle is the application of standard business practices to


building software applications. It’s typically divided into six to eight steps: Planning,
Requirements, Design, Build, Document, Test, Deploy, Maintain. Some project
managers will combine, split, or omit steps, depending on the project’s scope. These
are the core components recommended for all software development projects.

2.2 Activities of SDLC:-


SDLC provides a series of steps to be followed to design and
develop a software product efficiently. SDLC framework includes the following steps:

Communication
This is the first step where the user initiates the request for a desired software
product. The user contacts the service provider and tries to negotiate the terms,
submits the request to the service providing organization in writing.
Requirement Gathering
This step onwards the software development team works to carry on the project. The
team holds discussions with various stakeholders from problem domain and tries to
bring out as much information as possible on their requirements. The requirements
are contemplated and segregated into user requirements, system requirements and
functional requirements.

Asst. Prof. Patil Girish S. Page 12


wers from the questionnaires.

Feasibility Study
After requirement gathering, the team comes up with a rough plan of
software process. At this step the team analyzes if a software can be designed to fulfill
all requirements of the user, and if there is any possibility of software being no more
useful. It is also analyzed if the project is financially, practically, and technologically
feasible for the organization to take up.
System Analysis
At this step the developers decide a roadmap of their plan and try to bring up the best
software model suitable for the project. System analysis includes understanding of
software product limitations, learning system related problems or changes to be done
in existing systems beforehand, identifying and addressing the impact of project on
organization and personnel etc. The project team analyzes the scope of the project and
plans the schedule and resources accordingly.
Software Design
Next step is to bring down whole knowledge of requirements and analysis on the desk
and design the software product. The inputs from users and information gathered in
requirement gathering phase are the inputs of this step. The output of this step comes
in the form of two designs; logical design, and physical design. Engineers produce
meta-data and data dictionaries, logical diagrams, data-flow diagrams, and in some
cases pseudo codes.
Coding
This step is also known as programming phase. The implementation of software
design starts in terms of writing program code in the suitable programming language
and developing error-free executable programs efficiently.
Testing
An estimate says that 50% of whole software development process should be tested.
Errors may ruin the software from critical level to its own removal. Software testing is
done while coding by the developers and thorough testing is conducted by testing
experts at various levels of code such as module testing.
Integration
Software may need to be integrated with the libraries, databases, and other
program(s). This stage of SDLC is involved in the integration of software with outer
world entities.
Implementation
This means installing the software on user machines. At times, software needs post-
installation configurations at user end. Software is tested for portability and
adaptability and integration related issues are solved during implementation.
Operation and Maintenance

Asst. Prof. Patil Girish S. Page 13


This phase confirms the software operation in terms of more efficiency and less
errors. If required, the users are trained on, or aided with the documentation on how
to operate the software and how to keep the software operational. The software is
maintained timely by updating the code according to the changes taking place in user
end environment or technology. This phase may face challenges from hidden bugs and
real-world unidentified problems.

Asst. Prof. Patil Girish S. Page 14


2.3 A Generic Process Model
The software process comprises activities performed to create a software product. It
deals with the technical and management aspects of software development.
Software process includes :
Tasks – focus on a small, specific objective.
Action – set of tasks that produce a major work product.
Activities – group of related tasks and actions for a major objective.

A process framework for software engineering defines five framework activities.


Framework activities include communication, planning, modeling, construction and
deployment. Each framework activity includes a set of engineering actions and each
Asst. Prof. Patil Girish S. Page 15
action defines a set of tasks that incorporates work products, project milestones and
software quality assurance (SQA) points that are required. Umbrella activities are
carried throughout the process.
Process Framework Activities

Communication – Communicate with stakeholders and customers to obtain


objectives of the system and requirements for the software.

Planning – Software project plan has details of resources needed, tasks and risk
factors likely to occur, schedule
.
Modelling – Architectural models and design to better understand the problem and
for work towards the best solution.

Construction – Generation of code and testing of the system to rectify errors and
ensuring all specified requirements are met.

Deployment – Entire software product or partially completed product is delivered to


the customer for evaluation and feedback.

2.4 Prescriptive Process models

Prescriptive process model were originally proposed to bring order to the chaos
of software development. Prescriptive process model define a prescribed set of
process elements and a predictable process work flow.

“prescriptive” because they prescribe a set of process elements framework activities,


software engineering actions, tasks, work products, quality assurance, and change
control mechanisms for each project.

 There are three types of prescriptive process models. They are:

1. The Waterfall Model


2. Incremental Process model
3. Evolutionary Process Model.

1. The Waterfall Model


 The waterfall model is also called as 'Linear sequential model' or 'Classic life
cycle model'.
 In this model, each phase is fully completed before the beginning of the next
phase.
 This model is used for the small projects.

Asst. Prof. Patil Girish S. Page 16


 In this model, feedback is taken after each phase to ensure that the project is on
the right path.
 Testing part starts only after the development is complete.

The process starts with communication, where requirements are gathered from the
customer and recorded.

Then goes to the planning stage where the cost and time constraints are estimated, a
schedule is outlined and project tracking variables are defined.

Modelling is where a design based on the requirements and keeping the project
constraints in mind is created.

After this, code is generated and the actual building of the product is started in
the construction phase.

Testing (unit testing, integration testing) is done after code completion in this phase.

Deployment is the last stage where the product is delivered, customer feedback is
received and, support and maintenance for the product are provided.

Advantages of the waterfall model

 A simple model to use and implement.


 Easily understandable workflow.
 Easy to manage since requirements are known prior to the start of the project.

Asst. Prof. Patil Girish S. Page 17


 Can be applied to projects where quality is preferred over cost.
Disadvantages of the waterfall model

 It may be difficult for the customer to provide all the specific requirements
beforehand.
 Cannot be used for complex and object-oriented projects.
 Testing and customer evaluation are done at the last stages and hence the risk is
high.
 Iteration of activities is not promoted which is unavoidable for certain projects.
 May lead to “blocking states” in which some project team members must wait
for other members of the team to complete dependent tasks.

2. Incremental Process Model


The Incremental process model is also known as ‘Successive version model‘.
In the Incremental process model, a series of releases, called
increments, are built and delivered to the customer. First, a simple working
system(core product), that addresses basic requirements, is delivered. Customer
feedback is recorded after each incremental delivery. Many increments are
delivered, by adding more functions, until the required system is released. This
model is used when a user demands a model of product with limited functionality
quickly.

The Incremental Process Model

Advantages of incremental process model

 Flexible to change requirements.


 Changes can be done throughout the development stages.
 Errors are reduced since the product is tested by the customer in each phase.
 Working software available at the early stage of the process.
 Easy to test because of small iterations.

Asst. Prof. Patil Girish S. Page 18


 The initial cost is lower.
Disadvantages of incremental process model

 Requires good planning and design.


 Modules and interfaces should be well defined.
 The total cost is high.
 Demands a complete planning strategy before commencement.
 Refining requirements in each iteration may affect system architecture.
 Breaking the problem into increments needs skilful management supervising.

3. Evolutionary Process Model.


Evolutionary model is a combination of Iterative and Incremental model of
software development life cycle. Delivering your system in a big bang release,
delivering it in incremental process over time is the action done in this model.
Some initial requirements and architecture envisioning need to be done.
1. The Prototyping model
 Prototype is defined as first or preliminary form using which other forms are
copied or derived.
 Prototype model is a set of general objectives for software.
 It does not identify the requirements like detailed input, output.
 It is software working model of limited functionality.
 In this model, working programs are quickly produced.

Asst. Prof. Patil Girish S. Page 19


The different phases of Prototyping model are:
1. Communication
In this phase, developer and customer meet and discuss the overall objectives of
the software.

2. Quick design
 Quick design is implemented when requirements are known.
 It includes only the important aspects like input and output format of the
software.
 It focuses on those aspects which are visible to the user rather than the
detailed plan.
 It helps to construct a prototype.
3. Modeling quick design
 This phase gives the clear idea about the development of software because the
software is now built.
 It allows the developer to better understand the exact requirements.
4. Construction of prototype
Generation of code and testing of the system to rectify errors and ensuring all
specified requirements are met.
5. Deployment, delivery, feedback

Asst. Prof. Patil Girish S. Page 20


 If the user is not satisfied with current prototype then it refines according to
the requirements of the user.
 The process of refining the prototype is repeated until all the requirements of
users are met.
 When the users are satisfied with the developed prototype then the system is
developed on the basis of final prototype.
Advantages of Prototyping Model
 Prototype model need not know the detailed input, output, processes,
adaptability of operating system and full machine interaction.
 In the development process of this model users are actively involved.
 The development process is the best platform to understand the system by
the user.
 Errors are detected much earlier.
 Gives quick user feedback for better solutions.
 It identifies the missing functionality easily. It also identifies the confusing or
difficult functions.
Disadvantages of Prototyping Model:
 The client involvement is more and it is not always considered by the
developer.
 It is a slow process because it takes more time for development.
 Many changes can disturb the rhythm of the development team.
 It is a thrown away prototype when the users are confused with it.
2. The Spiral model
 Spiral model is a risk driven process model.
 It is used for generating the software projects.
 In spiral model, an alternate solution is provided if the risk is found in the risk
analysis, then alternate solutions are suggested and implemented.
 It is a combination of prototype and sequential model or waterfall model.
 In one iteration all activities are done, for large project's the output is small.
The framework activities of the spiral model are as shown in the following
figure.

Asst. Prof. Patil Girish S. Page 21


Advantages of Spiral Model


 It reduces high amount of risk.
 It is good for large and critical projects.
 It gives strong approval and documentation control.
 In spiral model, the software is produced early in the life cycle process.
Disadvantages of Spiral Model
 It can be costly to develop a software model.
 It is not used for small projects.

2.5 Concurrent Models, Types


 The concurrent development model, sometimes called concurrent engineering,
can be represented schematically as a series of framework activities, software
engineering actions and tasks, and their associated states.
 The concurrent development model is called as concurrent model.
 The communication activity has completed in the first iteration and exits in the
awaiting changes state.
 The modeling activity completed its initial communication and then go to the
underdevelopment state.
 If the customer specifies the change in the requirement, then the modeling
activity moves from the under development state into the awaiting change state.
 The concurrent process model activities moving from one state to another state.

Asst. Prof. Patil Girish S. Page 22


Advantages of the concurrent development model
 This model is applicable to all types of software development processes.
 It is easy for understanding and use.
 It gives immediate feedback from testing.
 It provides an accurate picture of the current state of a project.
Disadvantages of the concurrent development model

Asst. Prof. Patil Girish S. Page 23


 It needs better communication between the team members. This may not be
achieved all the time.
 It requires to remember the status of the different activities.

Unit - III
3. Analysis and Design Tools
3.1 Decision Tree and Decision Table
 1. Decision Table :
Decision Table is just a tabular representation of all conditions and actions.
Decision Trees are always used whenever the process logic is very
complicated and involves multiple conditions. The main components used for
the formation of Data Table are Conditions Stubs, Action Stubs, and rules.
 2. Decision Tree :
Decision Tree is a graph which always uses a branching method in order to
demonstrate all the possible outcomes of any decision. Decision Trees are
graphical and shows better representation of decision outcomes. It consists of
three nodes namely Decision Nodes, Chance Nodes and Terminal Nodes.

Difference between Decision Table and Decision Tree :


S.No. Decision Table Decision Tree

Decision Trees are graphical


Decision Tables are tabular representation of every
representation of conditions and possible outcome of a
1. actions. decision.

We can derive decision table from We can not derive decision


2. decision tree. tree from decision table.

It helps to take into account


the possible relevant
3. It helps to clarify the criteria. outcomes of decision.

In Decision Tables, we can include In Decision Trees, we can not


4. more than one ‘or’ condition. include more than one ‘or’

Asst. Prof. Patil Girish S. Page 24


S.No. Decision Table Decision Tree

condition.

It is used when there are small It is used when there are


5. number of properties more number of properties.

It can be used for complex


6. It is used for simple logic only. logic as well.

It is constructed of rows and It is constructed of branches


7. tables. and nodes.

3.2 Data Flow Diagrams (DFD)


 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 objective of a DFD is to show the scope and boundaries of a system as a
whole. It may be used as a communication tool between a system analyst and
any person who plays a part in the order that acts as a starting point for
redesigning a system. The DFD is also called as a data flow graph or bubble
chart.
Rules for creating DFD
 The name of the entity should be easy and understandable without any extra
assistance(like comments).
 The processes should be numbered or put in ordered list to be referred easily.
 The DFD should maintain consistency across all the DFD levels.
 A single DFD can have maximum processes upto 9 and minimum 3 processes.

Asst. Prof. Patil Girish S. Page 25


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. A
data store indicates that the data is stored which can be used at a later stage or by
the other processes in a different order. 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.

3.3 Data Dictionary

 Data Dictionary comprises two words i.e. data which simply means information
being collected through some sources and dictionary means where this information
is available.

Asst. Prof. Patil Girish S. Page 26


 Data Dictionary can be defined as collection of information of all data elements or
contents of databases such as data types, text descriptions of system. It makes it
easier for user and analyst to use data as well as understand and have common
knowledge about inputs, outputs, components of a database, and intermediate
calculations.
Why Data dictionary is essential ?
 There are less information and details provided by data models. So, a data
dictionary is very essential and needed to have proper knowledge and usage of
contents.
 Data Dictionary provides all information about names that are used in system
models.
 Data Dictionary also provides information about entities, relationships, and
attributes that are present in system model.
 As a part of structured analysis and design tool, implementation of a data
dictionary is done

The mathematical operators used within the data dictionary are defined in the table:

Notations Meaning

x=a+b x includes of data elements a and b.

x=[a/b] x includes of either data elements a or b.

x=a x includes of optimal data elements a.

x=y[a] x includes of y or more occurrences of data element a

x=[a]z x includes of z or fewer occurrences of data element a

x=y[a]z x includes of some occurrences of data element a which are between y and z.

3.3.1 Elements of DD
The data dictionary Element as following:
 Name of the data item
 Aliases
 Description/purpose
 Related data items
 Range of values
 Data structure definition/Forms
Aliases include other names by which this data item is called DEO for Data Entry
Operator and DR for Deputy Registrar.

Asst. Prof. Patil Girish S. Page 27


Description/purpose is a textual description of what the data item is used for or
why it exists.
Related data items capture relationships between data items e.g., total_marks
must always equal to internal_marks plus external_marks.
Range of values records all possible values, e.g. total marks must be positive and
between 0 to 100.
Data structure Forms: Data flows capture the name of processes that generate or
receive the data items. If the data item is primitive, then data structure form
captures the physical structures of the data item. If the data is itself a data
aggregate, then data structure form capture the composition of the data items in
terms of other data items.

3.3.2 Advantages of DD

 It is a valuable reference in any organization because it provides


documentation.
 It improves the communication between system analyst and user by
establishing consistent definitions of various items terms and procedures.
 It is a good tool for manage operators and other members of the development
team to understand requirements and design.
 It helps the analyst to simplify the structure for meeting the data
requirements of the system.
 It is just like a store of all data elements information that can link all phases
of software development life cycle.
 It is used to remove the redundancy in data definition.
 It is an important step building a database. Most data base management
system has a data dictionary as a standard feature.
 During implementation, it serves as a base against which developers compare
their data description.

3.4 Input and Output Design

Input Design :In an information system, input is the raw data that is processed
to produce output. During the input design, the developers must consider the input
devices such as PC, MICR, OMR, etc.
Therefore, the quality of system input determines the quality of system output.
Well-designed input forms and screens have following properties −
 It should serve specific purpose effectively such as storing, recording, and
retrieving the information.
Asst. Prof. Patil Girish S. Page 28
 It ensures proper completion with accuracy.
 It should be easy to fill and straightforward.
 It should focus on user’s attention, consistency, and simplicity.
 All these objectives are obtained using the knowledge of basic design
principles regarding −
o What are the inputs needed for the system?
o How end users respond to different elements of forms and screens.
Objectives for Input Design
The objectives of input design are −
 To design data entry and input procedures
 To reduce input volume
 To design source documents for data capture or devise other data capture
methods
 To design input data records, data entry screens, user interface screens, etc.
 To use validation checks and develop effective input controls.

Data Input Methods


It is important to design appropriate data input methods to prevent errors while
entering data. These methods depend on whether the data is entered by customers
in forms manually and later entered by data entry operators, or data is directly
entered by users on the PCs.
A system should prevent user from making mistakes by −
 Clear form design by leaving enough space for writing legibly.
 Clear instructions to fill form.
 Clear form design.
 Reducing key strokes.
 Immediate error feedback.
Some of the popular data input methods are −
 Batch input method (Offline data input method)
 Online data input method
 Computer readable forms
 Interactive data input

Output Design
The design of output is the most important task of any system. During output
design, developers identify the type of outputs needed, and consider the necessary
output controls and prototype report layouts.
Objectives of Output Design
The objectives of input design are −

Asst. Prof. Patil Girish S. Page 29


 To develop output design that serves the intended purpose and eliminates
the production of unwanted output.
 To develop the output design that meets the end users requirements.
 To deliver the appropriate quantity of output.
 To form the output in appropriate format and direct it to the right person.
 To make the output available on time for making good decisions.
Let us now go through various types of outputs −
External Outputs
Manufacturers create and design external outputs for printers. External outputs
enable the system to leave the trigger actions on the part of their recipients or
confirm actions to their recipients.
Some of the external outputs are designed as turnaround outputs, which are
implemented as a form and re-enter the system as an input.
Internal outputs
Internal outputs are present inside the system, and used by end-users and
managers. They support the management in decision making and reporting.
There are three types of reports produced by management information −
 Detailed Reports − They contain present information which has almost no
filtering or restriction generated to assist management planning and control.
 Summary Reports − They contain trends and potential problems which are
categorized and summarized that are generated for managers who do not want
details.
 Exception Reports − They contain exceptions, filtered data to some condition or
standard before presenting it to the manager, as information.

3.5 PseudoCode
Pseudocode is one of the system development tools in which the preliminary
steps of solutions are written using simple English language rather than
programming keywords. It is an informal high-level description of the operating
principle of a computer program or other algorithm. The pseudocode uses the
structural conventions of a normal programming language but is intended for
human reading rather than machine reading. Pseudocode typically omits details
that are essential for machine understanding of the algorithm, such as variable
declarations, system-specific code, and some subroutines.
Pseudocode is not an actual programming language. So it cannot be
compiled into an executable program. It uses short terms or simple English
language syntaxes to write code for programs before it is actually converted into
a specific programming language. This is done to identify top level flow errors,
and understand the programming data flows that the final program is going to
use. This definitely helps save time during actual programming as conceptual
errors have been already corrected. Firstly, program description and
functionality is gathered and then pseudocode is used to create statements to
Asst. Prof. Patil Girish S. Page 30
achieve the required results for a program. Detailed pseudocode is inspected
and verified by the designer’s team or programmers to match design
specifications. Catching errors or wrong program flow at the pseudocode stage
is beneficial for development as it is less costly than catching them later. Once
the pseudocode is accepted by the team, it is rewritten using the vocabulary and
syntax of a programming language. The purpose of using pseudocode is an
efficient key principle of an algorithm. It is used in planning an algorithm with
sketching out the structure of the program before the actual coding takes place.
EX:-
begin
N=1
Repeat
{
Display N
N=N+1
}
While n<=10
halt

Advantages of pseudocode –

• Pseudocode is understood by the programmers of all types.

• it enables the programmer to concentrate only on the algorithm part of the


code development.

Unit - IV
4. Software Testing
Asst. Prof. Patil Girish S. Page 31
4.1 Definition
Software testing is the process of finding errors in the developed
product. It also checks whether the real outcomes can match expected results, as
well as aids in the identification of defects, missing requirements, or gaps.
Testing is the penultimate step before the launch of the product to the market. It
includes examination, analysis, observation, and evaluation of different aspects of a
product.
Professional software testers use a combination of manual testing
with automated tools. After conducting tests, the testers report the results to the
development team. The end goal is to deliver a quality product to the customer,
which is why software testing is so important.
Importance of Software Testing
It’s common for many startups to skip testing. They might say that
their budget is the reason why they overlook such an important step. They think it
would lead to no major consequences. But to make a strong and positive first
impression, it needs to be top-notch. And for that, testing the product for bugs is a
must.

4.2 Verification and Validation


Verification in Software Testing :-
Verification in Software Testing is a process of checking
documents, design, code, and program in order to check if the software has been
built according to the requirements or not. The main goal of verification process is
to ensure quality of software application, design, architecture etc. The verification
process involves activities like reviews, walk-throughs and inspection.

Asst. Prof. Patil Girish S. Page 32


Validation in Software Testing :-
Validation in Software Engineering is a dynamic
mechanism of testing and validating if the software product actually meets the exact
needs of the customer or not. The process helps to ensure that the software fulfills
the desired use in an appropriate environment. The validation process involves
activities like unit testing, integration testing, system testing and user acceptance
testing.

Verification Validation
1. Verification is a static practice of verifying 1. Validation is a dynamic mechanism of
documents, design, code and program. validating and testing the actual product.
2. It does not involve executing the code. 2. It always involves executing the code.
3. It is human based checking of documents and
3. It is computer based execution of program.
files.
4. Validation uses methods like black box
4. Verification uses methods like inspections,
(functional) testing, gray box testing, and
reviews, walkthroughs, and Desk-checking etc.
white box (structural) testing etc.
5. Validation is to check whether software
5. Verification is to check whether the software
meets the customer expectations and
conforms to specifications.
requirements.
6. It can catch errors that validation cannot catch. 6. It can catch errors that verification cannot
It is low level exercise. catch. It is High Level Exercise.
7. Target is requirements specification, application 7. Target is actual product-a unit, a module, a
and software architecture, high level, complete bent of integrated modules, and effective final
design, and database design etc. product.
8. Verification is done by QA team to ensure
8. Validation is carried out with the
that the software is as per the specifications in
involvement of testing team.
the SRS document.
9. It generally comes first-done before validation. 9. It generally follows after verification.

4.3 Black box Testing

Asst. Prof. Patil Girish S. Page 33


Black box testing is a type of software testing in which the
functionality of the software is not known. The testing is done without the internal
knowledge of the products

It is carried out to test functionality of the program and also called ‘Behavioral’
testing. The tester in this case, has a set of input values and respective desired
results. On providing input, if the output matches with the desired results, the
program is tested ‘ok’, and problematic otherwise.

Black box testing can be done in following ways:

1. Syntax Driven Testing – This type of testing is applied to systems that can
be syntactically represented by some language. For example- compilers,language
that can be represented by context free grammar. In this, the test cases are
generated so that each grammar rule is used at least once.

2. Equivalence partitioning – It is often seen that many type of inputs work


similarly so instead of giving all of them separately we can group them together and
test only one input of each group. The idea is to partition the input domain of the
system into a number of equivalence classes such that each member of class works
in a similar way, i.e., if a test case in one class results in some error, other members
of class would also result into same error.

Asst. Prof. Patil Girish S. Page 34


3. Boundary value analysis – Boundaries are very good places for errors to
occur. Hence if test cases are designed for boundary values of input domain then the
efficiency of testing improves and probability of finding errors also increase. For
example – If valid range is 10 to 100 then test for 10,100 also apart from valid and
invalid inputs.
4. Cause effect Graphing – This technique establishes relationship between logical
input called causes with corresponding actions called effect. The causes and effects are
represented using Boolean graphs. The following steps are followed:
1. Identify inputs (causes) and outputs (effect).
2. Develop cause effect graph.
3. Transform the graph into decision table.

5. Requirement based testing – It includes validating the requirements given in SRS


of software system.

6. Compatibility testing – The test case result not only depend on product but also
infrastructure for delivering functionality. When the infrastructure parameters are
changed it is still expected to work properly. Some parameters that generally affect
compatibility of software are:
1. Processor (Pentium 3,Pentium 4) and number of processors.
2. Architecture and characteristic of machine (32 bit or 64 bit).
3. Back-end components such as database servers.
4. Operating System (Windows, Linux, etc)

4.4 White-Box Testing


White box testing techniques analyze the internal structures the used data
structures, internal design, code structure and the working of the software rather than
just the functionality as in black box testing. It is also called glass box testing or clear
box testing or structural testing.
Working process of white box testing:
Input: Requirements, Functional specifications, design documents, source code.
Processing: Performing risk analysis for guiding through the entire process.
Proper test planning: Designing test cases so as to cover entire code. Execute rinse-
repeat until error-free software is reached. Also, the results are communicated.
Output: Preparing final report of the entire testing process.

Asst. Prof. Patil Girish S. Page 35


Testing techniques:

A. Statement coverage: In this technique, the aim is to traverse all statement at least
once. Hence, each line of code is tested. In case of a flowchart, every node must be
traversed at least once. Since all lines of code are covered, helps in pointing out faulty
code. they were used or changed.

B. Branch Coverage: In this technique, test cases are designed so that each branch
from all decision points are traversed at least once. In a flowchart, all edges must be
traversed at least once.

C. Condition Coverage: In this technique, all individual conditions must be covered as


shown in the following example:
1. READ X, Y
2. IF(X == 0 || Y == 0)
3. PRINT ‘0’

D. Multiple Condition Coverage: In this technique, all the possible combinations of


the possible outcomes of conditions are tested at least once. Let’s consider the
following example:
1. READ X, Y
2. IF(X == 0 || Y == 0)
3. PRINT ‘0’

E. Flow graph notation: It is a directed graph consisting of nodes and edges.


Each node represents a sequence of statements, or a decision point. A predicate node
is the one that represents a decision point that contains a condition after which the
graph splits. Regions are bounded by nodes and edges.

4.5 Unit Testing:-


Unit Testing is a software testing technique by means of 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 modules
are tested to determine if there are any issue by the developer himself. It is correlated
with functional correctness of the independent modules.
Unit Testing is defined as a type of software testing where individual
components of a software are tested.
Unit Testing of software product is carried out during the
development of an application. An individual component may be either an individual
function or a procedure. Unit Testing is typically performed by the developer.

Asst. Prof. Patil Girish S. Page 36


In SDLC or V Model, Unit testing is first level of testing done before integration testing.
Unit testing is such type of testing technique that is usually performed by the
developers. Although due to reluctance of developers to tests, quality assurance
engineers also do unit testing.
Objective of Unit Testing:
The objective of Unit Testing is:
1. To isolate a section of code.
2. To verify the correctness of code.
3. To test every function and procedure.
4. To fix bug early in development cycle and to save costs.
5. To help the developers to understand the code base and enable them to make
changes quickly.
6. To help for code reuse.

Types of Unit Testing:


There are 2 type of Unit Testing: Manual, and Automated.

Manual Testing is a type of software testing in which test


cases are executed manually by a tester without using any automated tools. The
purpose of Manual Testing is to identify
the bugs, issues, and defects in the software application. Manual software testing is
the most primitive technique of all testing types and it helps to find critical bugs in
the software application.
Automation Testing is a software testing technique that performs using special
automated testing software tools to execute a test case suite. On the contrary, Manual
Testing is performed by a human sitting in front of a computer carefully executing the
test steps.
The automation testing software can also enter test data into the System Under Test,
compare expected and actual results and generate detailed test reports. Software Test
Automation demands considerable investments of money and resources.
Asst. Prof. Patil Girish S. Page 37

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy