Professional Documents
Culture Documents
Software Engineering
Software Engineering
Software Engineering
BCE-CSC14
CORE-XIV: SOFTWARE ENGINEERING
(Common paper to B.Sc.Software Applications-V Sem. & B.C.A.-V Sem.)
OUTCOMES:
The students should be able to specify software requirements, design the software using tools
To write test cases using different testing techniques.
UNIT- I
Introduction – Evolution – Software Development projects – Emergence of Software Engineering.
Software Life cycle models – Waterfall model – Rapid Application Development – Agile Model – Spiral
Model
UNIT- II
Requirement Analysis and Specification – Gathering and Analysis – SRS – Formal System Specification
UNIT- III
Software Design – Overview – Characteristics – Cohesion & Coupling – Layered design – Approaches
Function Oriented Design – Structured Analysis – DFD – Structured Design – Detailed design
UNIT- IV
Object Modeling using UML – OO concepts – UML – Diagrams – Use case, Class, Interaction, Activity,
State Chart – Postscript
UNIT- V
Coding & Testing – coding – Review – Documentation – Testing – Black-box, White-box, Integration,
OO Testing, Smoke testing.
TEXT BOOK:
1. Rajib Mall, “Fundamentals of Software Engineering”, PHI 2018, 5th Edition.
REFERENCE BOOKS:
1. Roger S. Pressman, “Software Engineering - A Practitioner’s Approach”, McGraw Hill 2010, 7th
Edition.
2. Pankaj Jalote, “An Integrated Approach to Software Engineering”, Narosa Publishing House 2011,
3rd Edition.
WEB REFERENCES:
NPTEL online course – Software Engineering - https://nptel.ac.in/courses/106105182/
SOFTWARE ENGINEERING
Unit-1:
Agile model?
The Agile model is a type of incremental model where software is developed in
a rapid incremental cycle.
Phases of Agile Model:
Steps:
Step 1: Understand Pain Behind The Requirement.
Step 2: Eliminate Language Ambiguity.
Step 3: Identify Corner Cases.
Step 4: Write User Stories.
Step 5: Create a Definition Of “Done”
Requirements analysis: Requirements analysis, also called requirements
engineering, is the process of determining user expectations for a new or
modified product. These features, called requirements, must be quantifiable,
relevant and detailed. In software engineering, such requirements are often
called functional specifications.
UNIT -3:
Software design overview :Software design is the process of envisioning and
defining software solutions to one or more sets of problems. One of the main
components of software design is the software requirements analysis (SRA).
SRA is a part of the software development process that lists specifications used
in software engineering.
Characteristics of Software design?
The factors are divided into three categories:
•Operational
•Transitional
•Maintenance or Revision
Operational Characteristics:
The factors of this characteristic are related to the exterior quality of the
software.
Some of these factors are:-
Reliability – The software should not fail during execution and should not have
defects.
Correctness – The software should meet all the requirements of the customer.
Integrity – The software should not have any side effects.
Efficiency – The software should efficiently use the storage space and time.
Usability – The software should be user-friendly so that anyone can use it.
Security – The software should keep the data secure from any external threat.
Safety – The software made should not be hazardous or harmful to the
environment or life.
Transitional Characteristics:
The factors of this characteristic play a significant role when the software is
moved from one platform to another.
Some of these factors are:-
Interoperability – It is the ability of the software to use the information
transparently.
Reusability – If on doing slight modifications to the code of the software, we
can use it for a different purpose, then it is reusable.
Portability – If the software can perform the same operations on different
environments and platforms, that shows its Portability.
Maintenance or Revision Characteristics
Maintenance characteristics deal with the interior role of the software and tell
us about the software’s capability to maintain itself in the ever-changing
environment.
Maintainability – The software should be easy to maintain by any user.
Flexibility – The software should be flexible to any changes made to it.
Extensibility – There should not be any problem with the software on
increasing the number of functions performed by it.
Testability – It should be easy to test the software.
Modularity – A software is of high modularity if it can be divided into separate
independent parts and can be modified and tested separately.
Scalability – The software should be easy to upgrade.
Cohesion & Coupling ?
Cohesion: cohesion refers to the degree to which the elements inside a
module belong together. In one sense, it is a measure of the strength of
relationship between the methods and data of a class and some unifying
purpose or concept served by that class..
Types of Cohesion:
Functional Cohesion: Every essential element for a single computation is
contained in the component. A functional cohesion performs the task and
functions. It is an ideal situation.
Sequential Cohesion: An element outputs some data that becomes the input
for other element, i.e., data flow between the parts. It occurs naturally in
functional programming languages.
Communicational Cohesion: Two elements operate on the same input data or
contribute towards the same output data. Example- update record in the
database and send it to the printer.
Procedural Cohesion: Elements of procedural cohesion ensure the order of
execution. Actions are still weakly connected and unlikely to be reusable. Ex-
calculate student GPA, print student record, calculate cumulative GPA, print
cumulative GPA.
Temporal Cohesion: The elements are related by their timing involved. A
module connected with temporal cohesion all the tasks must be executed in
the same time span. This cohesion contains the code for initializing all the parts
of the system. Lots of different activities occur, all at unit time.
Logical Cohesion: The elements are logically related and not functionally. Ex- A
component reads inputs from tape, disk, and network. All the code for these
functions is in the same component. Operations are related, but the functions
are significantly different.
Coincidental Cohesion: The elements are not related(unrelated). The elements
have no conceptual relationship other than location in source code. It is
accidental and the worst form of cohesion. Ex- print next line and reverse the
characters of a string in a single component.
Coupling: Coupling is the degree of interdependence between software
modules; a measure of how closely connected two routines or modules are;
the strength of the relationships between modules.
Types of Coupling:
Data Coupling: If the dependency between the modules is based on the fact
that they communicate by passing only data, then the modules are said to be
data coupled. In data coupling, the components are independent of each other
and communicate through data. Module communications don’t contain tramp
data. Example-customer billing system.
Stamp Coupling: In stamp coupling, the complete data structure is passed from
one module to another module. Therefore, it involves tramp data. It may be
necessary due to efficiency factors- this choice was made by the insightful
designer, not a lazy programmer.
Control Coupling: If the modules communicate by passing control information,
then they are said to be control coupled. It can be bad if parameters indicate
completely different behavior and good if parameters allow factoring and
reuse of functionality. Example- sort function that takes comparison function
as an argument.
External Coupling: In external coupling, the modules depend on other
modules, external to the software being developed or to a particular type of
hardware. Ex- protocol, external file, device format, etc.
Common Coupling: The modules have shared data such as global data
structures. The changes in global data mean tracing back to all modules which
access that data to evaluate the effect of the change. So it has got
disadvantages like difficulty in reusing modules, reduced ability to control data
accesses, and reduced maintainability.
Content Coupling: In a content coupling, one module can modify the data of
another module, or control flow is passed from one module to the other
module. This is the worst form of coupling and should be avoided.
Layered design?
Layered design: Layered architectures are said to be the most common and
widely used architectural framework in software development. It is also known
as an n-tier architecture and describes an architectural pattern composed of
several separate horizontal layers that function together as a single unit of
software.
Layered technology is divided into four parts:
•A quality focus: It defines the continuous process improvement principles of
software. It provides integrity that means providing security to the software so
that data can be accessed by only an authorized person, no outsider can access
the data. It also focuses on maintainability and usability.
•Process: It is the foundation or base layer of software engineering. It is key
that binds all the layers together which enables the development of software
before the deadline or on time. Process defines a framework that must be
established for the effective delivery of software engineering technology. The
software process covers all the activities, actions, and tasks required to be
carried out for software development.
•Method: During the process of software development the answers to all
“how-to-do” questions are given by method. It has the information of all the
tasks which includes communication, requirement analysis, design modeling,
program construction, testing, and support.
• Tools: Software engineering tools provide a self-operating system for
processes and methods. Tools are integrated which means information created
by one tool can be used by another.
Approaches Function Oriented Design : Function Oriented Design is an
approach to software design where the design is decomposed into a set of
interacting units where each unit has a clearly defined function.
Structured Analysis: Structured analysis is a software engineering technique
that uses graphical diagrams to develop and portray system specifications that
are easily understood by users. These diagrams describe the steps that need to
occur and the data required to meet the design function of a particular
software.
Data Dictionary: The content that is not described in the DFD is described in
the data dictionary. It defines the data store and relevant meaning. A physical
data dictionary for data elements that flow between processes, between
entities, and between processes and entities may be included. This would also
include descriptions of data elements that flow external to the data stores.
State Transition Diagram: State transition diagram is similar to the dynamic
model. It specifies how much time the function will take to execute and data
access triggered by events. It also describes all of the states that an object can
have, the events under which an object changes state, the conditions that
must be fulfilled before the transition will occur and the activities were
undertaken during the life of an object.
ER Diagram: ER diagram specifies the relationship between data store. It is
basically used in database design. It basically describes the relationship
between different entities.
Data flow diagram (DFD):A data flow diagram (DFD) is a graphical or visual
representation using a standardized set of symbols and notations to describe a
business’s operations through data movement. They are often elements of a
formal methodology such as Structured Systems Analysis and Design Method
(SSADM).
Logical DFD: Logical data flow diagram mainly focuses on the system process.
It illustrates how data flows in the system. Logical DFD is used in various
organizations for the smooth running of system. Like in a Banking software
system, it is used to describe how data is moved from one entity to another.
Physical DFD: Physical data flow diagram shows how the data flow is actually
implemented in the system. Physical DFD is more specific and close to
implementation.
Components of Data Flow Diagram:
Entities: Entities include source and destination of the data. Entities are
represented by rectangle with their corresponding names.
Process: The tasks performed on the data is known as process. Process is
represented by circle. Somewhere round edge rectangles are also used to
represent pprocess
Data Storage: Data storage includes the database of the system. It is
represented by rectangle with both smaller sides missing or in other words
within two parallel lines.
Data Flow:The movement of data in the system is known as data flow. It is
represented with the help of arrow. The tail of the arrow is source and the
head of the arrow is destination.