Search for notes by fellow students, in your own course and all over the country.
Browse our notes for titles which look like what you need, you can preview any of the notes via a sample of the contents. After you're happy these are the notes you're after simply pop them into your shopping cart.
Document Preview
Extracts from the notes are below, to see the PDF you'll receive please use the links above
Software Engineering
Tutorial
Simply Easy Learning
About the tutorial
Software Engineering Tutorial
This tutorial provides you the basic understanding of software product, software
design and development process, software project management and design
complexities
...
Audience
This tutorial is designed for the readers pursuing education in software development
domain and all enthusiastic readers
...
Though, awareness
about
software
systems,
software
development
process
and
computer
fundamentals would be beneficial
...
Ltd
...
Ltd
...
We strive to update the contents of our website and tutorials as timely and as precisely as
possible, however, the contents may contain inaccuracies or errors
...
Ltd
...
If you discover any errors on our website or
in this tutorial, please notify us at contact@tutorialspoint
...
I
AUDIENCE
...
I
COPYRIGHT & DISCLAIMER
...
1
DEFINITIONS
...
2
SOFTWARE EVOLUTION LAWS
...
3
SOFTWARE PARADIGMS
...
4
Software Design Paradigm
...
5
NEED OF SOFTWARE ENGINEERING
...
6
Operational
...
6
Maintenance
...
8
SDLC ACTIVITIES
...
8
Requirement Gathering
...
9
System Analysis
...
9
Coding
...
9
Integration
...
10
Operation and Maintenance
...
10
Waterfall Model
...
11
Spiral Model
...
12
Big Bang Model
...
15
SOFTWARE PROJECT
...
15
SOFTWARE PROJECT MANAGER
...
16
i
Managing Project
...
17
PROJECT PLANNING
...
17
PROJECT ESTIMATION
...
19
Decomposition Technique
...
19
PROJECT SCHEDULING
...
20
PROJECT RISK MANAGEMENT
...
21
PROJECT EXECUTION AND MONITORING
...
22
CONFIGURATION MANAGEMENT
...
23
Change Control
...
24
Gantt Chart
...
25
Resource Histogram
...
26
SOFTWARE REQUIREMENTS
...
27
REQUIREMENT ENGINEERING PROCESS
...
27
Requirement Gathering
...
28
Software Requirement Validation
...
29
REQUIREMENT ELICITATION TECHNIQUES
...
30
Surveys
...
30
Task analysis
...
30
Brainstorming
...
31
Observation
...
31
SOFTWARE REQUIREMENTS
...
32
Non-Functional Requirements
...
33
SOFTWARE SYSTEM ANALYST
...
34
ii
SOFTWARE DESIGN BASICS
...
36
MODULARIZATION
...
37
Example
...
38
COHESION
...
39
DESIGN VERIFICATION
...
41
DATA FLOW DIAGRAM
...
41
DFD Components
...
42
STRUCTURE CHARTS
...
45
Example
...
47
Example
...
48
Example
...
49
Creating Decision Table
...
50
ENTITY-RELATIONSHIP MODEL
...
51
Requirement of Data Dictionary
...
52
Example
...
52
Data Store
...
53
SOFTWARE DESIGN STRATEGIES
...
54
FUNCTION ORIENTED DESIGN
...
55
OBJECT ORIENTED DESIGN
...
56
SOFTWARE DESIGN APPROACHES
...
57
Bottom-up Design
...
58
COMMAND LINE INTERFACE (CLI)
...
59
iii
GRAPHICAL USER INTERFACE
...
60
Application specific GUI components
...
62
GUI IMPLEMENTATION TOOLS
...
64
USER INTERFACE GOLDEN RULES
...
67
HALSTEAD'S COMPLEXITY MEASURES
...
68
FUNCTION POINT
...
70
External Output
...
71
External Interface Files
...
71
SOFTWARE IMPLEMENTATION
...
74
FUNCTIONAL PROGRAMMING
...
76
Coding Guidelines
...
77
SOFTWARE IMPLEMENTATION CHALLENGES
...
80
SOFTWARE VALIDATION
...
80
MANUAL VS AUTOMATED TESTING
...
81
Black-box testing
...
82
TESTING LEVELS
...
83
Integration Testing
...
84
Acceptance Testing
...
84
TESTING DOCUMENTATION
...
85
While Being Tested
...
85
TESTING VS
...
86
SOFTWARE MAINTENANCE OVERVIEW
...
87
COST OF MAINTENANCE
...
88
Software-end factors affecting Maintenance Cost
...
89
SOFTWARE RE-ENGINEERING
...
91
Reverse Engineering
...
92
Forward Engineering
...
93
Example
...
93
SOFTWARE CASE TOOLS OVERVIEW
...
100
COMPONENTS OF CASE TOOLS
...
101
Diagram tools
...
101
Project Management Tools
...
102
Analysis Tools
...
102
Configuration Management Tools
...
103
Programming Tools
...
103
Web Development Tools
...
103
Maintenance Tools
...
The term is made of two
words, software and engineering
...
A program is an executable code,
which serves some computational purpose
...
Software, when made for a specific requirement is called software product
...
Software engineering is an engineering branch associated with development of
software product using well-defined scientific principles, methods and procedures
...
Definitions
IEEE defines software engineering as:
1
Software Engineering Tutorial
(1) The application of a systematic, disciplined, quantifiable approach to
the development, operation, and maintenance of software; that is, the
application of engineering to software
...
Fritz Bauer, a German computer scientist, defines software engineering as:
“Software engineering is the establishment and use of sound engineering
principles in order to obtain economically software that is reliable and work
efficiently on real machines
...
This includes the
initial development of software and its maintenance and updates, till desired
software product is developed, which satisfies the expected requirements
...
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 the software product development
...
This process changes to the original software, till the desired
software is accomplished
...
Re-creating software from scratch and to go one-on-one with the requirement is
2
Software Engineering Tutorial
not feasible
...
Software Evolution Laws
Lehman has given laws for software evolution
...
Static-type (S-type) - This is a software, which works strictly according
to defined specifications and solutions
...
The s-type
software is least subjected to changes hence this is the simplest of all
...
2
...
This is defined by exactly what procedures can do
...
For example, gaming software
...
Embedded-type
(E-type)
-
This
software
works
closely
as
the
requirement of real-world environment
...
in the real world
situations
...
E-Type software evolution
Lehman has given eight laws for E-Type software evolution 1
...
2
...
3
...
, must be retained at any cost, to implement the
changes in the system
...
Continuing growth- In order for an E-type system intended to resolve
some business problem, its size of implementing the changes grows
according to the lifestyle changes of the business
...
Reducing quality - An E-type software system declines in quality unless
rigorously maintained and adapted to a changing operational environment
...
Feedback systems- The E-type software systems constitute multi-loop,
multi-level feedback systems and must be treated as such to be successfully
modified or improved
...
Self-regulation - E-type system evolution processes are self-regulating
with the distribution of product and process measures close to normal
...
Organizational stability - The average effective global activity rate in an
evolving E-type system is invariant over the lifetime of the product
...
There are many methods proposed and are implemented
...
These can be combined into various categories, though each of them is
contained in one another:
Programming paradigm is a subset of Software design paradigm which is further
a subset of Software development paradigm
...
It
includes various researches and requirement gathering which helps the software
product to build
...
This includes –
Coding
Testing
Integration
Need of Software Engineering
The need of software engineering arises because of higher rate of change in user
requirements and environment on which the software is working
...
Scalability- If the software process were not based on scientific and
engineering concepts, it would be easier to re-create new software than to
scale an existing one
...
But, cost of
the software remains high if proper process is not adapted
...
If the
nature of software is always changing, new enhancements need to be done
in the existing one
...
Quality Management- Better process of software development provides
better and quality software product
...
This software must satisfy on the following grounds:
Operational
Transitional
Maintenance
Well-engineered and crafted software is expected to have the following
characteristics:
Operational
This tells us how well the software works in operations
...
7
Software Engineering Tutorial
Software Development Life Cycle
2
Software Development Life Cycle, SDLC for short, is a well-defined, structured
sequence of stages in software engineering to develop the intended software
product
...
SDLC framework includes the following steps:
Communication
This is the first step where the user initiates the request for a desired software
product
...
Requirement Gathering
This step onwards the software development team works to carry on the project
...
The
requirements are contemplated and segregated into user requirements, system
requirements and functional requirements
...
Feasibility Study
After requirement gathering, the team comes up with a rough plan of software
process
...
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
...
The project team analyzes
the scope of the project and plans the schedule and resources accordingly
...
The inputs from users and information
gathered in requirement gathering phase are the inputs of this step
...
Engineers produce meta-data and data dictionaries, logical diagrams, data-flow
diagrams, and in some cases pseudo codes
...
The implementation of software
design starts in terms of writing program code in the suitable programming
language and developing error-free executable programs efficiently
...
Errors may ruin the software from critical level to its own removal
...
Early discovery of errors and their remedy is the key to reliable
software
...
This stage of SDLC is involved in the integration of software with
outer world entities
...
At times, software needs
post-installation configurations at user end
...
Operation and Maintenance
This phase confirms the software operation in terms of more efficiency and less
errors
...
The
software is maintained timely by updating the code according to the changes
taking place in user end environment or technology
...
Software Development Paradigm
The software development paradigm helps a developer to select a strategy to
develop the software
...
A few of software development paradigms or process
models are defined as follows:
Waterfall Model
Waterfall model is the simplest model of software development paradigm
...
That is, when the
first phase is finished then only the second phase will start and so on
...
This model does not work smoothly if there are
some issues left at the previous step
...
This model is best suited when developers already have designed and developed
similar software in the past and are aware of all its domains
...
It projects the
process of development in cyclic manner repeating every step after every cycle of
SDLC process
...
Then, on every next iteration, more features
and modules are designed, coded, tested, and added to the software
...
After each iteration, the management team can do work on risk management and
prepare for the next iteration
...
Spiral Model
Spiral model is a combination of both, iterative model and one of the SDLC model
...
This model considers risk, which often goes un-noticed by most other models
...
Next phase is of prototyping the software
...
Then one standard SDLC model is used to build the software
...
V – model
The major drawback of waterfall model is we move to the next stage only when
the previous one is finished and there was no chance to go back if something is
12
Software Engineering Tutorial
found wrong in later stages
...
At every stage, test plans and test cases are created to verify and validate the
product according to the requirement of that stage
...
Later, when the product is developed and is ready for testing, test
cases of this stage verify the software against its validity towards requirements at
this stage
...
This model is also known
as verification and validation model
...
It requires little planning, lots of
programming and lots of funds
...
As scientists say that after big bang lots of galaxies, planets, and
stars evolved just as an event
...
For this model, very small amount of planning is required
...
So the input requirements are arbitrary
...
14
Software Engineering Tutorial
Software Project Management
3
The job pattern of an IT company engaged in software development can be seen
split in two parts:
Software Creation
Software Project Management
A project is well-defined task, which is a collection of several operations done in
order to achieve a goal (for example, software development and delivery)
...
Project is not a routine activity or day-to-day operation
...
Project ends when its goal is achieved
...
Project needs adequate resources in terms of time, manpower, finance,
material, and knowledge-bank
...
Need of software project management
Software is said to be an intangible product
...
Most software products are tailor made to fit client’s
requirements
...
All such business and environmental constraints bring
15
Software Engineering Tutorial
risk in software development hence it is essential to manage software projects
efficiently
...
It is an essential
part of software organization to deliver quality product, keeping the cost within
client’s budget constrain and deliver the project as per scheduled
...
Any of the three factors can severely impact the other two
...
Software Project Manager
A software project manager is a person who undertakes the responsibility of
executing the software project
...
The project manager
may never directly involve in producing the end product but he controls and
manages the activities involved in production
...
Let us see few responsibilities that a project manager shoulders -
Managing People
Act as project leader
Lesion with stakeholders
Managing human resources
Setting up reporting hierarchy etc
...
Project
management activities may include:
Project Planning
Scope Management
Project Estimation
Project Planning
Software project planning is task, which is performed before the production of
software actually starts
...
Project planning may include the following:
Scope Management
It defines scope of the project; this includes all the activities, process need to be
done in order to make a deliverable software product
...
This makes project to
contain limited and quantifiable tasks, which can easily be documented and in turn
avoids cost and time overrun
...
17
Software Engineering Tutorial
Verify the scope
Control the scope by incorporating changes to the scope
Project Estimation
For an effective management, accurate estimation of various measures is a must
...
Project estimation may involve the following:
Software size estimation
Software size may be estimated either in terms of KLOC (Kilo Line of Code)
or by calculating number of function points in the software
...
Function points vary according to the user
or software requirement
...
For effort estimation software
size should be known
...
Time estimation
Once size and efforts are estimated, the time required to produce the
software can be estimated
...
Software tasks are divided into smaller
tasks, activities or events by Work Breakthrough Structure (WBS)
...
The sum of time required to complete all tasks in hours or days is the total
time invested to complete the project
...
For estimating project cost,
it is required to consider
Size of the software
Software quality
Hardware
Additional software or tools, licenses etc
...
Project manager can estimate the listed factors using two broadly recognized
techniques –
Decomposition Technique
This technique assumes the software as a product of various compositions
...
Function Points: Here the estimation is done on behalf of number of
function points in the software product
...
These
formulae are based on LOC or FPs
...
Putnam, which is based on Norden’s
frequency distribution (Rayleigh curve)
...
COCOMO
19
Software Engineering Tutorial
COCOMO stands for Constructive Cost Model, developed by Barry W
...
It divides the software product into three categories of software:
organic, semi-detached, and embedded
...
Project managers
tend to define various tasks, and project milestones and then arrange them
keeping various factors in mind
...
Arrangement of tasks
which lies out of critical path are less likely to impact over all schedule of the
project
...
This may include human resource, productive tools, and software
libraries
...
The shortage of resources hampers development of the project and
it can lag behind the schedule
...
It is therefore necessary to estimate and allocate adequate
resources for the project
...
Project Risk Management
Risk management involves all activities pertaining to identification, analyzing and
making provision for predictable and non-predictable risks in the project
...
Change in organizational management
...
Under-estimation of required time and resources
...
Risk Management Process
There are following activities involved in risk management process:
Identification - Make note of all possible risks, which may occur in the
project
...
Manage - Analyze the probability of occurrence of risks at various phases
...
Attempt to minimize their side-effects
...
Also monitor the effective steps taken to mitigate or avoid them
...
Execution needs monitoring in order to check whether everything is going
according to the plan
...
These measures include -
21
Software Engineering Tutorial
Activity Monitoring - All activities scheduled within some task can be
monitored on day-to-day basis
...
Status Reports - The reports contain status of activities and tasks
completed within a given time frame, generally a week
...
Milestones Checklist - Every project is divided into multiple phases where
major tasks are performed (milestones) based on the phases of SDLC
...
Project Communication Management
Effective communication plays vital role in the success of a project
...
Communication can be oral or written
...
It also considers
if any additional communication facilities are required
...
This keeps every one involved in the project up-to-date with project
progress and its status
...
This mechanism
ensures that input from various stakeholders is coming to the project
manager as their feedback
...
After closure, the team moves to next phase or project
...
IEEE defines it as “the process of identifying and defining the items in the system,
controlling the change of these items throughout their life cycle, recording and
reporting the status of items and change requests, and verifying the completeness
and correctness of items”
...
If they occur, the changes are addressed only with prior approval of
higher management, as there is a possibility of cost and time overrun
...
e
...
A phase is baselined when all activities
pertaining to it are finished and well documented
...
Configuration management is a discipline of organization administration, which
takes care of occurrence of any changes (process, requirement, technological,
strategical etc
...
CM keeps check on any changes done
in software
...
A change in the configuration of product goes through following steps
Identification - A change request arrives from either internal or external
source
...
Validation - Validity of the change request is checked and its handling
procedure is confirmed
...
Overall impact of the prospective change on
system is analyzed
...
It is decided if
the change is worth incorporation or not
...
Execution - If the previous phase determines to execute the change
request, this phase takes appropriate actions to execute the change,
through a thorough revision if necessary
...
This newly incorporated change in the
software is documented properly and the request is formally closed
...
There are tools available, which aid for effective project management
...
It represents project schedule
with respect to time periods
...
24
Software Engineering Tutorial
PERT Chart
Program Evaluation & Review Technique) (PERT) chart is a tool that depicts project
as network diagram
...
Events, which occur one after
another, show dependency of the later event over the previous one
...
They are connected by labeled arrows
depicting the sequence of tasks in the project
...
Resource
Histogram is an effective tool for staff planning and coordination
...
It also helps
to find out the shortest path or critical path to complete the project successfully
...
This tool shows
dependency of event assuming an event can proceed to next only if the previous
one is completed
...
Path
between start and end node is critical path which cannot be further reduced and
all events require to be executed in same order
...
Requirements convey the expectations of users from the software
product
...
Requirement Engineering
The process to gather the software requirements from client, analyze, and
document them is known as requirement engineering
...
Requirement Engineering Process
It is a four step process, which includes –
Feasibility Study
Requirement Gathering
Software Requirement Specification
Software Requirement Validation
Let us see the process briefly -
Feasibility study
When the client approaches the organization for getting the desired product
developed, it comes up with a rough idea about what all functions the software
must perform and which all features are expected from the software
...
This feasibility study is focused towards goal of the organization
...
It explores technical aspects of the
91
Software Engineering Tutorial
project and product such as usability, maintainability, productivity, and integration
ability
...
Requirement Gathering
If the feasibility report is positive towards undertaking the project, next phase
starts with gathering requirements from the user
...
Software Requirement Specification (SRS)
SRS is a document created by system analyst after the requirements are collected
from various stakeholders
...
The requirements received from client are written in natural language
...
SRS should come up with the following features:
User Requirements are expressed in natural language
...
Design description should be written in Pseudo code
...
Conditional and mathematical notations for DFDs etc
...
User might ask for illegal, impractical solution or
experts may interpret the requirements inaccurately
...
Requirements can be checked against following
conditions
If they can be practically implemented
If they are valid and as per functionality and domain of software
If there are any ambiguities
If they are complete
If they can be demonstrated
Requirement Elicitation Process
Requirement elicitation process can be depicted using the folloiwng diagram:
Requirements gathering - The developers discuss with the client and end
users and know their expectations from the software
...
Negotiation & discussion - If requirements are ambiguous or there are
some conflicts in requirements of various stakeholders, it is then negotiated
and discussed with the stakeholders
...
The requirements come from various stakeholders
...
Unrealistic requirements are compromised reasonably
...
Requirement Elicitation Techniques
Requirements Elicitation is the process to find out the requirements for an
intended software system by communicating with client, end users, system users,
and others who have a stake in the software system development
...
Some of them are explained
below:
29
Software Engineering Tutorial
Interviews
Interviews are strong medium to collect requirements
...
Non-structured (open) interviews, where information to gather is not
decided in advance, more flexible and less biased
...
Group interviews which are held between groups of participants
...
Surveys
Organization may conduct surveys among various stakeholders by querying about
their expectation and requirements from the upcoming system
...
A shortcoming of this technique is, if an option for some issue is not mentioned in
the questionnaire, the issue might be left unattended
...
If the client already has some software to perform certain
operation, it is studied and requirements of proposed system are collected
...
The expert people in the domain
can be a great help to analyze general and specific requirements
...
30
Software Engineering Tutorial
Prototyping
Prototyping is building user interface without adding detail functionality for user
to interpret the features of intended software product
...
If there is no software installed at client’s end for developer’s
reference and the client is not aware of its own requirements, the developer
creates a prototype based on initially mentioned requirements
...
The client feedback serves as an
input for requirement gathering
...
They observe the
actual working of the existing installed systems
...
The team itself draws some
conclusions which aid to form requirements expected from the software
...
Hence they must be clear, correct, and well-defined
...
31
Software Engineering Tutorial
Broadly software requirements should be categorized in two categories:
Functional Requirements
Requirements, which are related to functional aspect of software fall into this
category
...
EXAMPLES
Search option given to user to search from various invoices
...
Users can be divided into groups and groups can be given separate rights
...
Software is developed keeping downward compatibility intact
...
They are implicit or expected characteristics of software, which users
make assumption of
...
Should have : Enhancing the functionality of software
...
Wish list : These requirements do not map to any objectives of software
...
User Interface requirements
User Interface (UI) is an important part of any software or hardware or hybrid
system
...
UI is the
only way for users to perceive the system
...
Otherwise the functionalities of software system can not be used in
convenient way
...
User interface requirements are briefly mentioned below –
Content presentation
Easy Navigation
Simple interface
Responsive
Consistent UI elements
Feedback mechanism
Default settings
Purposeful layout
Strategical use of color and texture
...
Software System Analyst
System analyst in an IT organization is a person, who analyzes the requirement
of proposed system and ensures that requirements are conceived and documented
properly and acuurately
...
It is the responsibility of analyst to make sure that the developed
software meets the requirements of the client
...
Software Metrics provide measures for various aspects of software process and
software product
...
They
not only help to control the software development process but also aid to keep the
quality of ultimate product excellent
...
” By his saying, it is very clear how important software measures
are
...
Function Point Count is measure of the functionality provided by the
software
...
Complexity Metrics - McCabe’s Cyclomatic complexity quantifies the
upper bound of the number of independent paths in a program, which is
34
Software Engineering Tutorial
perceived as complexity of the program or its modules
...
Quality Metrics - Defects, their types and causes, consequence, intensity
of severity and their implications define the quality of the product
...
Process Metrics - In various phases of SDLC, the methods and tools used,
the company standards and the performance of development are software
process metrics
...
35
Software Engineering Tutorial
Software Design Basics
5
Software design is a process to transform user requirements into some suitable
form, which helps the programmer in software coding and implementation
...
The output of this
process can directly be used into implementation in programming languages
...
It tries to
specify how to fulfill the requirements mentioned in SRS
...
It identifies the software as a system with many
components interacting with each other
...
High-level Design - The high-level design breaks the ‘single entitymultiple component’ concept of architectural design into less-abstracted
view of sub-systems and modules and depicts their interaction with each
other
...
It recognizes
modular structure of each sub-system and their relation and interaction
among each other
...
It is more detailed towards modules and their implementations
...
91
Software Engineering Tutorial
Modularization
Modularization is a technique to divide a software system into multiple discrete
and independent modules, which are expected to be capable of carrying out
task(s) independently
...
Designers tend to design modules such that they can be executed and/or
compiled separately and independently
...
Advantage of modularization:
Smaller components are easier to maintain
Program can be divided based on functional aspects
Desired level of abstraction can be brought in the program
Components with high cohesion can be re-used again
Concurrent execution can be made possible
Desired from security aspect
Concurrency
Back in time, all software are meant to be executed sequentially
...
Say, a
software has multiple modules, then only one of all the modules can be found
active at any time of execution
...
In other words, concurrency provides capability to the software to
execute more than one part of code in parallel to each other
...
Example
The spell check feature in word processor is a module of software, which runs
along side the word processor itself
...
As we know, modules are set of
instructions put together in order to achieve some tasks
...
There
are measures by which the quality of a design of modules and their interaction
among them can be measured
...
Cohesion
Cohesion is a measure that defines the degree of intra-dependability within
elements of a module
...
There are seven types of cohesion, namely –
Co-incidental cohesion - It is unplanned and random cohesion, which
might be the result of breaking the program into smaller modules for the
sake of modularization
...
Logical cohesion - When logically categorized elements are put together
into a module, it is called logical cohesion
...
Procedural cohesion - When elements of module are grouped together,
which are executed sequentially in order to perform a task, it is called
procedural cohesion
...
Sequential cohesion - When elements of module are grouped because
the output of one element serves as input to another and so on, it is called
sequential cohesion
...
Elements of module in functional
cohesion are grouped because they all contribute to a single well-defined
function
...
38
Software Engineering Tutorial
Coupling
Coupling is a measure that defines the level of inter-dependability among modules
of a program
...
The lower the coupling, the better the program
...
Common coupling- When multiple modules have read and write access to
some global data, it is called common or global coupling
...
Stamp coupling- When multiple modules share common data structure
and work on different part of it, it is called stamp coupling
...
If a module passes data
structure as parameter, then the receiving module should use all its
components
...
Design Verification
The output of software design process is design documentation, pseudo codes,
detailed logic diagrams, process diagrams, and detailed description of all
functional or non-functional requirements
...
It is then becomes necessary to verify the output before proceeding to the next
phase
...
If the outputs of design phase are in formal
notation form, then their associated tools for verification should be used otherwise
a thorough design review can be used for verification and validation
...
A good design review is important for
good software design, accuracy, and quality
...
Requirement specifications
specify all functional and non-functional expectations from the software
...
Software analysis and design is the intermediate stage, which helps humanreadable requirements to be transformed into actual code
...
It is capable of depicting incoming data flow, outgoing data
flow, and stored data
...
There is a prominent difference between DFD and Flowchart
...
DFDs depict flow of data in the system at
various levels
...
Types of DFD
Data Flow Diagrams are either Logical or Physical
...
For example in a banking software system, how
data is moved between different entities
...
It is more specific and close to the
implementation
...
Entities
are represented by rectangles with their respective names
...
Data Storage - There are two variants of data storage - it can either be
represented as a rectangle with absence of both smaller sides or as an
open-sided rectangle with only one side missing
...
Data
movement is shown from the base of arrow as its source towards head of
the arrow as destination
...
Level 0 DFDs are also known as context level DFDs
...
Level 1 DFD depicts basic modules in the system and flow of data among
various modules
...
42
Software Engineering Tutorial
Level 2 - At this level, DFD shows how data flows inside the modules
mentioned in Level 1
...
Structure Charts
Structure chart is a chart derived from Data Flow Diagram
...
It breaks down the entire system into lowest
functional modules, describes functions and sub-functions of each module of the
system to a greater detail than DFD
...
At each layer a
specific task is performed
...
A control module
branches to more than one sub-module
...
43
Software Engineering Tutorial
Condition - It is represented by small diamond at base of the module
...
Jump - An arrow is shown pointing inside the module to depict that the
control will jump in the middle of the sub-module
...
All sub-modules
covered by loop repeat execution of module
...
Control flow - A directed arrow with filled circle at the end represents
control flow
...
HIPO model was developed by IBM in year 1970
...
Analyst
uses HIPO diagram in order to obtain high-level view of system functions
...
It depicts the
functions performed by system
...
Their
graphical
representation makes it easier for designers and managers to get the pictorial idea
of the system structure
...
Example
Both parts of HIPO diagram, Hierarchical presentation, and IPO Chart are used for
structure designing of software program as well as documentation of the same
...
It is the responsibility of higher software
management to provide accurate information to the programmers to develop
accurate yet fast code
...
Hence, analysts and designers of the software come up with tools such as
Structured English
...
Structured English helps the programmer to write error-free
code
...
Structured English uses plain English words in structured programming paradigm
...
The following are some tokens of structured programming:
IF-THEN-ELSE,
DO-WHILE-UNTIL
Analyst uses the same variable and data name, which are stored in Data
Dictionary, making it much simpler to write and understand the code
...
This procedure to authenticate customer can be written in
Structured English as:
Enter Customer_Name
SEEK Customer_Name in Customer_Name_DB file
IF Customer_Name found THEN
Call procedure USER_PASSWORD_AUTHENTICATE()
ELSE
PRINT error message
Call procedure NEW_CUSTOMER_REQUEST()
ENDIF
47
Software Engineering Tutorial
The code written in Structured English is more like day-to-day spoken English
...
Structured English is
independent of programming language
...
It may be considered
as augmented programming language, full of comments, and descriptions
...
Pseudo code contains more programming details than Structured English
...
48
Software Engineering Tutorial
Example
Program to print Fibonacci up to n numbers
...
It is a powerful tool to debug and prevent errors
...
Creating Decision Table
To create the decision table, the developer must follow basic four steps:
Identify all possible conditions to be addressed
Determine actions for all identified conditions
Create Maximum possible rules
49
Software Engineering Tutorial
Define action for each rule
Decision Tables should be verified by end-users and can lately be simplified by
eliminating duplicate rules and actions
...
We begin by identifying all problems that can arise while starting the
internet and their respective possible solutions
...
Conditions/Actions
Shows Connected
N
N
N
Y
Y
Y
Y
Ping is Working
N
N
Y
Y
N
N
Y
Y
Y
N
Y
N
Y
N
Y
N
Check network cable
X
Check internet router
Actions
N
Opens Website
Conditions
Rules
X
X
X
X
Restart Web Browser
Contact Service provider
X
X
X
X
X
X
X
Do no action
Table : Decision Table – In-house Internet Troubleshooting
Entity-Relationship Model
Entity-Relationship model is a type of database model based on the notion of real
world entities and relationship among them
...
ER Model creates a set of entities with their attributes, a set
of constraints and relation among them
...
ER Model can be
represented as follows :
Entity - An entity in ER Model is a real world being, which has some
properties called attributes
...
For example, Consider a school database
...
Student has various attributes like name, id, age and class etc
...
Relationships are mapped with entities in various ways
...
Mapping cardinalities:
one to one
one to many
many to one
many to many
Data Dictionary
Data dictionary is the centralized collection of information about data
...
Data dictionary has rigorous definitions of all names in order to facilitate user
and software designers
...
It
is created along with DFD (Data Flow Diagram) model of software program and is
expected to be updated whenever DFD is changed or updated
...
Data dictionary removes any chances of ambiguity
...
Data dictionary provides a way of documentation for the complete database
system in one place
...
Contents
Data dictionary should contain information about the following:
Data Flow
Data Structure
Data Elements
Data Stores
Data Processing
Data Flow is described by means of DFDs as studied earlier and represented in
algebraic form as described
...
with the following details:
Primary Name
Secondary Name (Alias)
Use-case (How and where to use)
52
Software Engineering Tutorial
Content Description (Notation etc
...
)
Data Store
It stores the information from where the data enters into the system and exists
out of the system
...
o
Internal to software
...
Tables
o
Naming convention
o
Indexing property
Data Processing
There are two types of Data Processing:
Logical: As user sees it
Physical: As software sees it
53
Software Engineering Tutorial
Software Design Strategies
7
Software design is a process to conceptualize the software requirements into
software implementation
...
While the software is being
conceptualized, a plan is chalked out to find the best possible design for
implementing the intended solution
...
Let us study them briefly:
Structured Design
Structured design is a conceptualization of problem into several well-organized
elements of solution
...
Benefit of
structured design is, it gives better understanding of how the problem is being
solved
...
Structured design is mostly based on ‘divide and conquer’ strategy where a
problem is broken into several small problems and each small problem is
individually solved until the whole problem is solved
...
Structured
design emphasis that these modules be well organized in order to achieve precise
solution
...
They communicate with each other
...
Coupling - communication between different modules
...
91
Software Engineering Tutorial
Function Oriented Design
In function-oriented design, the system comprises of many smaller sub-systems
known as functions
...
The system is considered as top view of all functions
...
This design mechanism divides the whole system into smaller functions, which
provides means of abstraction by concealing the information and their operation
...
Another characteristic of functions is that when a program calls a function, the
function changes the state of the program, which sometimes is not acceptable by
other modules
...
Design Process
The whole system is seen as how data flows in the system by means of data
flow diagram
...
The entire system is logically broken down into smaller units known as
functions on the basis of their operation in the system
...
Object Oriented Design
Object Oriented Design (OOD) works around the entities and their characteristics
instead of functions involved in the software system
...
The whole concept of software solution
revolves around the engaged entities
...
For example, person, banks, company, and customers are treated as
objects
...
55
Software Engineering Tutorial
Classes - A class is a generalized description of an object
...
Class defines all the attributes, which an object can have
and methods, which defines the functionality of the object
...
Encapsulation - In OOD, the attributes (data variables) and methods
(operation on the data) are bundled together is called encapsulation
...
This is called information hiding
...
This
property of OOD is known as inheritance
...
Polymorphism - OOD languages provide a mechanism where methods
performing similar tasks but vary in arguments, can be assigned same
name
...
Depending upon how the function is
invoked, respective portion of the code gets executed
...
Though
it varies according to design approach (function oriented or object oriented, yet It
may have the following steps involved:
A solution design is created from requirement or previous used system
and/or system sequence diagram
...
Class hierarchy and relation among them is defined
...
56
Software Engineering Tutorial
Software Design Approaches
Here are two generic approaches for software designing:
Top Down Design
We know that a system is composed of more than one sub-systems and it contains
a number of components
...
Top-down design takes the whole software system as one entity and then
decomposes it to achieve more than one sub-system or component based on some
characteristics
...
This process keeps on running until the lowest level of
system in the top-down hierarchy is achieved
...
When all the components are composed the whole
system comes into existence
...
Bottom-up Design
The bottom up design model starts with most specific and basic components
...
It keeps creating higher level components until the desired system
is not evolved as one single component
...
Bottom-up strategy is more suitable when a system needs to be created from
some existing system, where the basic primitives can be used in the newer
system
...
Instead,
a good combination of both is used
...
User can manipulate and control the software as well as
hardware by means of user interface
...
User interface is part of software and is designed in such a way that it is expected
to provide the user insight of the software
...
UI can be graphical, text-based, audio-video based, depending upon the
underlying hardware and software combination
...
The software becomes more popular if its user interface is:
Attractive
Simple to use
Responsive in short time
Clear to understand
Consistent on all interfacing screens
UI is broadly divided into two categories:
Command Line Interface
Graphical User Interface
Command Line Interface (CLI)
CLI has been a great tool of interaction with computers until the video display
monitors came into existence
...
It is the minimum interface a software can provide to its users
...
The user needs to remember the syntax of command
and its use
...
91
Software Engineering Tutorial
A command is a text-based reference to set of instructions, which are expected to
be executed by the system
...
CLI uses less amount of computer resource as compared to GUI
...
It is generated by the software system
...
Cursor is mostly found in
blinking state
...
Command - A command is an executable instruction
...
Output on command execution is shown inline on the
screen
...
59
Software Engineering Tutorial
Graphical User Interface
Graphical User Interface (GUI) provides the user graphical means to interact with
the system
...
Using GUI,
user interprets the software
...
With advancing
technology, the programmers and designers create complex GUI designs that
work with more efficiency, accuracy, and speed
...
Every graphical component provides a way to work with the system
...
Contents in a
window can be displayed in the form of icons or lists, if the window represents file
structure
...
Windows can be minimized, resized or maximized to the size of screen
...
A window may contain another
window of the same application, called child window
...
Tabbed Document Interface
has come up to open multiple documents in the same window
...
All modern webbrowsers use this feature
...
The
menu can be programmed to appear or hide on mouse clicks
...
When
these icons are clicked or double clicked, the application window is opened
...
Cursor - Interacting devices such as mouse, touch pad, digital pen are
represented in GUI as cursors
...
Cursors are also named pointers in GUI
systems
...
Application specific GUI components
A GUI of an application contains one or more of the listed GUI elements:
Application Window - Most application windows uses the constructs
supplied by operating systems but many use their own customer created
windows to contain the contents of application
...
For Example: Application generate a
dialogue to get confirmation from user to delete a file
...
Buttons - They imitate real life buttons and are used to submit inputs to
the software
...
Only one can be
selected among all offered
...
When an option is selected, the
box is marked as checked
...
List-box - Provides list of available items for selection
...
Other impressive GUI components are:
Sliders
Combo-box
Data-grid
Drop-down list
User Interface Design Activities
There are a number of activities performed for designing user interface
...
Any model can be used
for GUI implementation among Waterfall, Iterative or Spiral Model
...
GUI Requirement Gathering - The designers may like to have list of all
functional and non-functional requirements of GUI
...
User Analysis - The designer studies who is going to use the software GUI
...
If user is technical savvy,
advanced and complex GUI can be incorporated
...
Task Analysis - Designers have to analyze what task is to be done by the
software solution
...
Tasks
can be represented in hierarchical manner taking one major task and
dividing it further into smaller sub-tasks
...
Flow of information among sub-tasks determines the flow of
GUI contents in the software
...
It is then self-tested by the developers
...
Organization can have
in-house inspection, direct involvement of users and release of beta version
are few of them
...
GUI Implementation Tools
There are several tools available using which the designers can create entire GUI
on a mouse click
...
GUI implementation tools provide powerful array of GUI controls
...
There are different segments of GUI tools according to their different use and
platform
...
Here is a list of few tools which
come handy to build GUI:
FLUID
AppInventor (Android)
LucidChart
Wavemaker
Visual Studio
User Interface Golden rules
The following rules are mentioned to be the golden rules for GUI design, described
by Shneiderman and Plaisant in their book (Designing the User Interface)
...
Identical terminology should be used in
prompts, menus, and help screens
...
Enable frequent users to use short-cuts - The user’s desire to reduce
the number of interactions increases with the frequency of use
...
64
Software Engineering Tutorial
Offer informative feedback - For every operator action, there should be
some system feedback
...
Design dialog to yield closure - Sequences of actions should be
organized into groups with a beginning, middle, and end
...
Offer simple error handling - As much as possible, design the system so
the user will not make a serious error
...
Permit easy reversal of actions - This feature relieves anxiety, since the
user knows that errors can be undone
...
The units of reversibility may be a single
action, a data entry, or a complete group of actions
...
Design the system to make users the initiators of
actions rather than the responders
...
66
Software Engineering Tutorial
Software Design Complexity
9
The term complexity stands for state of events or things, which have multiple
interconnected links and highly complicated structures
...
Software design complexity is difficult to assess without using complexity metrics
and measures
...
Halstead's Complexity Measures
In 1977, Mr
...
Halstead’s metrics depends upon the actual implementation of
program and its measures, which are computed directly from the operators and
operands from source code, in static manner
...
According to Halstead, “A computer program is an implementation of an algorithm
considered to be a collection of tokens which can be classified as either operators
or operands”
...
He defines various indicators to check complexity of module
...
Cyclomatic Complexity Measures
Every program encompasses statements to execute in order to perform some task
and other decision-making statements that decide, what statements need to be
executed
...
If we compare two programs of same size, the one with more decision-making
statements will be more complex as the control of program jumps frequently
...
It is graph driven model that is based on decision-making
constructs of program such as if-else, do-while, repeat-until, switch-case and goto
statements
...
Create nodes representing each of these nodes
...
To calculate Cyclomatic complexity of a program module, we use the formula V(G) = e – n + 2
Where:
e is total number of edges
n is total number of nodes
The Cyclomatic complexity of the above module is
e = 10
n=8
Cyclomatic Complexity = 10 - 8 + 2
69
Software Engineering Tutorial
=4
According to P
...
Function Point
It is widely used to measure the size of software
...
Features and functionality of the system are
used to measure the software complexity
...
To
consider the complexity of software each parameter is further categorized as
simple, average or complex
...
Uniqueness of input is measured, as no two inputs should have same formats
...
Simple - if input count is low and affects less internal files
Complex - if input count is high and affects more internal files
70
Software Engineering Tutorial
Average - in-between simple and complex
...
Output is
considered unique if their output format and/or processing are unique
...
Logical Internal Files
Every software system maintains internal files in order to maintain its functional
information and to function properly
...
This logical data may contain both functional data and control data
...
External Interface Files
Software system may need to share its files with some external software or it may
need to pass the file for processing or as parameter to some function
...
Simple - if number of record types in shared file are low
Complex - if number of record types in shared file are high
Average - in between simple and complex
...
The complexity of a query is more than External Input and
External Output
...
Simple - if query needs low processing and yields small amount of output
data
Complex - if query needs high process and yields large amount of output
data
71
Software Engineering Tutorial
Average - in between simple and complex
...
The table below mentions the weightage given to each parameter:
Parameter
Simple
Average
Complex
Inputs
3
4
6
Outputs
4
5
7
Enquiry
3
4
6
Files
7
10
15
Interfaces
5
7
10
The table above yields raw Function Points
...
System is described using fourteen
different characteristics:
Data communications
Distributed processing
Performance objectives
Operation configuration load
Transaction rate
Online data entry,
End user efficiency
Online update
Complex processing logic
Re-usability
Installation ease
Operational ease
Multiple sites
Desire to facilitate changes
These characteristics factors are then rated from 0 to 5, as mentioned below:
No influence
72
Software Engineering Tutorial
Incidental
Moderate
Average
Significant
Essential
All ratings are then summed up as N
...
It is used to calculate Complexity
Adjustment Factors (CAF), using the following formulae:
CAF = 0
...
01N
Then,
Delivered Function Points (FP)= CAF x Raw FP
This FP can then be used in various metrics, such as:
Cost = $ / FP
Quality = Errors / FP
Productivity = FP / person-month
73
Software Engineering Tutorial
Software Implementation
10
In this chapter, we will study about programming methods, documentation and
challenges in software implementation
...
Gradually, it becomes next to impossible to remember the
flow of program
...
The solution to this is structured programming
...
Structured programming states how the program shall be coded
...
Top-down analysis - A software is always made to perform some rational
work
...
Thus
it is very important that we understand how to solve the problem
...
Each problem is individually solved and
steps are clearly stated about how to solve the problem
...
Modular Programming - While programming, the code is broken down
into smaller group of instructions
...
Modular programming based on the
understanding of top-down analysis
...
Jumps are prohibited and modular format is encouraged in
structured programming
...
Structured Coding - In reference with top-down analysis, structured
coding sub-divides the modules into further smaller units of code in the
91
Software Engineering Tutorial
order of their execution
...
Functional Programming
Functional programming is style of programming language, which uses the
concepts of mathematical functions
...
In procedural
languages, the flow of the program runs through procedures, i
...
the control of
program is transferred to the called procedure
...
In procedural programming, it is possible for a procedure to produce different
results when it is called with the same argument, as the program itself can be in
different state while calling it
...
Functional programming provides means of computation as mathematical
functions, which produces results irrespective of program state
...
Functional programming uses the following concepts:
First class and High-order functions - These functions have capability to
accept another function as argument or they return other functions as results
...
Recursion - Recursion is a programming technique where a function calls
itself and repeats the program code in it unless some pre-defined condition
matches
...
Strict evaluation - It is a method of evaluating the expression passed to
a function as an argument
...
Strict evaluation
always evaluates the expression before invoking the function
...
λ-calculus - Most functional programming languages use λ-calculus as
their type systems
...
75
Software Engineering Tutorial
Common Lisp, Scala, Haskell, Erlang, and F# are some examples of functional
programming languages
...
When multiple programmers work on the same software project, they
frequently need to work with the program code written by some other developer
...
An appropriate programming style includes using function and variable names
relevant to the intended task, using well-placed indentation, commenting code for
the convenience of reader and overall presentation of code
...
Also, proper coding style helps ease the documentation
and updation
...
The following coding elements may be defined under coding guidelines of an
organization:
Naming conventions - This section defines how to name functions,
variables, constants and global variables
...
Whitespace - It is generally omitted at the end of line
...
For example, assignment operator ‘=’ should have space
before and after it, as in “x = 2”
...
Line length and wrapping - Defines how many characters should be there
in one line, mostly a line is 80 characters long
...
76
Software Engineering Tutorial
Functions - This defines how functions should be declared and invoked,
with and without parameters
...
Comments - This is one of the important coding components, as the
comments included in the code describe what the code actually does and
all other associated descriptions
...
Software Documentation
Software documentation is an important part of software process
...
Software documentation also provides information
about how to use the product
...
This document contains all the functional, non-functional
and behavioral description of the intended software
...
Generally it is stored in the form of
spreadsheet or word processing document with the high-end software
management team
...
Most test-cases
are built directly from requirement documentation
...
It
contains: (a) High-level
software
architecture, (b) Software
design
details, (c) Data flow diagrams, (d) Database design
These documents work as repository for developers to implement the
software
...
77
Software Engineering Tutorial
Technical documentation - These documentations are maintained by the
developers and actual coders
...
While writing the code, the programmers also
mention objective of the code, who wrote it, where will it be required, what
it does and how it does, what other resources the code uses, etc
...
It enhances re-use capability of
the code
...
There are various automated tools available and some comes with the
programming language itself
...
User documentation - This documentation is different from all the above
explained
...
But user
documentation explains how the software product should work and how it
should be used to get the desired results
...
Software Implementation Challenges
There are some challenges faced by the development team while implementing
the software
...
Still, to bring the
cost down of end product, the organization management prefers to re-use
the code, which was created earlier for some other software
...
Version Management - Every time a new software is issued to the
customer, developers have to maintain version and configuration related
documentation
...
Target-Host - The software program, which is being developed in the
organization, needs to be designed for host machines at the customers end
...
79
Software Engineering Tutorial
Software Testing Overview
11
Software Testing is evaluation of the software against requirements gathered from
users and system specifications
...
Software
testing comprises of Validation and Verification
...
It is carried out at the end of the SDLC
...
Validation ensures the product under development is as per the user
requirements
...
Validation emphasizes on user requirements
...
Verification ensures the product being developed is according to design
specifications
...
Target of the test are
Errors - These are actual coding mistakes made by developers
...
91
Software Engineering Tutorial
Fault - When error exists fault occurs
...
Failure - failure is said to be the inability of the system to perform the
desired task
...
Manual Vs Automated Testing
Testing can either be done manually or using an automated testing tool:
Manual - This testing is performed without taking help of automated
testing tools
...
Manual testing is time and resource consuming
...
Major portion of testing involves
manual testing
...
The limitations with manual testing can be overcome using
automated test tools
...
This can
be easily done with manual testing
...
There are software and hardware tools which helps tester in conducting load
testing, stress testing, regression testing
...
Functionality testing
2
...
The other side is known as white-box
testing where not only functionality is tested but the way it is implemented is also
analyzed
...
Every single
possible value in the range of the input and output values is tested
...
Black-box testing
It is carried out to test functionality of the program and also called ‘Behavioral’
testing
...
On providing input, if the output matches with the desired results, the
program is tested ‘ok’, and problematic otherwise
...
Black-box testing techniques:
Equivalence class - The input is divided into similar classes
...
Boundary values - The input is divided into higher and lower end values
...
Cause-effect graphing - In both previous methods, only one input value
at a time is tested
...
Pair-wise Testing - The behavior of software depends on multiple
parameters
...
State-based testing - The system changes state on provision of input
...
White-box testing
It is conducted to test program and its implementation, in order to improve code
efficiency or structure
...
82
Software Engineering Tutorial
In this testing method, the design and structure of the code are known to the
tester
...
The below are some White-box testing techniques:
Control-flow testing - The purpose of the control-flow testing to set up
test cases which covers all statements and branch conditions
...
Data-flow testing - This testing technique emphasis to cover all the data
variables included in the program
...
Testing Levels
Testing itself may be defined at various levels of SDLC
...
Before jumping on the next stage, a stage is
tested, validated and verified
...
Software is tested on various levels -
Unit Testing
While coding, the programmer performs some tests on that unit of program to
know if it is error free
...
Unit testing helps developers decide that individual units of the program are
working as per requirement and are error free
...
For example,
argument passing and data updation etc
...
This can be
accomplished using one or more of the following tests:
Functionality testing - Tests all functionalities of the software against the
requirement
...
It
tests the effectiveness and average time taken by the software to do desired
task
...
Security & Portability - These tests are done when the software is meant
to work on various platforms and accessed by number of persons
...
This is
important because even if the software matches all user requirements and if user
does not like the way it appears or works, it may be rejected
...
They try to
find out how user would react to some action in software and how the
system should respond to inputs
...
This is not as yet the delivered product
...
Regression Testing
Whenever a software product is updated with new code, feature or functionality,
it is tested thoroughly to detect if there is any negative impact of the added code
...
Testing Documentation
Testing documents are prepared at different stages -
84
Software Engineering Tutorial
Before Testing
Testing starts with test cases generation
...
Test Strategy document - This mentions detail aspects of test team,
responsibility matrix and rights/responsibility of test manager and test
engineer
...
As new requirements come, they are
added to this matrix
...
They can be traced forward and backward
...
It includes Unit test plan, Integration test plan, System test plan
and Acceptance test plan
...
Test case report - This document contains test case report as a result of
the test
...
After Testing
The following documents may be generated after testing :
Test summary - This test summary is collective analysis of all test reports
and logs
...
The software is released under version control system if it is
ready to launch
...
Quality Control & Assurance and Audit
We need to understand that software testing is different from software quality
assurance, software quality control and software auditing
...
This monitoring is done to make sure
that proper software development methods were followed
...
It may include functional and non-functional aspects of
software product, which enhance the goodwill of the organization
...
Software audit - This is a review of procedure used by the organization to
develop the software
...
The purpose of software audit is to check that software and its
development process, both conform standards, rules and regulations
...
It stands for
all the modifications and updations done after the delivery of software product
...
Client Requirements - Over the time, customer may ask for new features
or functions in the software
...
Organization Changes - If there is any business level change at client
end, such as reduction of organization strength, acquiring another
company, organization venturing into new business, need to modify in the
original software may arise
...
It may
be just a routine maintenance tasks as some bug discovered by some user or it
may be a large event in itself based on maintenance size or nature
...
Adaptive Maintenance - This includes modifications and updations
applied to keep the software product up-to date and tuned to the ever
changing world of technology and business environment
...
It includes
new features, new user requirements for refining the software and improve
its reliability and performance
...
It aims to attend problems, which
are not significant at this moment but may cause serious issues in future
...
A study on estimating
software maintenance found that the cost of maintenance is as high as 67% of
the cost of entire software process cycle
...
There are various factors, which trigger maintenance cost go high, such
as:
Real-world factors affecting Maintenance Cost
The standard age of any software is considered up to 10 to 15 years
...
88
Software Engineering Tutorial
As technology advances, it becomes costly to maintain old software
...
Often, changes made can easily hurt the original structure of the software,
making it hard for any subsequent changes
...
Software-end factors affecting Maintenance Cost
Structure of Software Program
Programming Language
Dependence on external environment
Staff reliability and availability
Maintenance Activities
IEEE provides a framework for sequential maintenance process activities
...
These activities go hand-in-hand with each of the following phase:
Identification & Tracing - It involves activities pertaining to identification
of requirement of modification or maintenance
...
Here, the maintenance
type is classified also
...
If probable impact is severe,
alternative solution is looked for
...
The
cost
of
modification/maintenance is analyzed and estimation is concluded
...
Test
cases are created for validation and verification
...
Every programmer is expected to do unit
testing in parallel
...
Integration testing is also carried out between new modules and
the system
...
Acceptance Testing - After testing the system internally, it is tested for
acceptance with the help of users
...
Delivery - After acceptance test, the system is deployed all over the
organization either by small update package or fresh installation of the
system
...
Training facility is provided if required, in addition to the hard copy of user
manual
...
It is aided with version control tools to control
versions, semi-version or patch management
...
It is a thorough
process where the design of software is changed and programs are re-written
...
As the hardware become obsolete, updating of software becomes a
headache
...
For example, initially Unix was developed in assembly language
...
Other than this, sometimes programmers notice that few parts of software need
more maintenance than others and they also need re-engineering
...
Is it whole software or a part of it?
Perform Reverse Engineering, in order to obtain specifications of existing
software
...
For example, changing functionoriented programs into object-oriented programs
...
Apply Forward engineering concepts in order to get re-engineered
software
...
This process can be seen as reverse SDLC
model, i
...
we try to get higher abstraction level by analyzing lower abstraction
levels
...
Designers then do reverse engineering by looking at the code and try to
get the design
...
Thus,
going in reverse from code to system specification
...
It is all about
re-arranging the source code, either in same programming language or from one
programming language to a different one
...
Re-structuring does not impact the functionality of the software but enhance
reliability and maintainability
...
The dependability of software on obsolete hardware platform can be removed via
re-structuring
...
It assumes that there was some software engineering already done in the past
...
92
Software Engineering Tutorial
Component reusability
A component is a part of software program code, which executes an independent
task in the system
...
Example
The login procedures used on the web can be considered as components, printing
system in software can be seen as a component of the software
...
e
...
In OOP, the objects are designed are very specific to their concern and have fewer
chances to be used in some other software
...
There is a whole new vertical, which is based on re-use of software component,
and is known as Component Based Software Engineering (CBSE)
...
Component level - Where sub-system of an application is used
...
Software components provide interfaces, which can be used to establish
communication among different components
...
93
Software Engineering Tutorial
Requirement
Specification -
The
functional
and
non-functional
requirements are specified, which a software product must comply to, with
the help of existing system, user input or both
...
Basic architecture of system as
a whole and its sub-systems are created
...
One
complete software design turns into a collection of a huge set of
components working together
...
Incorporate Components - All matched components are packed together
to shape them as complete software
...
It means, development
and maintenance of software projects with help of various automated software
tools
...
CASE tools are used by software project managers, analysts and
engineers to develop software system
...
Use of CASE tools accelerates the development of project to produce desired result
and helps to uncover flaws before moving ahead with next stage in software
development
...
Central repository is a central place of storage where product specifications,
requirement documents, related reports and diagrams, other useful
information regarding management is stored
...
100
Software Engineering Tutorial
Upper Case Tools - Upper CASE tools are used in planning, analysis and
design stages of SDLC
...
Integrated Case Tools - Integrated CASE tools are helpful in all the stages
of SDLC, from Requirement gathering to Testing and documentation
...
Scope of Case Tools
The scope of CASE tools goes throughout the SDLC
...
For example, Flow Chart Maker tool for creating state-of-the-art flowcharts
...
Process modeling tools help the managers to choose a
process model or modify it as per the requirement of software product
...
Managers have to strictly comply project
execution with every mentioned step in software project management
...
For example, Creative Pro Office, Trac Project,
Basecamp
...
Documentation tools generate documents for technical users and end users
...
The end user documents describe the functioning and how-to of the system
such as user manual
...
Analysis Tools
These
tools
help
to
gather
requirements,
automatically
check
for
any
inconsistency, inaccuracy in the diagrams, data redundancies or erroneous
omissions
...
Design Tools
These tools help software designers to design the block structure of the software,
which may further be broken down in smaller modules using refinement
techniques
...
For example, Animated Software Design
...
Configuration Management
tools deal with –
Version and revision management
Baseline configuration management
Change control management
CASE tools help in this by automatic tracking, version management and release
management
...
102
Software Engineering Tutorial
Change Control Tools
These tools are considered as a part of configuration management tools
...
CASE tools automate change tracking, file management, code
management and more
...
Programming Tools
These
tools
consist
of
programming
environments
like
IDE
(Integrated
Development Environment), in-built modules library and simulation tools
...
For example, Cscope to search code in C, Eclipse
...
Prototype provides initial look and feel of the product and simulates few aspect of
actual product
...
They can create
hardware independent user interfaces and design
...
In addition, they provide
simulation of software prototype
...
Web Development Tools
These tools assist in designing web pages with all allied elements like forms, text,
script, graphic and so on
...
For example, Fontello, Adobe
Edge Inspect, Foundation 3, Brackets
...
QA tools consist of
configuration and change control tools and software testing tools
...
Maintenance Tools
Software maintenance includes modifications in the software product after it is
delivered
...
For example, Bugzilla for defect
tracking, HP Quality Center