SE Course Pack Final
SE Course Pack Final
2 Syllabus 4
3 EvaluationCriteria 6
4 BooksRecommendation 7
5 SessionPlan 8-13
• DefinitionandconceptofOS
• HistoryofOS
• ImportanceandfunctionofOperatingsystem.
• TypesofOS
• Views-commandlanguage users view, system call users
view structure of OS
• commandlineinterface,GUI, systemcalls
• Directory system
COURSE OUTLINE
Course: BCA Semester:III Academic Year: 2020-21
2. Course Overview:
Unit 1 begins with the Definition of Software Engineering, Software Engineering Fundamentals,
discussion on Software Development Models, Program Vs Software, Importance & Principles of
Software Engineering, Difference between Software Engineering and Software Programming,
Software Project Management Concepts followed by the concept of Software Metrics and
Application of PERT and GANTT charts.
Unit 2 discusses about Software Development Cycle, General Software development life cycle,
Comparison between waterfall, prototyping and spiral model, Comparative Study of Incremental
Model & RAD Model, Component Based Development, Feasibility Study and Cost Benefit
Analysis.
Unit 3 covers the concept of Requirement Engineering, Types of Requirements and Requirement
Elicitation Techniques., the concept of SRS, Completeness, Unambiguity, Inconsistency, IEEE
SRS,
Unit 4 covers DFD, ERD, Structure Chart, Data Dictionaries, UML Introduction, Use Case
Diagrams, decision trees, decision tables and Class Diagrams, coupling and cohesion, structure
charts
Unit 5 covers Testing Techniques and Types of test cases & test plans, SCM and introduces the
Software Quality Concepts (What is Quality, Quality Control, Quality Assurance, Cost of Quality,
Software Quality Assurance) and Software Reviews (Formal Technical Reviews, The Review
Meeting, Review Reporting, Record Keeping, Review Guidelines, Formal Approaches to SQA,
Statistical Quality Assurance, Software Reliability and SQA Plan)
Unit 6 discusses about Software Maintenance, its Problems, Corrective Maintenance, Adaptive
Maintenance, Perfective Maintenance and Preventive Maintenance, Potential Solutions to
Maintenance and Maintenance Process & Models
1|Page
3. Course Objectives:
The objective of the course is to introduce the current methodologies involved in the development
and maintenance of software over its entire life cycle. It revolves around concepts like when
computer software succeeds – when it meets the needs of the people who use it, what it can and
does change things for better, but when software fails - when its users are dissatisfied, when it is
error prone, when it is difficult to change. To succeed and overcome failures, we need discipline
when software is designed and built- an engineering approach. Software Engineering will help to:
1. Introduce the methodology involved in the development and maintenance of software over
its entire life cycle.
2. Understand life cycle models, Requirement elicitation techniques, understand the concept of
Analysis and Design of software.
3. Implement software engineering concepts in software development to develop quality
software which can work on any real machine.
Following are the course objectives:
1. Knowledge of basic S/W engineering methods and practices and their appropriate application.
2. Describe software engineering layered technology and Process frame work.
3. A general understanding of software process models such as the waterfall and evolutionary
models.
4. Understanding of software requirements, software elicitation techniques and requirements
engineering process
5. Understanding of the SRS document, function orientated design and object oriented design.
6. Describe data models, object models, context models and behavioural models.
7. Understanding of the role of project management including planning, scheduling, risk
management, etc.
8. Understanding of approaches to verification and validation including static analysis, and reviews.
9. Understanding of software testing approaches such as unit testing and integration testing.
10. Describe software measurement and software risks.
11. Understanding on quality control and how to ensure good quality software.
12. Understanding of software maintenance, solutions to software maintenance and maintenance
process and models.
4. Course Outcomes:
2|Page
After undergoing this course, the student will have:
CO1: Basic knowledge and understanding of the analysis and design of complex systems. Knowledge of
basic S/W engineering methods and practices and their appropriate application.
CO2: Ability to apply software engineering principles and techniques. A general understanding of software
process models such as the waterfall and evolutionary models
CO3: Implementing software elicitation techniques, requirements engineering process and developing the
SRS document.
CO6: Apply the concepts of Quality Control, Quality Assurance, Formal technical reviews and making SQA
plan.
CO7: Knowledge of implementation of software maintenance process and S/w maintenance models.
CO8: Ability to develop, maintain and evaluate - efficient, reliable, robust and cost-effective software
solutions.
Module IV: Analysis and structured system • DFD, ERD, Structure Chart, decision
design tools tree, decision table, Data Dictionaries,
pseudo code, input and output design
• Modules concept, types of modules
• Qualities of good design
• Coupling – types of coupling
• Cohesion – types of cohesion
4|Page
•
Module V: Software testing and software Testing Techniques
quality assurance
• Different testing techniques with
examples
• Development and Execution of Test
Cases: Debugging, Testing Tools &
Environments
• Types of test cases and test plans
• Software Quality Concepts
• Quality Concepts
• What is Quality, Quality Control,
Quality Assurance, Cost of Quality,
Software Quality Assurance, Software
Reviews
• Formal Technical Reviews
• The Review Meeting
• Review Reporting
• Record Keeping
• Review Guidelines
• Formal Approaches to SQA
• Statistical Quality Assurance
• Software Reliability
• SQA Plan
• SCM Process – Identification of
objects, version control and change
control.
Module VI: Software Maintenance What is Software Maintenance?
Problems during Software
Maintenance
Categories of Software Maintenance:
Corrective Maintenance,Adaptive
Maintenance
Perfective Maintenance and
Preventive Maintenance
Potential Solutions to Maintenance:
Budget and efforts reallocation,
complete replacement, maintenance
of existing system
Maintenance Process and Models:
Maintenance Process, Fix Model,
Iterative Enhancement Model, Reuse
Oriented Model, Boehm Model and
Taute’s Models
5|Page
6. Evaluation Criteria:
Note :
All three CES will be mandatory. If any student misses anyone CES in that case the weightage
of each CES would be 3.33 marks and if a student attempts all three CES then his/her best
two CES will be considered, in that case the weightage would be 5 marks each.
6|Page
Text Books Text Book1: A:SOFTWARE ENGINEERING A PRACTITIONERS APPROACH
Internet www.beknowledge.com/wp-content/uploads/2010/.../8f14etx427_11.pdf
Resource:
http://www.tutorialspoint.com/software_engineering/software_engineering_tutorial.pdf
NPTEL/Swayam
www.edx.com
www.coursera.com
9. Session Plan:
7|Page
Unit Lecture Topic Details Ref. Book Learning Outcomes
Ability to apply
Comparison between waterfall, Text Book 1 software engineering
10
prototyping Chapter 2 principles and
techniques LO1, LO2
Ability to apply
Comparison between waterfall, Text Book 1 software engineering
11
prototyping and spiral model Chapter 2 principles and
techniques LO1, LO2
Ability to apply
Text Book 1 software engineering
13 Component Based Development
Chapter 2 principles and
techniques LO1, LO2
Ability to apply
Text Book 1 software engineering
14 Fourth Generation Techniques
Chapter 2 principles and
techniques LO1, LO2
17
Class Test
Unit 3: Implementing
Text Book 1
Requirement software elicitation
Engineering 18 Chapter techniques,
concepts and requirements
What is Requirement
methods 5,6,7 engineering process
Engineering?
Types of Requirements and developing the
9|Page
Handout SRS document LO3
Implementing
software elicitation
Text Book 1 techniques,
19 requirements
Chapter 5,6,7 engineering process
and developing the
Requirement Elicitation Techniques SRS document LO3
Implementing
Text Book 1 software elicitation
techniques,
20 Chapter 5,6,7 requirements
engineering process
Handout
Traditional and Modern Methods and developing the
Verification and Validation Process SRS document LO3
Implementing
Principles of requirements Text Book 1 software elicitation
specification, SRS, Characteristics of techniques,
21,22,23 Good SRS, Completeness, correct, Chapter 5,6,7 requirements
Unambiguity, consistent , modifiable, engineering process
Handout
traceable, understandable, IEEE SRS and developing the
SRS document LO3
24
Quiz
Unit 4: Text Book 1 Develop various object
Analysis and Function Oriented Modelling: oriented and function
structured 24 Chapter 5,6,7 oriented designs. LO3,
system design DFD, ERD, LO4
Handout
tools.
10 | P a g e
Constructing Solution to Problem Develop various object
oriented and function
Identifying Components and their Text Book 1 oriented designs. LO3,
interaction LO4
27 Chapter 5,6,7
Handout
11 | P a g e
Software Reviews
38 Class Test
Unit 6: Knowledge of
Software implementation of
Maintenance Text Book 1 software maintenance
39
What is Software Maintenance? Chapter 29 process and S/w
Problems during Software maintenance models
Maintenance LO7, LO8
12 | P a g e
complete replacement, maintenance Chapter 29 software maintenance
of existing system process and S/w
maintenance models
LO7, LO8
Knowledge of
implementation of
Text Book 1 software maintenance
42
Maintenance Process and Models: Chapter 29 process and S/w
Maintenance Process, Fix Model, maintenance models
Iterative Enhancement Model LO7, LO8
Knowledge of
implementation of
Reuse Oriented Model, Boehm Text Book 1 software maintenance
43
Model and Taute’s Models Chapter 29 process and S/w
maintenance models
LO7, LO8
44 Revision
45 Revision
Mobile: 9582035733
E-Mail: [email protected]
13 | P a g e
Dr. Daljeet Singh Bawa is PhD in Computer Science and is presently working as Assistant Professor in IT
Department at BharatiVidyapeeth University Institute of Management and Research, New Delhi. He has
completed M.Phil (Computer Science) as well and loves experimenting with new softwares. His areas of
specialization are Software Engineering, Operating Systems, Computer Organization and Architecture, e-
learning and e-assessment and has a rich experience of working with live software projects. His research
work revolves around e-learning, blended learning and e-assessment and has 24 research papers to his
14 | P a g e
Study Notes
Unit – 1
15 | P a g e
• Software Development Models:
• Program Vs Software
• Definition of Software Engineering
• Importance & Principles of Software Engineering
• Difference between Software Engineering and Software Programming
• Members involved in software development
Software Overview
LetusunderstandwhatSoftwareEngineeringstandsfor.Thetermismadeoftwo words,
software andengineering.
Engineering on the other hand, is all about developing products, using well- defined,
scientific principles and methods.
16 | P a g e
Software engineering is an engineering branch associated with developmentof
softwareproductusingwell-definedscientificprinciples,methodsandprocedures.
Theoutcomeofsoftwareengineeringisanefficientandreliablesoftwareproduct.
Definitions
IEEE defines software engineering as:
17 | P a g e
“Software engineering is the establishment and use of sound engineering
principlesinordertoobtaineconomicallysoftwarethatisreliableandwork
efficiently on realmachines.”
A computer program is stored as a file on the computer’s hard drive. When the user runs
the program, the file is read by the computer, and the processor reads the data in the file
as a list of instructions. Then the computer does what the program tells it to do.
• Operational
• Transitional
• Maintenance
Well-engineered and crafted software is expected to have the following characteristics:
Operational
This tells us how well software works in operations. It can be measured on:
• Budget
• Usability
• Efficiency
• Correctness
Functionality
Dependability
Security
Safety
Transitional
This aspect is important when the software is moved from one platform to another:
Portability
Interoperability
Reusability
Adaptability
Maintenance
This aspect briefs about how well a software has the capabilities to maintain itself in the
ever-changing environment:
Modularity
Maintainability
Flexibility
Scalability
In short, Software engineering is a branch of computer science, which uses well-defined
engineering concepts required to produce efficient, durable, scalable, in-budget and on-
time software products.
Software engineers of all kinds, full-time staff, vendors, contracted workers, or part-time
workers, are important members of the IT community.
What do software engineers do? Software engineers apply the principles of software
engineering to the design, development, maintenance, testing, and evaluation of software. There
is much discussion about the degree of education and or certification that should be required for
software engineers.
According to StackOverflow Survey 2018, software engineers are lifelong learners; almost 90%
of all developers say they have taught themselves a new language, framework, or tool outside of
their formal education.
Software engineers are well versed in the software development process, though they typically
need input from IT leader regarding software requirements and what the end result needs to be.
Regardless of formal education, all software engineers should work within a specific set of best
practices for software engineering so that others can do some of this work at the same time.
Software engineering almost always includes a vast amount of teamwork. Designers, writers,
coders, testers, various team members, and the entire IT team need to understand the code.
Software engineers should understand how to work with several common computer languages,
including Visual Basic, Python, Java, C, and C++. According to Stackoverflow, for the sixth
year in a row, JavaScript is the most commonly used programming language. Python has risen
in the ranks, surpassing C# this year, much like it surpassed PHP last year. Python has a solid
claim to being the fastest-growing major programming language.
Software engineering is important because specific software is needed in almost every industry,
in every business, and for every function. It becomes more important as time goes on – if
something breaks within your application portfolio, a quick, efficient, and effective fix needs to
happen as soon as possible.
Whatever you need software engineering to do – it is something that is vitally important and
that importance just keeps growing. When you work with software engineers, you need to have
a check and balance system to see if they are living up to their requirements and meeting KPIs.
SoftwareEvolution
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 the software product development. The users
suggestchanges,onwhichseveralconsecutiveupdatesandmaintenancekeepon changing
too. This process changes to the original software, till the desired software
isaccomplished.
Even after the user has the desired software in hand, the advancing technology
andthechangingrequirementsforcethesoftwareproducttochangeaccordingly. Re-creating
software from scratch and to go one-on-one with the requirementis
not feasible. The only feasible and economical solution is to update the existing
software so that it matches the latest requirements.
Software EvolutionLaws
Lehmanhasgivenlawsforsoftwareevolution.Hedividedthesoftwareintothree
differentcategories:
E-Type softwareevolution
Lehman has given eight laws for E-Type software evolution -
Software Paradigms
Software paradigms refer to the methods and steps, which are taken while
designingthesoftware.Therearemanymethodsproposedandareimplemented. But, we
need to see where in the software engineering concept, these paradigms stand. These
can be combined into various categories, though each of them is contained in
oneanother:
• Requirementgathering
• Softwaredesign
• Programming
• Design
• Maintenance
• Programming
Programming Paradigm
This paradigm is related closely to programming aspect of software
development. This includes –
• Coding
• Testing
• Integration
Need of SoftwareEngineering
The need of software engineering arises because of higher rate of change in user
requirements and environment on which the software is working. Following are some
of the needs stated:
• 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 existingone.
• Cost- As hardware industry has shown its skills and huge manufacturing
haslowerdownthepriceofcomputerandelectronichardware.But,costof the software remains
high if proper process is notadapted.
• Dynamic Nature- Always growing and adapting nature of the software hugely depends
upon the environment in which the user works. If the
natureofsoftwareisalwayschanging,newenhancementsneedtobedone in the existing one.
This is where the software engineering plays a good role.
• Quality Management- Better process of software development provides better and quality
softwareproduct.
Characteristics of goodsoftware
A software product can be judged by what it offers and how well it can be
used. 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. It can be measured on:
• Budget
• Usability
• Efficiency
• Correctness
• Functionality
• Dependability
• Security
• Safety
Transitional
This aspect is important when the software is moved from one platform to
another:
• Portability
• Interoperability
• Reusability
• Adaptability
Maintenance
This aspect briefs about how well the software has the capabilities to
maintain itself in the ever-changing environment:
• Modularity
• Maintainability
• Flexibility
• Scalability
Time
The relationship, often called the "bathtub curve," indicates that hardware
exhibits relatively high failure rates early in its life (these failures are often
attributable to design or manufacturing defects); defects are corrected and the
failure rate drops to a steady-state level (ideally, quite low) for some period of time.
As time passes, however, the failure rate rises again as hardware components suffer
from the cumulative effects of dust, vibration, abuse, temperature extremes, and
many other environmental maladies. Stated simply, the hardware begins to wear
out. Software is not susceptible to the environmental maladies that cause
hardware to wear out
Separation of Concerns
Separation of concerns is a recognition of the need for human beings to work within a
limited context. As descibed by G. A. Miller [Miller56], the human mind is limited to
dealing with approximately seven units of data at a time. A unit is something that a
person has learned to deal with as a whole - a single abstraction or concept. Although
human capacity for forming abstractions appears to be unlimited, it takes time and
repetitive use for an abstraction to become a useful tool; that is, to serve as a unit.
When specifying the behavior of a data structure component, there are often two
concerns that need to be dealt with: basic functionality and support for data integrity.
A data structure component is often easier to use if these two concerns are divided as
much as posible into separate sets of client functions. It is certainly helful to clients if
the client documentation treats the two concerns separately. Further, implementation
documentation and algorithm descriptions can profit from separate treatment of basic
algorithms and modifications for data integrity and exception handling.
In view of this, it makes sense to separate handling of different values. This can be
done either by dealing with different values at different times in the software
development process, or by structuring the design so that responsibility for achieving
different values is assigned to different components.
As an example of this, run-time efficiency is one value that frequently conflicts with
other software values. For this reason, most software engineers recommend dealing
with efficiency as a separate concern. After the software is design to meet other
criteria, it's run time can be checked and analysed to see where the time is being
spent. If necessary, the portions of code that are using the greatest part of the
runtime can be modified to improve the runtime. This idea is described in depth in
Ken Auer and Kent Beck's article "Lazy optimization: patterns for efficient smalltalk
programming" in [VCK96, pp 19-42].
Modularity
Abstraction
Anticipation of Change
Software developers, on the other hand, are familiar with a technology that deals with
data in an abstract way. They deal with structures and algorithms without regard for
the meaning or importance of the data that is involved. A software developer can
think in terms of graphs and graph algorithms without attaching concrete meaning to
vertices and edges.
Working out an automated solution to a problem is thus a learning experience for both
software developers and their clients. Software developers are learning the domain
that the clients work in. They are also learning the values of the client: what form of
data presentation is most useful to the client, what kinds of data are crucial and
require special protective measures.
The clients are learning to see the range of possible solutions that software technology
can provide. They are also learning to evaluate the possible solutions with regard to
their effectiveness in meeting the clients needs.
If the problem to be solved is complex then it is not reasonable to assume that the
best solution will be worked out in a short period of time. The clients do, however,
want a timely solution. In most cases, they are not willing to wait until the perfect
solution is worked out. They want a reasonable solution soon; perfection can come
later. To develop a timely solution, software developers need to know the
requirements: how the software should behave. The principle of acticipation of change
recognizes the complexity of the learning process for both software developers and
their clients. Preliminary requirements need to be worked out early, but it should be
possible to make changes in the requirements as learning progresses.
Coupling is a major obstacle to change. If two components are strongly coupled then
it is likely that changing one will not work without changing the other.
Cohesiveness has a positive effect on ease of change. Cohesive components are easier
to reuse when requirements change. If a component has several tasks rolled up into
one package, it is likely that it will need to be split up when changes are made.
Generality
For another example where the principle of generality applies, consider a customer
who is converting business practices into automated software. They are often trying to
satisfy general needs, but they understand and present their needs in terms of their
current practices. As they become more familiar with the possibilities of automated
solutions, they begin seeing what they need, rather than what they are currently
doing to satisfy those needs. This distinction is similar to the distinction in the
principle of abstraction, but its effects are felt earlier in the software development
process.
Incremental Development
Fowler and Scott [FS97] give a brief, but thoughtful, description of an incremental
software development process. In this process, you build the software in small
increments; for example, adding one use case at a time.
An incremental software development process simplifies verification. If you develop
software by adding small increments of functionality then, for verification, you only
need to deal with the added portion. If there are any errors detected then they are
already partly isolated so they are much easier to correct.
A carefully planned incremental development process can also ease the handling of
changes in requirements. To do this, the planning must identify use cases that are
most likely to be changed and put them towards the end of the development process.
Consistency
At a higher level, consistency involves the development of idioms for dealing with
common programming problems. Coplien [Coplien92] gives an excellent presentation
of the use of idioms for coding in C++.
One of the keys to a successful software project is identifying and documenting the
software project roles and responsibilities for your project. You’ll need to ensure that
you define the key stakeholders within your business that will be involved in the
delivery of the software solution.
Get the right people. Then no matter what all else you might do wrong after that, the
people will save you. That’s what management is all about.
-– Tom DeMarco
Among the key stakeholders of a software project are the following eight key roles in
software development and their corresponding responsibilities.
PROJECT SPONSOR
Project Sponsors play a critical role in all projects. Project sponsors have the
bandwidth to take on the Project Sponsor role, their day job and no other project role,
therefore Project Sponsors are not Project Managers, Scrum Masters or Product
Owners.
The Project Sponsor is the person or group that provides direction and resources,
including financial resources for the software project. The Project Sponsor works with
the project management team, aiding with wider project matters such as scope
clarification, progress, monitoring, and influencing others in order to benefit the
software project.
The Project Sponsor leads the project through the software supplier selection process
until it is formally authorised. For issues that are beyond the control of the Product
Owner, the Project Sponsor serves as an escalation path.
The Project Sponsor may also be involved in other important issues such as
authorising changes in scope, phase-end reviews, and go/no-go decisions when the
stakes of the project are particularly high.
However, their lack of technical knowledge is their strength, as they are not bogged
down in technicalities and instead are purely focused on business outcomes.
It’s imperative that discussions are held with Subject Matter Experts at the same time
as the software product vision statement is being created. Feedback from this group
of experts can save a lot of back and forth down the line.
However, given that Subject Matter Experts tend not to be technical the right amount
and type of engagement are necessary so as not to overwhelm them. One of the ways
to get them involved is to have them contribute to the creation of early-stage
wireframes and prototypes.
PRODUCT OWNER
Product Owner is a software development role for a person who represents the
business or end-users and is responsible for working with the user group to determine
what features will be in the product release.
The Product Owner is also responsible for the prioritised backlog and maximising the
return on investment (ROI) of the software project. Part of this role’s responsibility
includes documenting user stories or requirements for the software project.
They act as the main point of contact for all decisions concerning the project and as
such, need to be empowered to perform their responsibilities without the need to seek
too much prior authorisation from the Project Sponsors.
Appointing the right person to this role, with the appropriate delegated authority to
progress the project, is fundamental to the success of the project, especially if an
agile methodology approach is undertaken.
Failure to have a Product Owner in place usually means that the software project will
execute in fits and starts whilst the software developers are on hold waiting for crucial
feedback.
The Project Manager is also responsible for creating and managing the project budget
and schedule as well as processes including scope management, issues management
and risk management.
It doesn’t matter if you are using an agile methodology or the waterfall method, once
deliverables are defined, it is critical that the Project Manager starts to actively
exercise change management. Change should not be perceived as negative or
something to be avoided.
The Project Manager also oversees software testing, delivery and formal acceptance
by the customer. Then the Project Manager performs a project review with the
software development team to document any lessons learned from the software
development processes.
TECHNICAL LEAD
This person translates the business requirements into a technical solution. Because of
this responsibility, it is beneficial to have the Technical Lead involved in the planning
phase to hear the business requirements from the customer’s point of view and ask
questions.
The Technical Lead is the development team leader and works with the developers to
provide technical details and estimates for the proposed solution. This information is
used by the Project Manager to create the Statement of Work and the Work
Breakdown Structure documents for the software project.
It is critical that the Technical Lead can effectively communicate the status of the
software project to the Project Manager so that issues or variances can be effectively
addressed as soon as possible.
The Technical Lead is also responsible for establishing and enforcing standards and
practices with the software development team.
SOFTWARE DEVELOPERS
The Software Developers (front-end and back-end) are responsible for using the
technical requirements from the Technical Lead to create cost and timeline estimates.
The Software Developers are also responsible for building the deliverables and
communicating the status of the software project to the Technical Lead or Project
Manager.
It is critical that the other team members effectively communicate the technical
requirements to the Software Developers to reduce project risk and provide the
software project with the greatest chance of success.
SOFTWARE TESTERS
The Software Testers ensure that the software solution meets the business
requirements and that it is free of bugs, errors and defects.
In the test planning and preparation phases of the software testing, Software Testers
should review and contribute to test plans, as well as be analysing, reviewing and
assessing technical requirements and design specifications.
Software Testers are involved in identifying test conditions and creating test designs,
test cases, test procedure specifications and test data, and may automate or help to
automate the tests.
On from that, representatives of your company will need to perform the final checks
to ensure that the software works for the business across a number of real-world
scenarios.
User Acceptance Testing (UAT) is the final step prior to a new software solution being
released to production (live). It’s absolutely essential that you have the resources to
tackle user acceptance testing in a timely and organised fashion, as it is often UAT
that creates the bottleneck between the software solution being completed and
released to the business.
It’s often the case that the aforementioned Subject Matter Experts defined how the
new software solution should work and, given their close proximity to the actual work,
they can make excellent User Acceptance Testers.
When end users get involved in the final stages of testing, light bulbs go on, and they
often have an “aha” moment. Unfortunately, that is often too late.
-– Frank R. Parth
It’s an excellent idea to ensure that those employees participating in UAT are brought
in from the start, and understand, or perhaps better still contribute to, the design of
the new software solution.
This emotional buy-in and understanding of the software solution’s objectives reduces
the friction that might otherwise exist in attempting to move end-users from the
existing software systems they know, love and use every day.
The key to project success is clear and effective communication. A critical portion of
this communication is identifying the stakeholders and their roles.
Whatever labels you apply to the software project roles above, clear communication of
expectations and status to the stakeholders throughout the life of the software project
will increase the chances of your project’s success.
Unit – 2
• Software Development Cycle
• General Software development life cycle
• Comparison between waterfall, prototyping and spiral model
• Comparative Study of Incremental Model & RAD Model
• Component Based Development
• Fourth Generation Techniques
Feasibility Study
• Need of Feasibility Study
• Types of Feasibility
Cost Benefit Analysis
• Why Cost Benefit Analysis?
• Cost Benefit Analysis Process
Software Development Life Cycle
SDLC Activities
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. The requirements are collected using a
number of practices as given -
• studying the existing or obsolete system andsoftware,
• conducting interviews of users anddevelopers,
• referring to the databaseor
• collecting answers from thequestionnaires.
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
requirementsoftheuser,andifthereisanypossibilityofsoftwareb
eingnomore useful. It is also analyzed if the project is
financially, practically, and
technologicallyfeasiblefortheorganizationtotakeup.Thereare
manyalgorithms available, which help the developers to
conclude the feasibility of a software project.
System Analysis
Atthisstepthedevelopersdecidearoadmapoftheirplanandtrytob
ringupthe best software model suitable for the project.
System analysis includes understanding of software product
limitations, learning system related problems
orchangestobedoneinexistingsystemsbeforehand,identifyinga
ndaddressing
theimpactofprojectonorganizationandpersonneletc.Theprojec
tteamanalyzes the scope of the project and plans the
schedule and resourcesaccordingly.
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
ofthisstepcomesintheformoftwodesigns;logicaldesign,andphy
sicaldesign. Engineers produce meta-data and data
dictionaries, logical diagrams, data-flow diagrams, and in
some cases pseudocodes.
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 moduletesting,
program testing, product testing, in-house testing, and
testing the product at user’s end. Early discovery of errors
and their remedy is the key to reliable software.
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.
Software DevelopmentParadigm
The software development paradigm helps a developer to
select a strategy to
developthesoftware.Asoftwaredevelopmentparadigmhasitso
wnsetoftools, methods, and procedures, which are
expressed clearly and defines software development life
cycle. A few of software development paradigms or process
models are defined asfollows:
Waterfall Model
Waterfall model is the simplest model of software
development paradigm. All the
phasesofSDLCwillfunctiononeafteranotherinlinearmanner.Tha
tis,whenthe first phase is finished then only the second
phase will start and soon.
Software Development Life Cycle (SDLC) is a process used by the software industry to
design, develop and test high quality softwares. The SDLC aims to produce a high-quality
software that meets or exceeds customer expectations, reaches completion within times
and cost estimates.
• SDLC is the acronym of Software Development Life Cycle.
• It is also called as Software Development Process.
• SDLC is a framework defining tasks performed at each step in the software
development process.
• ISO/IEC 12207 is an international standard for software life-cycle processes. It
aims to be the standard that defines all the tasks required for developing and
maintaining software.
What is SDLC?
SDLC is a process followed for a software project, within a software organization. It
consists of a detailed plan describing how to develop, maintain, replace and alter or
enhance specific software. The life cycle defines a methodology for improving the quality
of software and the overall development process.
The following figure is a graphical representation of the various stages of a typical SDLC.
A typical Software Development Life Cycle consists of the following stages −
Once the requirement analysis is done the next step is to clearly define and document the
product requirements and get them approved from the customer or the market analysts.
This is done through an SRS (Software Requirement Specification) document which
consists of all the product requirements to be designed and developed during the project
life cycle.
SRS is the reference for product architects to come out with the best architecture for the
product to be developed. Based on the requirements specified in SRS, usually more than
one design approach for the product architecture is proposed and documented in a DDS -
Design Document Specification.
This DDS is reviewed by all the important stakeholders and based on various parameters
as risk assessment, product robustness, design modularity, budget and time constraints,
the best design approach is selected for the product.
A design approach clearly defines all the architectural modules of the product along with
its communication and data flow representation with the external and third party modules
(if any). The internal design of all the modules of the proposed architecture should be
clearly defined with the minutest of the details in DDS.
In this stage of SDLC the actual development starts and the product is built. The
programming code is generated as per DDS during this stage. If the design is performed
in a detailed and organized manner, code generation can be accomplished without much
hassle.
Developers must follow the coding guidelines defined by their organization and
programming tools like compilers, interpreters, debuggers, etc. are used to generate the
code. Different high level programming languages such as C, C++, Pascal, Java and PHP
are used for coding. The programming language is chosen with respect to the type of
software being developed.
This stage is usually a subset of all the stages as in the modern SDLC models, the testing
activities are mostly involved in all the stages of SDLC. However, this stage refers to the
testing only stage of the product where product defects are reported, tracked, fixed and
retested, until the product reaches the quality standards defined in the SRS.
Once the product is tested and ready to be deployed it is released formally in the
appropriate market. Sometimes product deployment happens in stages as per the
business strategy of that organization. The product may first be released in a limited
segment and tested in the real business environment (UAT- User acceptance testing).
Then based on the feedback, the product may be released as it is or with suggested
enhancements in the targeting market segment. After the product is released in the
market, its maintenance is done for the existing customer base.
SDLC Models
There are various software development life cycle models defined and designed which
are followed during the software development process. These models are also referred as
Software Development Process Models". Each process model follows a Series of steps
unique to its type to ensure success in the process of software development.
Following are the most important and popular SDLC models followed in the industry −
• Waterfall Model
• Iterative Model
• Spiral Model
• V-Model
• Big Bang Model
Other related methodologies are Agile Model, RAD Model, Rapid Application
Development and Prototyping Models.
Identification
This phase starts with gathering the business requirements in the baseline spiral. In the
subsequent spirals as the product matures, identification of system requirements,
subsystem requirements and unit requirements are all done in this phase.
This phase also includes understanding the system requirements by continuous
communication between the customer and the system analyst. At the end of the spiral,
the product is deployed in the identified market.
Design
The Design phase starts with the conceptual design in the baseline spiral and involves
architectural design, logical design of modules, physical product design and the final
design in the subsequent spirals.
Construct or Build
The Construct phase refers to production of the actual software product at every spiral. In
the baseline spiral, when the product is just thought of and the design is being developed
a POC (Proof of Concept) is developed in this phase to get customer feedback.
Then in the subsequent spirals with higher clarity on requirements and design details a
working model of the software called build is produced with a version number. These
builds are sent to the customer for feedback.
Based on the customer evaluation, the software development process enters the next
iteration and subsequently follows the linear approach to implement the feedback
suggested by the customer. The process of iterations along the spiral continues
throughout the life of the software.
SDLC - V-Model
The V-model is an SDLC model where execution of processes happens in a sequential
manner in a V-shape. It is also known as Verification and Validation model.
The V-Model is an extension of the waterfall model and is based on the association of a
testing phase for each corresponding development stage. This means that for every
single phase in the development cycle, there is a directly associated testing phase. This is
a highly-disciplined model and the next phase starts only after completion of the previous
phase.
V-Model - Design
Under the V-Model, the corresponding testing phase of the development phase is
planned in parallel. So, there are Verification phases on one side of the ‘V’ and Validation
phases on the other side. The Coding Phase joins the two sides of the V-Model.
The following illustration depicts the different phases in a V-Model of the SDLC.
This is the first phase in the development cycle where the product requirements are
understood from the customer’s perspective. This phase involves detailed communication
with the customer to understand his expectations and exact requirement. This is a very
important activity and needs to be managed well, as most of the customers are not sure
about what exactly they need. The acceptance test design planning is done at this
stage as business requirements can be used as an input for acceptance testing.
System Design
Once you have the clear and detailed product requirements, it is time to design the
complete system. The system design will have the understanding and detailing the
complete hardware and communication setup for the product under development. The
system test plan is developed based on the system design. Doing this at an earlier stage
leaves more time for the actual test execution later.
Architectural Design
Architectural specifications are understood and designed in this phase. Usually more than
one technical approach is proposed and based on the technical and financial feasibility
the final decision is taken. The system design is broken down further into modules taking
up different functionality. This is also referred to as High Level Design (HLD).
The data transfer and communication between the internal modules and with the outside
world (other systems) is clearly understood and defined in this stage. With this
information, integration tests can be designed and documented during this stage.
Module Design
In this phase, the detailed internal design for all the system modules is specified, referred
to as Low Level Design (LLD). It is important that the design is compatible with the other
modules in the system architecture and the other external systems. The unit tests are an
essential part of any development process and helps eliminate the maximum faults and
errors at a very early stage. These unit tests can be designed at this stage based on the
internal module designs.
Coding Phase
The actual coding of the system modules designed in the design phase is taken up in the
Coding phase. The best suitable programming language is decided based on the system
and architectural requirements.
The coding is performed based on the coding guidelines and standards. The code goes
through numerous code reviews and is optimized for best performance before the final
build is checked into the repository.
Validation Phases
The different Validation Phases in a V-Model are explained in detail below.
Unit Testing
Unit tests designed in the module design phase are executed on the code during this
validation phase. Unit testing is the testing at code level and helps eliminate bugs at an
early stage, though all defects cannot be uncovered by unit testing.
Integration Testing
Integration testing is associated with the architectural design phase. Integration tests are
performed to test the coexistence and communication of the internal modules within the
system.
System Testing
System testing is directly associated with the system design phase. System tests check
the entire system functionality and the communication of the system under development
with external systems. Most of the software and hardware compatibility issues can be
uncovered during this system test execution.
Acceptance Testing
Acceptance testing is associated with the business requirement analysis phase and
involves testing the product in user environment. Acceptance tests uncover the
compatibility issues with the other systems available in the user environment. It also
discovers the non-functional issues such as load and performance defects in the actual
user environment.
V- Model ─ Application
V- Model application is almost the same as the waterfall model, as both the models are of
sequential type. Requirements have to be very clear before the project starts, because it
is usually expensive to go back and make changes. This model is used in the medical
development field, as it is strictly a disciplined domain.
The following pointers are some of the most suitable scenarios to use the V-Model
application.
• Requirements are well defined, clearly documented and fixed.
• Product definition is stable.
• Technology is not dynamic and is well understood by the project team.
• There are no ambiguous or undefined requirements.
• The project is short.
• Planning
• Requirements Analysis
• Design
• Coding
• Unit Testing and
• Acceptance Testing.
At the end of the iteration, a working product is displayed to the customer and important
stakeholders.
What is Agile?
Agile model believes that every project needs to be handled differently and the existing
methods need to be tailored to best suit the project requirements. In Agile, the tasks are
divided to time boxes (small time frames) to deliver specific features for a release.
Iterative approach is taken and working software build is delivered after each iteration.
Each build is incremental in terms of features; the final build holds all the features
required by the customer.
Here is a graphical illustration of the Agile Model −
The Agile thought process had started early in the software development and started
becoming popular with time due to its flexibility and adaptability.
The most popular Agile methods include Rational Unified Process (1994), Scrum (1995),
Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature
Driven Development, and Dynamic Systems Development Method (DSDM) (1995). These
are now collectively referred to as Agile Methodologies, after the Agile Manifesto was
published in 2001.
Following are the Agile Manifesto principles −
• Individuals and interactions − In Agile development, self-organization and
motivation are important, as are interactions like co-location and pair programming.
• Working software − Demo working software is considered the best means of
communication with the customers to understand their requirements, instead of
just depending on documentation.
• Customer collaboration − As the requirements cannot be gathered completely in
the beginning of the project due to various factors, continuous customer interaction
is very important to get proper product requirements.
• Responding to change − Agile Development is focused on quick responses to
change and continuous development.
What is RAD?
Rapid application development is a software development methodology that uses minimal
planning in favor of rapid prototyping. A prototype is a working model that is functionally
equivalent to a component of the product.
In the RAD model, the functional modules are developed in parallel as prototypes and are
integrated to make the complete product for faster product delivery. Since there is no
detailed preplanning, it makes it easier to incorporate the changes within the development
process.
RAD projects follow iterative and incremental model and have small teams comprising of
developers, domain experts, customer representatives and other IT resources working
progressively on their component or prototype.
The most important aspect for this model to be successful is to make sure that the
prototypes developed are reusable.
Business Modelling
The business model for the product under development is designed in terms of flow of
information and the distribution of information between various business channels. A
complete business analysis is performed to find the vital information for business, how it
can be obtained, how and when is the information processed and what are the factors
driving successful flow of information.
Data Modelling
The information gathered in the Business Modelling phase is reviewed and analyzed to
form sets of data objects vital for the business. The attributes of all data sets is identified
and defined. The relation between these data objects are established and defined in
detail in relevance to the business model.
Process Modelling
The data object sets defined in the Data Modelling phase are converted to establish the
business information flow needed to achieve specific business objectives as per the
business model. The process model for any changes or enhancements to the data object
sets is defined in this phase. Process descriptions for adding, deleting, retrieving or
modifying a data object are given.
Application Generation
The actual system is built and coding is done by using automation tools to convert
process and data models into actual prototypes.
The overall testing time is reduced in the RAD model as the prototypes are independently
tested during every iteration. However, the data flow and the interfaces between all the
components need to be thoroughly tested with complete test coverage. Since most of the
programming components have already been tested, it reduces the risk of any major
issues.
The following illustration describes the RAD Model in detail.
This step involves understanding the very basics product requirements especially in terms
of user interface. The more intricate details of the internal design and external aspects
like performance and security can be ignored at this stage.
The initial Prototype is developed in this stage, where the very basic requirements are
showcased and user interfaces are provided. These features may not exactly work in the
same manner internally in the actual software developed. While, the workarounds are
used to give the same look and feel to the customer in the prototype developed.
The prototype developed is then presented to the customer and the other important
stakeholders in the project. The feedback is collected in an organized manner and used
for further enhancements in the product under development.
Throwaway/Rapid Prototyping
Throwaway prototyping is also called as rapid or close ended prototyping. This type of
prototyping uses very little efforts with minimum requirement analysis to build a prototype.
Once the actual requirements are understood, the prototype is discarded and the actual
system is developed with a much clear understanding of user requirements.
Evolutionary Prototyping
Incremental Prototyping
Extreme Prototyping
This model is best suited when developers already have designed and
developed similar software in the past and are aware of all its domains.
Iterative Model
This model leads the software development process in iterations. It
projects the
processofdevelopmentincyclicmannerrepeatingeverystepaftereverycycleof
SDLCprocess.
The software is first developed on very small scale and all the steps are
followed which are taken into consideration. Then, on every next
iteration, more features
andmodulesaredesigned,coded,tested,andaddedtothesoftware.Everycycle
produces a software, which is complete in itself and has more features
and capabilities than that of the previousone.
Aftereachiteration,themanagementteamcandoworkonriskmanagementand
prepareforthenextiteration.Becauseacycleincludessmallportionofwhole
softwareprocess,itiseasiertomanagethedevelopmentprocessbutitconsumes
moreresources.
Spiral Model
Spiralmodelisacombinationofboth,iterativemodelandoneoftheSDLCmodel.
It can be seen as if you choose one SDLC model and combined it with
cyclic process (iterativemodel).
Thismodelconsidersrisk,whichoftengoesun-
noticedbymostothermodels.The model starts with determining objectives
and constraints of the software at the
startofoneiteration.Nextphaseisofprototypingthesoftware.Thisincludesrisk
analysis. Then one standard SDLC model is used to build the software. In
the fourth phase of the plan of next iteration isprepared.
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
found wrong in later stages. V-Model provides means of testing of
software at each stage in reverse manner.
At every stage, test plans and test cases are created to verify and
validate the product according to the requirement of that stage. For
example, in requirement
gatheringstagethetestteampreparesallthetestcasesincorrespondencetothe
requirements. Later, when the product is developed and is ready for
testing, test
casesofthisstageverifythesoftwareagainstitsvaliditytowardsrequirementsat
thisstage.
Thismakesbothverificationandvalidationgoinparallel.Thismodelisalsoknown
as verification and validationmodel.
This model is not suitable for large software projects but good one for
learning and experimenting.
Fig. Prototype
Model
Advantage:
• Flexibility of theproduct.
• For large but scalable projects RAD requires sufficient human resources to create the
right number of RADteam.
• If developer and customer are not committed to the rapid-fire activities necessary
to complete the software in a much abbreviated time frame, RAD project willfail.
• If a system cannot be properly modularized, building the component necessary for
RAD will beproblematic.
• If high performance is an issue & performance is to be achieved through tuning the
interface to system component, the RAD approach may notwork.
• RAD may not be appropriate when technical risks are high. Eg: when a new
application makes necessary use of newtechnology.
EvolutionaryModel:
• Referred as the successive version model. In evolutionary model the software is
firstbroken into a several model.
• The development team first develops the core module of thesoftware.
• The initial product skeleton is refined into increasing levels of capability by adding
new functionality in the successiveversion.
• This modeling is very popular for projects because the system can easily be
partitioned into
standalone units in terms of the object.
Increase in complexity:
Due to continual changes the software complexity increase, integrating
various modules will bedifficult.
Program evaluation:
Program, process and measure of project and system attribute are
statistically self- regulatory with determinable tends.
Advantages:
• Reduce errors
• User get chance to experiment with partially developed software much before the
computer version of software, so the changes requested after thedelivery are
minimized.
• There are many situations in which initial software requirements are reasonably well-
defined but the overall scope of the development effort precludes a purely linearprocess.
• The incremental model combines elements of the waterfall model applied in an
iterative fashion. The incremental model applies linear sequences in a staggered
fashion ascalendar
time
progresses.Eachlinearsequenceproducesdeliverable―increments‖ofthesoftwar
e.
• When an incremental model is used, the first incrementis often a core product. The
incremental process model, like prototyping and other evolutionary approaches,
isiterative
in nature.
• Unlike prototyping, the incremental model focuses on the delivery of an operational
product with eachincrement.
The figure 1.9 shows the linear sequences in a staged fashion as calendar time
progresses of the incremental model.
Figure: Incremental Models
Advantages:
The SpiralModel
The spiral model is an evolutionary software process model that couples the
iterative nature of prototyping with the controlled and systematic aspects of the
waterfallmodel. It provides the potential for rapid development of increasingly
more complete versions of thesoftware.
The spiral model is a realistic approach to the development of large scale systems
and software. The spiral development model is a risk-driven process model
generator that is used to guide multi- stakeholder concurrent engineering of
software intensive systems.
Figure: Spiral
model
Task set:
In this model each of the regions with the set of work tasks is called as task
set. The size of the task set will vary according to the project.
Task region:
Task region is a region where set of task is achieved.
Principle of spiral model:
• Elaborate software entity object and find out constraints andalternatives.
• Elaborate definition of the software entity for theproject.
• Spiral model terminate a project, if it is toorisky.
Customer communication:
• Task requires establishing effective communication between
developer and customer.
Planning:
• Task requires defining resources, time& other relatedinformation.
Risk information:
• Task requires to access both technical and managementrisk.
Engineering:
• Task required building one or more representation of theapplication.
Construction &release:
• The task requires constructing the project & releasing the project to
thecustomer.
Customer evaluation:
• Task required obtaining customer feedback based on evolution of the software
representation created during the installationstage.
Advantage:
• User will be able to see the project developmentcycle.
• Risk analysis which resolves higher priorityerror.
• Project is very muchrefined.
• Reusability of thesoftware.
Disadvantages:
• It is only suitable for large sizeproject.
• Model is more complex touse.
• Management skill is necessary so as to analyze the riskfactor.
SoftwareApplications:
• Software may be applied in any situation for which a pre-specified set of procedural
steps (i.e.,
an algorithm) has been defined.
• Information content and determinacy are important factors in determining the
nature of a softwareapplication.
• Content refers to the meaning and form of incoming outgoinginformation.
• Information determinacy refers to the predictability of the order and timing
ofinformation.
• An engineering analysis program accepts data that have a predefined order executes
the analysis algorithm without interruption and produces resultant data in report or
graphical format.
• A multiuser operating system on the other hand accepts inputs that have varied
content and arbitrary timing executes algorithms that can be interrupted by
external conditions and produces output that varies as a function of environment
andtime.
• It is somewhat difficult to develop meaningful generic categories for
softwareapplications.
• As software complexity grows neat
compartmentalizationdisappears. The following software areas
indicate the breadth of potentialapplications:
• SystemSoftware.
• Real-TimeSoftware.
• BusinessSoftware.
• Engineering and ScientificSoftware.
• EmbeddedSoftware.
• Personal ComputerSoftware.
• Artificial IntelligenceSoftware.
System Software:
System software is a collection of programs written to service other
programs. Some system software (e.g., compiler s editors and file management
utilities) processes complex but determinate information structures. Other systems
application (e.g., operating system components drivers telecommunications
processors) process largely indeterminate data. In either case the systems software
area is characterized by heavy interaction with computer hardware heavy usage by
multiple users; concurrent operation that requires scheduling resource sharing and
sophisticated process management.
Real-Time Software:
Programs that monitor/analyze/ control real world events as they occur are
called real-time software. Elements of real-time software include a data gathering
component that collects and formats information from an external environment
an analysis component that transforms information as required by the
application a control / output component that responds to the external environment
so that real-time response (typically ranging from 1 millisecond to 1 minute) can be
maintained. It should be noted that the term ―real-time‖ differs from
―interactive‖ or timesharing‖. A real-time system must respond within strict
timeconstraints.
Business Software:
Business information processing is the largest single software application area.
Discrete
―systems‖ have evolved into management information system (MIS) software that
accesses one or more large databases containing business information.
Applications in this area restructure existing data in a way that facilitates business
operation or management decision making. In addition to conventional data
processing applications, business software applications also encompass interactive
and client/servercomputing.
EmbeddedSoftware:
Intelligent products have become commonplace in nearly every consumer
and industrial market. Embedded software resides in read only memory and isused
to control products and systems for the consumer and industrial markets.
Embedded software can perform very limited and esoteric functions (e.g., digital
functions in an automobile such as fuel control, dashboard displays, braking
systems,etc.).
A feasibility analysis evaluates the project’s potential for success; therefore, perceived
objectivity is an essential factor in the credibility of the study for potential investors
and lending institutions. There are five types of feasibility study—separate areas that
a feasibility study examines, described below.
1. Technical Feasibility
2. Economic Feasibility
This assessment typically involves a cost/ benefits analysis of the project, helping
organizations determine the viability, cost, and benefits associated with a project
before financial resources are allocated. It also serves as an independent project
assessment and enhances project credibility—helping decision-makers determine
the positive economic benefits to the organization that the proposed project will
provide.
3. Legal Feasibility
This assessment investigates whether any aspect of the proposed project conflicts
with legal requirements like zoning laws, data protection acts or social media laws.
Let’s say an organization wants to construct a new office building in a specific
location. A feasibility study might reveal the organization’s ideal location isn’t zoned
for that type of business. That organization has just saved considerable time and
effort by learning that their project was not feasible right from the beginning.
4. Operational Feasibility
5. Scheduling Feasibility
This assessment is the most important for project success; after all, a project will
fail if not completed on time. In scheduling feasibility, an organization estimates
how much time the project will take to complete.
When these areas have all been examined, the feasibility analysis helps
identify any constraints the proposed project may face, including:
RequirementEngineering
The process to gather the software requirements from client, analyze, and
document them is known as requirement engineering.
• FeasibilityStudy
• RequirementGathering
• Software RequirementSpecification
• 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.
projectandproductsuchasusability,maintainability,productivity,andintegrat
ion ability.
The output of this phase should be a feasibility study report that should
contain
adequatecommentsandrecommendationsformanagementaboutwhetheror
not the project should beundertaken.
RequirementGathering
SRSisadocumentcreatedbysystemanalystaftertherequirementsarecollecte
d from variousstakeholders.
SRS defines how the intended software will interact with hardware,
external interfaces, speed of operation, response time of system,
portability of software across various platforms, maintainability, speed of
recovery after crashing, Security, Quality, Limitations etc.
• Technicalrequirementsareexpressedinstructuredlanguage,whichisu
sed inside theorganization.
• If they arecomplete
• Requirementsgathering-Thedevelopersdiscusswiththeclientandend
users and know their expectations from thesoftware.
Interviews
Interviews are strong medium to collect requirements. Organization may
conduct several types of interviews such as:
• Oralinterviews
• Written interviews
Questionnaires
A document with pre-defined set of objective questions and respective
options is handed over to all stakeholders to answer, which are collected
and compiled.
Task analysis
Team of engineers and developers may analyze the operation for which
the new system is required. If the client already has some software to
perform certain operation, it is studied and requirements of proposed
system are collected.
Domain Analysis
Every software falls into some domain category. The expert people in
thedomain can be a great help to analyze general and
specificrequirements.
Brainstorming
An informal debate is held among various stakeholders and all their
inputs are recorded for further requirements analysis.
Prototyping
Prototyping is building user interface without adding detail functionality
for user to interpret the features of intended software product. It helps
giving better idea of requirements. 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 prototype is shown to the client and the
feedback is noted. The client feedback serves as an input for requirement
gathering.
Observation
Team of experts visit the client’s organization or workplace. They observe
the
actualworkingoftheexistinginstalledsystems.Theyobservetheworkflowatthe
client’s end and how execution problems are dealt. The team itself draws
some conclusions which aid to form requirements expected from
thesoftware.
Document analysis
the current process. Documents like user manuals, software vendor manuals, process
documents about the current system can provide the inputs for the new system
requirements.
appropriate to be studied.
requirements document. Evaluating the documentation can assist in making the As-Is
process document, and conducting GAP analysis for scoping of the project in question.
Observation
stakeholders. This can provide information about the exiting process, inputs and
Interview
requirements.
Prototyping
Screen mockups can support the requirement gathering process, when introduced at
the correct time. Mockups help stakeholders visualize the functionality of a system.
This can be an advantage to business analysts and stakeholders since this allows
Brainstorming
Brainstorming is an efficient way to define their requirements. Users can come up with
very innovative ideas or requirements. This can help gather ideas and creative
Users or stakeholders can come up with ideas that they have seen or experienced
elsewhere. These ideas can be reviewed and the relevant ones can then be included in
Workshop
Workshops are used to scope, discover, define, and prioritize requirements for the
proposed system.
They are the most effective way to deliver high-quality requirements quickly. They
workshop. In the JAD session stakeholders and project team works together to
identify the requirements. These sessions allow the business team to gather and
to the overall success of the JAD session. The JAD team includes business process
Reverse engineering
Black box reverse engineering: The system is studied without examining its internal
White box reverse engineering: The inner workings of the system are studied
Surveys/Questionnaires
larger group of stakeholders. This enables the business team to gather requirements
from stakeholders remotely. The design of the questionnaire is very important, since it
In addition to the above-mentioned elicitation techniques, there are many more are
on the market. It is very difficult to say that which elicitation technique is suitable for
all projects. Not all elicitation techniques can be executed for every project.
When selecting an elicitation method, factors such as the nature of the project,
organizational structure and type of stakeholders are taken into account by the
business team before deciding which technique works best. Having said that,
1. Actor – It is the external agent that lies outside the system but interacts with it in
some way. An actor maybe a person, machine etc. It is represented as a stick
figure. Actors can be primary actors or secondary actors.
• Primary actors – It requires assistance from the system to achieve a goal.
• Secondary actor – It is an actor from which the system needs assistance.
2. Use cases – They describe the sequence of interactions between actors and the
system. They capture who(actors) do what(interaction) with the system. A
complete set of use cases specifies all possible ways to use the system.
3. Use case diagram – A use case diiagram graphically represents what happens
when an actor interacts with a system. It captures the functional aspect of the
system.
• A stick figure is used to represent an actor.
• An oval is used to represent a use case.
• A line is used to represent a relationship between an actor and a use case.
For more information on use case diagram, refer to – Designing Use Cases for a
Project
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts
with the DSA Self Paced Course at a student-friendly price and become industry ready
• Brainstorming: create a list of ideas using words and/or pictures.
• Workshops or Focus Groups: if you need input from SMEs or end-users in the
same department or a cluster of targeted consumers that share similar end-user
characteristics, then this may be the best choice.
Once you have your tools list, you can further refine and define your approach by
generating a document that answers the following questions:
Software Requirements
We should try to understand what sort of requirements may arise in the
requirement elicitation phase and what kinds of requirement are
expected from the software system.
Functional Requirements
Requirements, which are related to functional aspect of software fall into
this category.
They define functions and functionality within and from the software
system. EXAMPLES -
• Search option given to user to search from variousinvoices.
• Users can be divided into groups and groups can be given separaterights.
Non-Functional Requirements
Requirements,whicharenotrelatedtofunctionalaspectofsoftware,fallintothis
category. They are implicit or expected characteristics of software, which
users make assumptionof.
• easy tooperate
• quick in response
• effectively handling operationalerrors
• providing simple yet consistent userinterface
User acceptance majorly depends upon how user can use the software.
UI is the only way for users to perceive the system. A well performing
software system must also be equipped with attractive, clear, consistent,
and responsive user interface. Otherwise the functionalities of software
system can not be used in convenient way. A system is said to be good if
it provides means to use it efficiently. User interface requirements are
briefly mentioned below –
• Contentpresentation
• EasyNavigation
• Simpleinterface
• Responsive
• Consistent UIelements
• Feedbackmechanism
• Defaultsettings
• Purposefullayout
• Strategical use of color andtexture.
• Provide helpinformation
• User centricapproach
• Group based viewsettings.
• Thenumberofdefectsfoundindevelopmentprocessandnumberofdef
ects reported by the client after the product is installed or
delivered at client- end, define quality of theproduct.
• ProcessMetrics-InvariousphasesofSDLC,themethodsandtoolsused,
the company standards and the performance of development are
software processmetrics.
Requirements Validation
There are several techniques which are used either individually or in conjunction with
other techniques to check to check entire or part of the system:
5. Walk-through:
A walkthrough does not have a formally defined procedure and does not require a
differentiated role assignment.
• Checking early whether the idea is feasible or not.
• Obtaining the opinions and suggestion of other people.
• Checking the approval of others and reaching an agreement.
Software verification and validation is an important model that allows the team of
software developers and testers to ensure the accurate development of the product
throughout the development life cycle. Both software verification and
validation help create a software product that efficiently meets the specified
requirements of the customer and offers them optimum services.Therefore, let us
discuss software verification in detail to better understand its relevance in
the software development life cycle (SDLC).
to confirm their credibility and accuracy.In the field of software engineering, software
product.
detection of defects and faults in the early stage of the development life cycle and to
Software verification offers answers to our query of "Are we building the software
product in a right manner?" However, if the software passes during the verification
process, it does not guarantee its validity. It is highly possible that a software product
goes well through the verification process, but might fail to achieve the desired
requirements.
In the realm of the software industry, software verification plays an integral role in
building the product as per the requirements and needs of the customer. Other
• Software verification can be termed as the first stage of the software testing
Software verifications are of two types, each of which, is focused on verifying various
aspects of the software and ensuring its high quality. Together, these two verification
types ensure that the software conforms to and satisfies specified requirements. The
its execution, which ensures that the software meets its specified requirements
and specifications.
techniques.
and is being carried out along with the execution of software. Also, know by
'Test phase' dynamic verification executes test data on the software, to assess
o The team selects a group of test cases consisting of tests data, which are
phase and intermediary software product, based on the pre-defined specifications and
guidelines.
It ensures that the methodology used for software development adheres to the
specified specifications, set-up before the development phase, to build the correct
software product.
Thus, this process requires cross-checking of these pre-defined specifications with the
partially developed software product, to satisfy the process of carrying out the
Approaches:
and inspection, which together helps to evaluate the accuracy of the product and
ensure its quality. Therefore, defined below are these approaches of software
verification:
software development, goes through the software product and have discussion
3. Inspection: It is one of the preferred and most common methods of the static
processes, which makes the process of software development easy and allows the
team to create an end product that conforms to the rules and regulations, as well as
• It helps reduce the number of defects found during the later stages of
development.
• Verifying the software in its initial development phase allows the team to get a
Software verification and validation are two of the most important processes used for
ensuring the quality and accuracy of the product. However, these are usually confused
Usually, the customers are not able to understand the development process and not
clear on what they want from the system, at the same time the development team
does not understand customers’ requirements. This communication gap is usually
filled by the Business Analyst by preparing an SRS.
• It is an agreement between the client and the supplier on what the software
is supposed to do.
• SRS works as a base for any further development and testing documents that
need to be prepared for the development and testing processes. These
documents include design documents, test plans, test scenarios, etc.
• SRS is used for validation of the final product i.e. once the final product is
ready, the client, the development team, and the testing team can be assured
that the product matches all the requirements in the document.
Correct – Requirements should be correct and should reflect exactly what the client
wants. Every requirement should be such that it is required in the final product.
User review is used to ensure the correctness of requirements stated in the SRS. SRS
is said to be correct if it covers all the requirements that are actually expected from
the system.
Consistent – SRS is said to be consistent if there aren’t any conflicts between the
requirements.
Ranking for importance and stability – Each requirement should be ranked for its
importance or stability.
Design Independence – SRS should include options of design alternatives for the
final system; it should not have any implementation details.
SRS Principles
4. Define the environment in which the system operates and indicate how a highly
intertwined collection of agents react to stimuli in the environments (change to
objects) produced by those agents.
Software design is the first step in SDLC (Software Design Life Cycle),
which moves the concentration from problem domain to solution domain.
It tries to specify how to fulfill the requirements mentioned in SRS.
Software DesignLevels
Software design yields three levels of results:
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.Thesemodulesmayworkasbasicconstructsfortheentir
e
software.Designerstendtodesignmodulessuchthattheycanbeexecutedand/
or compiled separately andindependently.
Advantage ofmodularization:
Concurrency
Back in time, all software are meant to be executed sequentially. By
sequential execution, we mean that the coded instruction will be
executed one afteranother implying only one portion of program being
activated at any given time. Say, a software has multiple modules, then
only one of all the modules can be found active at any time ofexecution.
Coupling andCohesion
When a software program is modularized, its tasks are divided into
several modules based on some characteristics. As we know, modules
are set of instructions put together in order to achieve some tasks. They
are though,
consideredasasingleentitybut,mayrefertoeachothertoworktogether.There
are measures by which the quality of a design of modules and their
interaction
amongthemcanbemeasured.Thesemeasuresarecalledcouplingandcohesion
.
Cohesion
Cohesion is a measure that defines the degree of intra-dependability
within
elementsofamodule.Thegreaterthecohesion,thebetteristheprogramdesign.
Coupling
Couplingisameasurethatdefinesthelevelofinter-
dependabilityamongmodules of a program. It tells at what level the
modules interfere and interact with each other. The lower the coupling,
the better theprogram.
• Commoncoupling-
Whenmultiplemoduleshavereadandwriteaccessto some global
data, it is called common or globalcoupling.
DesignVerification
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.
For good quality software to be produced, the software design must also be of
good quality. Now, the matter of concern is how the quality of good software
design is measured? This is done by observing certain factors in software design.
These factors are:
1. Correctness
2. Understandability
3. Efficiency
4. Maintainability
1) Correctness
First of all, the design of any software is evaluated for its correctness. The evaluators
check the software for every kind of input and action and observe the results that
the software will produce according to the proposed design. If the results are
correct for every input, the design is accepted and is considered that the software
produced according to this design will function correctly.
2) Understandability
The software design should be understandable so that the developers do not find
any difficulty to understand it. Good software design should be self- explanatory.
This is because there are hundreds and thousands of developers that develop
different modules of the software, and it would be very time consuming to explain
each design to each developer. So, if the design is easy and self- explanatory, it
would be easy for the developers to implement it and build the same software that
is represented in the design.
3) Efficiency
The software design must be efficient. The efficiency of the software can be
estimated from the design phase itself, because if the design is describing software
that is not efficient and useful, then the developed software would also stand on
the same level of efficiency. Hence, for efficient and good quality software to be
developed, care must be taken in the designing phase itself.
4) Maintainability
The software design must be in such a way that modifications can be easily made in
it. This is because every software needs time to time modifications and
maintenance. So, the design of the software must also be able to bear such
changes. It should not be the case that after making some modifications the other
features of the software start misbehaving. Any change made in the software design
must not affect the other available features, and if the features are getting affected,
then they must be handled properly.
Software Analysisand
Design Tools
Softwareanalysisanddesignincludesallactivities,whichhelpthetransformatio
n of requirement specification into implementation. Requirement
specifications specify all functional and non-functional expectations from
the software. These requirement specifications come in the shape of
human readable and understandable documents, to which a computer
has nothing todo.
Let us see few analysis and design tools used by software designers:
Data FlowDiagram
Data Flow Diagram (DFD) is a graphical representation of flow of data in
an information system. It is capable of depicting incoming data flow,
outgoing data flow, and stored data. The DFD does not mention anything
about how data flows through the system.
ThereisaprominentdifferencebetweenDFDandFlowchart.Theflowchartdepic
ts flow of control in program modules. DFDs depict flow of data in the
system at various levels. It does not contain any control or
branchelements.
Types of DFD
Data Flow Diagrams are either Logical or Physical.
• Physical DFD - This type of DFD shows how the data flow is actually
implemented in the system. It is more specific and close to the
implementation.
DFD Components
DFD can represent source, destination, storage, and flow of data using
the following set of components -
• Entities -
Entitiesaresourcesanddestinationsofinformationdata.Entities are
represented by rectangles with their respectivenames.
• Process-ActivitiesandactiontakenonthedataarerepresentedbyCircle
or Round-edgedrectangles.
• 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 sidemissing.
Levels of DFD
• Level 0 - Highest abstraction level DFD is known as Level 0 DFD,
which depicts the entire information system as one diagram
concealing all the underlying details. Level 0 DFDs are also known
as context levelDFDs.
• Level 1 - The Level 0 DFD is broken down into more specific, Level
1DFD. Level 1 DFD depicts basic modules in the system and flow of
data among various modules. Level 1 DFD also mentions basic
processes and sources ofinformation.
• Level 2 - At this level, DFD shows how data flows inside the
modules mentioned in Level1.
Structure Charts
Structure chart is a chart derived from Data Flow Diagram. It represents
the system in more detail than DFD. 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.
HIPODiagram
Hierarchical Input Process Output (HIPO) diagram is a combination of
two organized methods to analyze the system and provide the means of
documentation. HIPO model was developed by IBM in year 1970.
HIPOdiagramrepresentsthehierarchyofmodulesinthesoftwaresystem.Analy
st usesHIPOdiagraminordertoobtainhigh-levelviewofsystemfunctions.It
decomposes functions into sub-functions in a hierarchical manner. It
depicts the functions performed by system.
Example
BothpartsofHIPOdiagram,Hierarchicalpresentation,andIPOChartareusedfor
structure designing of software program as well as documentation of
thesame.
StructuredEnglish
Most programmers are unaware of the large picture of software so they
only rely on what their managers tell them to do. 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. It is nothing but the description of what is required to
code and how to code it. Structured English helps the programmer to
write error-free code. Here, both Structured English and Pseudo-Code
tries to mitigate that understanding gap.
StructuredEnglishusesplainEnglishwordsinstructuredprogrammingparadig
m. It is not the ultimate code but a kind of description what is required to
code and how to code it. The following are some tokens of
IF-THEN-ELSE,
DO-WHILE-UNTIL
structuredprogramming:
Analyst uses the same variable and data name, which are stored in Data
Dictionary, making it much simpler to write and understand the code.
Example
We take the same example of Customer Authentication in the online
shopping environment. This procedure to authenticate customer can be
written in Structured English as:
Enter Customer_Name
ENDIF
Pseudo-Code
Pseudocodeiswrittenmoreclosetoprogramminglanguage.Itmaybeconsidere
d as augmented programming language, full of comments,
anddescriptions.
Pseudo code avoids variable declaration but they are written using some
actual programming language’s constructs, like C, Fortran, Pascal, etc.
Example
Program to print Fibonacci up to n numbers.
Initialize I to 0 for
(i=0; i<n;i++)
{
Increase b by a; Print b;
}
increase a by b;
print a;
}
}
Decision Tables
A Decision table represents conditions and the respective actions to be
taken to address them, in a structured tabular format.
Itisapowerfultooltodebugandpreventerrors.Ithelpsgroupsimilarinformation
into a single table and then by combining tables it delivers easy and
convenient decision-making.
Creating Decision Table
To create the decision table, the developer must follow basic four steps:
Example
Let us take a simple example of day-to-day problem with our Internet
connectivity.Webeginbyidentifyingallproblemsthatcanarisewhilestartingthe
internet and their respective possiblesolutions.
Welistallpossibleproblemsundercolumnconditionsandtheprospectiveaction
s under columnActions.
Conditions/Actions Rules
Shows Connected N N N N Y Y Y Y
Opens Website Y N Y N Y N Y N
Do no action
Decision Tree Analysis is a general, predictive modelling tool that has applications spanning a number
of different areas. In general, decision trees are constructed via an algorithmic approach that identifies
ways to split a data set based on different conditions. It is one of the most widely used and practical
methods for supervised learning. Decision Trees are a non-parametric supervised learning method
used for both classification and regression tasks. The goal is to create a model that predicts the value
of a target variable by learning simple decision rules inferred from the data features.
The decision rules are generally in form of if-then-else statements. The deeper the tree, the more
complex the rules and fitter the model.
Before we dive deep, let's get familiar with some of the terminologies:
• Instances: Refer to the vector of features or attributes that define the input space
• Attribute: A quantity describing an instance
• Concept: The function that maps input to output
• Target Concept: The function that we are trying to find, i.e., the actual answer
• Hypothesis Class: Set of all the possible functions
• Sample: A set of inputs paired with a label, which is the correct output (also known as the
Training Set)
• Candidate Concept: A concept which we think is the target concept
• Testing Set: Similar to the training set and is used to test the candidate concept and determine
its performance
Introduction
A decision tree is a tree-like graph with nodes representing the place where we pick an attribute and
ask a question; edges represent the answers the to the question; and the leaves represent the actual
output or class label. They are used in non-linear decision making with simple linear decision surface.
Decision trees classify the examples by sorting them down the tree from the root to some leaf node,
with the leaf node providing the classification to the example. Each node in the tree acts as a test case
for some attribute, and each edge descending from that node corresponds to one of the possible
answers to the test case. This process is recursive in nature and is repeated for every subtree rooted at
the new nodes.
Let's illustrate this with help of an example. Let's assume we want to play badminton on a particular day
— say Saturday — how will you decide whether to play or not. Let's say you go out and check if it's hot
or cold, check the speed of the wind and humidity, how the weather is, i.e. is it sunny, cloudy, or rainy.
You take all these factors into account to decide if you want to play or not.
So, you calculate all these factors for the last ten days and form a lookup table like the one below.
Now, you may use this table to decide whether to play or not. But, what if the weather pattern on
Saturday does not match with any of rows in the table? This may be a problem. A decision tree would
be a great way to represent data like this because it takes into account all the possible paths that can
lead to the final decision by following a tree-like structure.
Fig 1. A decision tree for the concept Play Badminton
Fig 1. illustrates a learned decision tree. We can see that each node represents an attribute or feature
and the branch from each node represents the outcome of that node. Finally, its the leaves of the tree
where the final decision is made. If features are continuous, internal nodes can test the value of a
feature against a threshold (see Fig. 2).
Fig 2. A decision tree for the concept Play Badminton (when attributes are continuous)
1. Pick the best attribute/feature. The best attribute is one which best splits or separates the data.
2. Ask the relevant question.
3. Follow the answer path.
4. Go to step 1 until you arrive to the answer.
The best split is one which separates two different labels into two sets.
Decision trees can represent any boolean function of the input attributes. Let’s use decision trees to
perform the function of three boolean gates AND, OR and XOR.
In Fig 3., we can see that there are two candidate concepts for producing the decision tree that
performs the AND operation. Similarly, we can also produce a decision tree that performs the boolean
OR operation.
Boolean Function: OR
In the decision tree, shown above (Fig 6.), for three attributes there are 7 nodes in the tree, i.e., for $n =
3$, number of nodes = $2^3-1$. Similarly, if we have $n$ attributes, there are $2^n$ nodes (approx.) in
the decision tree. So, the tree requires exponential number of nodes in the worst case.
We can represent boolean operations using decision trees. But, what other kind of functions can we
represent and if we search over the various possible decision trees to find the right one, how many
decision trees do we have to worry about. Let’s answer this question by finding out the possible number
of decision trees we can generate given N different attributes (assuming the attributes are boolean).
Since a truth table can be transformed into a decision tree, we will form a truth table of N attributes as
input.
X1 X2 X3 .... XN OUTPUT
X1 X2 X3 .... XN OUTPUT
T T T ... T
T T T ... F
F F F ... F
The above truth table has $2^n$ rows (i.e. the number of nodes in the decision tree), which represents
the possible combinations of the input attributes, and since each node can a hold a binary value, the
number of ways to fill the values in the decision tree is ${2^{2^n}}$. Thus, the space of decision trees,
i.e, the hypothesis space of the decision tree is very expressive because there are a lot of different
functions it can represent. But, it also means one needs to have a clever way to search the best tree
among them.
Decision trees divide the feature space into axis-parallel rectangles or hyperplanes. Let’s demonstrate
this with help of an example. Let’s consider a simple AND operation on two variables (see Fig 3.).
Assume X and Y to be the coordinates on the x and y axes, respectively, and plot the possible values of
X and Y (as seen the table below). Fig 7. represents the formation of the decision boundary as each
decision is taken. We can see that as each decision is made, the feature space gets divided into
smaller rectangles and more data points get correctly classified.
Fig 7.
Animation showing the formation of the
Entity-RelationshipModel
Entity-Relationshipmodelisatypeofdatabasemodelbasedonthenotionofreal
worldentitiesandrelationshipamongthem.Wecanmaprealworldscenarioonto
ER database model. ER Model creates a set of entities with their
attributes, a set of constraints and relation amongthem.
• one toone
• one tomany
• many toone
• many tomany
Data Dictionary
Data dictionary is the centralized collection of information about data. It
stores
meaningandoriginofdata,itsrelationshipwithotherdata,dataformatforusage,
etc.Datadictionaryhasrigorousdefinitionsofallnamesinordertofacilitateuser
and softwaredesigners.
Contents
Data dictionary should contain information about the following:
• DataFlow
• DataStructure
• DataElements
• DataStores
• DataProcessing
Data Flow is described by means of DFDs as studied earlier and
represented in algebraic form as described.
= Composed of
{} Repetition
() Optional
+ And
[/] Or
Example
Address = House No + (Street / Area) + City + State
Data Elements
Data elements consist of Name and descriptions of Data and
Control Items, Internal or External data stores etc. with the
following details:
• PrimaryName
• Secondary Name(Alias)
• Use-case (How and where touse)
• Files
o Internal tosoftware.
o External to software but on the samemachine.
o External to software and system, located on differentmachine.
• Tables
o Namingconvention
o Indexingproperty
Data Processing
There are two types of Data Processing:
• Logical: As user seesit
• Physical: As software seesit
Userinterfaceispartofsoftwareandisdesignedinsuchawaythatitisexpected to
provide the user insight of the software. UI provides fundamental
platform for human-computerinteraction.
• Command LineInterface
• Graphical UserInterface
CLI provides a command prompt, the place where the user types the
command and feeds to the system. The user needs to remember the
syntax of command
anditsuse.EarlierCLIwerenotprogrammedtohandletheusererrorseffectively.
Acommandisatext-basedreferencetosetofinstructions,whichareexpectedto
be executed by the system. There are methods like macros, scripts that
make it easy for the user tooperate.
CLI Elements
GUI Elements
GUI provides a set of components to interact with software or hardware.
Everygraphicalcomponentprovidesawaytoworkwiththesystem.AGUIsystem
has following elements suchas:
• Icon-
Aniconissmallpicturerepresentinganassociatedapplication.When
theseiconsareclickedordoubleclicked,theapplicationwindowisopene
d.
Icondisplaysapplicationandprogramsinstalledonasystemintheformo
f smallpictures.
• DialogueBox-Itisachildwindowthatcontainsmessagefortheuserand
request for some action to be taken. For Example: Application
generate a dialogue to get confirmation from user to delete afile.
• List-box-
Provideslistofavailableitemsforselection.Morethanoneitem can
beselected.
• Sliders
• Combo-box
• Data-grid
• Drop-downlist
• UserAnalysis-ThedesignerstudieswhoisgoingtousethesoftwareGUI.
The target audience matters as the design details change according
to the knowledge and competency level of the user. If user is
technical savvy, advanced and complex GUI can be incorporated.
For a novice user, more information is included on how-to
ofsoftware.
There are different segments of GUI tools according to their different use
and platform.
Example
MobileGUI,ComputerGUI,Touch-ScreenGUIetc.Hereisalistoffewtoolswhich
come handy to buildGUI:
• FLUID
• AppInventor(Android)
• LucidChart
• Wavemaker
• VisualStudio
• Offersimpleerrorhandling-Asmuchaspossible,designthesystemso
the user will not make a serious error. If an error is made, the
system should be able to detect it and offer simple,
comprehensible mechanisms for handling theerror.
• Permiteasyreversalofactions-Thisfeaturerelievesanxiety,sincethe
userknowsthaterrorscanbeundone.Easyreversalofactionsencourage
s exploration of unfamiliar options. The units of reversibility may be
a single action, a data entry, or a complete group ofactions.
There are multiple variants of software design. Let us study them briefly:
StructuredDesign
Structured design is a conceptualization of problem into several well-
organized elements of solution. It is basically concerned with the solution
design. Benefit of structured design is, it gives better understanding of
how the problem is being
solved.Structureddesignalsomakesitsimplerfordesignertoconcentrateonthe
problem moreaccurately.
Function OrientedDesign
In function-oriented design, the system comprises of many smaller sub-
systems known as functions. These functions are capable of performing
significant task in the system. 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. These functional modules can share information among
themselves by means of information passing and using information
available globally.
Design Process
• Thewholesystemisseenashowdataflowsinthesystembymeansofdata
flowdiagram.
• DFD depicts how functions change data and state of the entiresystem.
Object OrientedDesign
Object Oriented Design (OOD) works around the entities and their
characteristics instead of functions involved in the software system. This
design strategies focuses on entities and its characteristics. The whole
concept of softwaresolution revolves around the engagedentities.
Design Process
Software design process can be perceived as series of well-defined
steps.Though
itvariesaccordingtodesignapproach(functionorientedorobjectoriented,yetIt
may have the following stepsinvolved:
Top-down design takes the whole software system as one entity and then
decomposesittoachievemorethanonesub-
systemorcomponentbasedonsome characteristics. Each sub-system or
component is then treated as a system and decomposed further. This
process keeps on running until the lowest level of system in the top-down
hierarchy isachieved.
Top-downdesignstartswithageneralizedmodelofsystemandkeepsondefining
the more specific part of it. When all the components are composed the
whole system comes intoexistence.
Top-
downdesignismoresuitablewhenthesoftwaresolutionneedstobedesigned
from scratch and specific details areunknown.
Bottom-up Design
The bottom up design model starts with most specific and basic
components. It
proceedswithcomposinghigherlevelofcomponentsbyusingbasicorlowerlevel
components. It keeps creating higher level components until the desired
system is not evolved as one single component. With each higher level,
the amount of abstraction isincreased.
Both,top-downandbottom-
upapproachesarenotpracticalindividually.Instead, a good combination of
both isused.
Unit – 5
Testing Techniques
SoftwareValidation
Validation is process of examining whether or not the software satisfies
the user requirements. It is carried out at the end of the SDLC. If the
software matches requirements for which it was made, it is validated.
SoftwareVerification
Verification is the process of confirming if the software is meeting the
business requirements, and is developed adhering to the proper
specifications and methodologies.
• Verificationanswersthequestion–
"Arewedevelopingthisproductbyfirmly following all design
specifications?"
• Errors-
Theseareactualcodingmistakesmadebydevelopers.Inaddition,
thereisadifferenceinoutputofsoftwareanddesiredoutput,isconsider
ed as anerror.
• Fault - When error exists fault occurs. A fault, also known as a bug,
is a result of an error which can cause system tofail.
Manual VsAutomatedTesting
Testing can either be done manually or using an automated testing tool:
• Manual - This testing is performed without taking help of
automated testing tools. The software tester prepares test cases
for different sections and levels of the code, executes the tests and
reports the result to the manager.
Manualtestingistimeandresourceconsuming.Thetestern
eedstoconfirm whether or not right test cases are
used. Major portion of testing involves manualtesting.
• Automated This testing is a testing procedure done with aid
ofautomated testing tools. The limitations with manual testing can
be overcome using automated testtools.
There are software and hardware tools which helps tester in conducting
load testing, stress testing, regression testing.
Testing Approaches
Tests can be conducted based on two approaches –
1. Functionalitytesting
2. Implementationtesting
When functionality is being tested without taking the actual
implementation in concern it is known as black-box testing. The other
side is known as white-box
testingwherenotonlyfunctionalityistestedbutthewayitisimplementedisalso
analyzed.
Exhaustive tests are the best-desired method for a perfect testing. Every
single possible value in the range of the input and output values is
tested. It is not
possibletotesteachandeveryvalueinrealworldscenarioiftherangeofvalues is
large.
Black-box testing
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.
In this testing method, the design and structure of the code are not
known tothe tester, and testing engineers and end users conduct this
test on the software.
• Boundary values - The input is divided into higher and lower end
values. If these values pass the test, it is assumed that all values in
between may pass too.
White-box testing
It is conducted to test program and its implementation, in order to
improve code efficiency or structure. It is also known as ‘Structural’
testing.
In this testing method, the design and structure of the code are known to
the tester. Programmers of the code conduct this test on the code.
TestingLevels
Testing itself may be defined at various levels of SDLC. The testing
process runs parallel to software development. Before jumping on the
next stage, a stage is tested, validated and verified.
Testing separately is done just to make sure that there are no hidden
bugs or issues left in the software. 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. Testing is performed under white-box
testing approach. Unit testing helps developers decide that individual
units of the program are working as per requirement and are error free.
Integration Testing
Even if the units of software are working fine individually, there is a need
to find
outiftheunitsifintegratedtogetherwouldalsoworkwithouterrors.Forexample,
argument passing and data updationetc.
System Testing
The software is compiled as product and then it is tested as a whole. This
can be accomplished using one or more of the following tests:
• Functionalitytesting-Testsallfunctionalitiesofthesoftwareagainstthe
requirement.
• Security&Portability-Thesetestsaredonewhenthesoftwareismeant
to work on various platforms and accessed by number ofpersons.
Acceptance Testing
Whenthesoftwareisreadytohandovertothecustomerithastogothroughlast
phase of testing where it is tested for user-interaction and response. This
is important because even if the software matches all user requirements
and ifuser does not like the way it appears or works, it may berejected.
TestingDocumentation
Testing documents are prepared at different stages -
Before Testing
Testing starts with test cases generation. Following documents are
needed for reference –
• Test Policy document - This describes how far testing should take
place before releasing theproduct.
• Testdescription-Thisdocumentisadetaileddescriptionofalltestcases
and procedures to executethem.
• Test logs - This document contains test logs for every test casereport.
After Testing
The following documents may be generated after testing :
• Testsummary-Thistestsummaryiscollectiveanalysisofalltestreports
and logs. It summarizes and concludes if the software is ready to be
launched. The software is released under version control system if
it is ready tolaunch.
Testingvs.QualityControl&AssuranceandAudit
We need to understand that software testing is different from software
quality assurance, software quality control and software auditing.
• Software quality assurance - These are software development
process monitoring means, by which it is assured that all the
measures are taken as per the standards of organization. This
monitoring is done to make sure that proper software
development methods werefollowed.
• Softwareaudit-Thisisareviewofprocedureusedbytheorganizationto
developthesoftware.Ateamofauditors,independentofdevelopmentt
eam
examinesthesoftwareprocess,procedure,requirementsandotherasp
ects of SDLC. The purpose of software audit is to check that
software and its development process, both conform standards,
rules andregulations.
Software Quality Assurance (SQA)
What is Software Quality Assurance?
Software quality assurance (SQA) is a process which assures that all software engineering
processes, methods, activities and work items are monitored and comply against the defined
standards. These defined standards could be one or a combination of any like ISO 9000,
CMMI model, ISO15504, etc.
SQA incorporates all software development processes starting from defining requirements to
coding until release. Its prime goal is to ensure quality.
SQA Activities
Given below is the list of SQA activities:
#1) Creating an SQA Management Plan:
The foremost activity includes laying down a proper plan regarding how the SQA will be
carried out in your project.
Along with what SQA approach you are going to follow, what engineering activities will be
carried out, and it also includes ensuring that you have a right talent mix in your team.
Later, based on the information gathered, the software designer can prepare the project
estimation using techniques like WBS (work breakdown structure), SLOC (source line of
codes), and FP(functional point) estimation.
In this process, a meeting is conducted with the technical staff to discuss regarding the actual
quality requirements of the software and the design quality of the prototype. This activity helps
in detecting errors in the early phase of SDLC and reduces rework effort in the later phases.
This activity is a blend of two sub-activities which are explained below in detail:
(i) Product Evaluation:
This activity confirms that the software product is meeting the requirements that were
discovered in the project management plan. It ensures that the set standards for the project
are followed correctly.
By validating the change requests, evaluating the nature of change and controlling the change
effect, it is ensured that the software quality is maintained during the development and
maintenance phases.
For this purpose, we use software quality metrics which allows managers and developers to
observe the activities and proposed changes from the beginning till the end of SDLC and
initiate corrective action wherever required.
It also checks whatever reported by the team in the status reports were actually performed or
not. This activity also exposes any non-compliance issues.
We often hear that testers and developers often feel superior to each other. This should be
avoided as it can affect the overall project quality.
Cost of quality (COQ) is defined as a methodology that allows an organization to determine the extent
to which its resources are used for activities that prevent poor quality, that appraise the quality of the
organization’s products or services, and that result from internal and external failures. Having such
information allows an organization to determine the potential savings to be gained by implementing
process improvements.
1. Appraisal costs are costs incurred to determine the degree of conformance to quality requirements.
2. Internal failure costs are costs associated with defects found before the customer receives the
product or service.
3. External failure costs are costs associated with defects found after the customer receives the product
or service.
Quality-related activities that incur costs may be divided into prevention costs, appraisal costs, and
internal and external failure costs.
Appraisal costs
Appraisal costs are associated with measuring and monitoring activities related to quality. These costs
are associated with the suppliers’ and customers’ evaluation of purchased materials, processes,
products, and services to ensure that they conform to specifications. They could include:
• Verification: Checking of incoming material, process setup, and products against agreed specifications
• Quality audits: Confirmation that the quality system is functioning correctly
• Supplier rating: Assessment and approval of suppliers of products and services
• Repairs and servicing: Of both returned products and those in the field
• Warranty claims: Failed products that are replaced or services that are re-performed under a guarantee
• Complaints: All work and costs associated with handling and servicing customers’ complaints
• Returns: Handling and investigation of rejected or recalled products, including transport costs
PREVENTION COSTS
Prevention costs are incurred to prevent or avoid quality problems. These costs are associated with the
design, implementation, and maintenance of the quality management system. They are planned and
incurred before actual operation, and they could include:
These costs must be a true measure of the quality effort, and they are best determined from an analysis
of the costs of quality. Such an analysis provides a method of assessing the effectiveness of the
management of quality and a means of determining problem areas, opportunities, savings, and action
priorities.
Cost of quality is also an important communication tool. Philip Crosby demonstrated what a powerful
tool it could be to raise awareness of the importance of quality. He referred to the measure as the "price
of nonconformance" and argued that organizations choose to pay for poor quality.
Many organizations will have true quality-related costs as high as 15-20% of sales revenue, some going
as high as 40% of total operations. A general rule of thumb is that costs of poor quality in a thriving
company will be about 10-15% of operations. Effective quality improvement programs can reduce this
substantially, thus making a direct contribution to profits.
The quality cost system, once established, should become dynamic and have a positive impact on the
achievement of the organization’s mission, goals, and objectives.
Cost of Quality Example
Cost of Quality: Why More Organizations Do Not Use It Effectively (World Conference on Quality
and Improvement) Quality managers in organizations that do not track cost of quality cite as reasons a
lack of management support for quality control, time and cost of COQ tracking, lack of knowledge of
how to track data, and lack of basic cost data.
The Tip of the Iceberg (Quality Progress) A Six Sigma initiative focused on reducing the costs of poor
quality enables management to reap increased customer satisfaction and bottom-line results.
Cost of Quality (COQ): Which Collection System Should Be Used? (World Conference on Quality
and Improvement) This article identifies the various COQ systems available and the benefits and
disadvantages of using each system.
Quality Control (QC) refers to quality related activities associated with the process of creating
products and services. Quality control is used to verify that pre-determined quality standards are
being met through quality inspections and reviews which detect poor quality, and identify, non-
conformance with those standards
Quality Assurance is the process used to assure the consumer that a firm's products or services will
be fit for purpose, by preventing quality issues rather than detecting them. The objective is to meet
quality standards at each stage of production to ensure customer satisfaction with the final product
or service. Examples of quality assurance include process checklists, project audits and
methodology and standards development. Quality assurance is recognised by the international
standard ISO 9000.
Involvement of people:
1. Between 3, 4 and 5 people should be involve in the review.
2. Advance preparation should occur but it should be very short that is at the most 2 hours of
work for every person.
3. The short duration of the review meeting should be less than two hour. Gives these
constraints, it should be clear that an FTR focuses on specific (and small) part of the overall
software.
At the end of the review, all attendees of FTR must decide what to do.
1. Accept the product without any modification.
2. Reject the project due to serious error (Once corrected, another app need to be reviewed), or
3. Accept the product provisional (minor errors are encountered and are should be corrected,
but no additional review will be required).
The decision was made, with all FTR attendees completing a sign-of indicating their
participation in the review and their agreement with the findings of the review team.
Review guidelines :-
Guidelines for the conducting of formal technical reviews should be established in
advance. These guidelines must be distributed to all reviewers, agreed upon, and then
followed. A review that is unregistered can often be worse than a review that does not
minimum set of guidelines for FTR.
1. Review the product, not the manufacture (producer).
2. Take written notes (record purpose)
3. Limit the number of participants and insists upon advance preparation.
4. Develop a checklist for each product that is likely to be reviewed.
5. Allocate resources and time schedule for FTRs in order to maintain time schedule.
6. Conduct meaningful training for all reviewers in order to make reviews effective.
7. Reviews earlier reviews which serve as the base for the current review being conducted.
8. Set an agenda and maintain it.
9. Separate the problem areas, but do not attempt to solve every problem notes.
10. Limit debate and rebuttal.
A SCI is a major software component of a system that is designated by the Buyer for configuration
management to ensure integrity of the delivered product. It may exist at any level of the hierarchy,
where interchangeability is required. Each SCI is to have (as appropriate) individual design reviews,
individual qualification certification, individual acceptance reviews and separate user manuals
• Configuration Identification
• Baselines
• Change Control
• Configuration Status Accounting
• Configuration Audits and Reviews
Configuration Identification:
Example:
Baseline:
Change Control:
Configuration status accounting tracks each release during the SCM process.
This stage involves tracking what each version has and the changes that lead to
this version.
• Keeps a record of all the changes made to the previous baseline to reach
a new baseline
• Identify all items to define the software configuration
• Monitor status of change requests
• Complete listing of all changes since the last baseline
• Allows tracking of progress to next baseline
• Allows to check previous releases/versions to be extracted for testing
Software Configuration audits verify that all the software product satisfies the
baseline needs. It ensures that what is built is what is delivered.
1. Configuration Manager
2. Developer
3. Auditor
5. User
The end user should understand the key SCM terms to ensure he has the latest
version of the software
• The SCMP can follow a public standard like the IEEE 828 or organization
specific standard
• It defines the types of documents to be management and a document
naming. Example Test_v1
• SCMP defines the person who will be responsible for the entire SCM
process and creation of baselines.
• Fix policies for version management & change control
• Define tools which can be used during the SCM process
• Configuration management database for recording configuration
information.
Any Change management software should have the following 3 Key features:
Concurrency Management:
When two or more tasks are happening at the same time, it is known as
concurrent operation. Concurrency in context to SCM means that the same file
being edited by multiple persons at the same time.
If concurrency is not managed correctly with SCM tools, then it may create many
pressing issues.
Version Control:
SCM uses archiving method or saves every change made to file. With the help
of archiving or save feature, it is possible to roll back to the previous version in
case of issues.
Synchronization:
Users can checkout more than one files or an entire copy of the repository. The
user then works on the needed file and checks in the changes back to the
repository.They can synchronize their local copy to stay updated with the
changes made by other team members.
Unit – 6
• What is Software Maintenance?
• Problems during Software Maintenance
• Categories of Software Maintenance: Corrective Maintenance,Adaptive Maintenance
• Perfective Maintenance and Preventive Maintenance
• Potential Solutions to Maintenance: Budget and efforts reallocation, complete
replacement, maintenance of existing system
• Maintenance Process and Models: Maintenance Process, Fix Model, Iterative
Enhancement Model, Reuse Oriented Model, Boehm Model and Taute’s Models
Software maintenance is widely accepted part of SDLC now a days. It
stands for all the modifications and updations done after the delivery of
software product. There are number of reasons, why modifications are
required, some of them are briefly mentioned below:
• ClientRequirements-Overthetime,customermayaskfornewfeatures
or functions in thesoftware.
Types ofmaintenance
In a software lifetime, type of maintenance may vary based on its
nature. 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. Followingare some types of maintenance
based on theircharacteristics:
• CorrectiveMaintenance-
Thisincludesmodificationsandupdationsdone in order to correct or
fix problems, which are either discovered by user or concluded by
user errorreports.
Cost ofMaintenance
Reports suggest that the cost of maintenance is high. 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.
89
modernhardware.
• Most maintenance engineers are newbie and use trial and error
method to rectifyproblem.
• Often, changes made can easily hurt the original structure of the
software, making it hard for any subsequentchanges.
• ProgrammingLanguage
• Dependence on externalenvironment
Maintenance Activities
IEEE provides a framework for sequential maintenance process activities.
It can be used in iterative manner and can be extended so that
customized items and processes can be included.
• Identification&Tracing -
Itinvolvesactivitiespertainingtoidentification
ofrequirementofmodificationormaintenance.Itisgeneratedbyuseror
90
system may itself report via logs or error messages.Here,
themaintenance type is classifiedalso.
• Implementation-
Thenewmodulesarecodedwiththehelpofstructured design created
in the design step.Every programmer is expected to dounit testing
in parallel.
• Delivery - After acceptance test, the system is deployed all over the
organization either by small update package or fresh installation of
the system. The final testing takes place at client end after the
software is delivered.
SoftwareRe-engineering 91
When we need to update the software to keep it to the current market,
without impactingitsfunctionality,itiscalledsoftwarere-
engineering.Itisathorough process where the design of software is
changed and programs arere-written.
Legacy software cannot keep tuning with the latest technology available
in the market. As the hardware become obsolete, updating of software
becomes a headache. Even if software grows old with time, its
functionality does not.
engineering.
Re-Engineering Process
• Decide what to re-engineer. Is it whole software or a part ofit?
92
Reverse Engineering
It is a process to achieve system specification by thoroughly analyzing,
understanding the existing system. This process can be seen as reverse
SDLC model, i.e. we try to get higher abstraction level by analyzing lower
abstraction levels.
Program Restructuring
Itisaprocesstore-structureandre-constructtheexistingsoftware.Itisallabout
re-arranging the source code, either in same programming language or
from one programming language to a different one. Restructuring can
have either source code-restructuring and data-restructuring orboth.
Forward Engineering
Forward engineering is a process of obtaining desired software from the
specificationsinhandwhichwerebroughtdownbymeansofreverseengineering
. It assumes that there was some software engineering already done in
thepast.
93
Component reusability
A component is a part of software program code, which executes an
independent task in the system. It can be a small module or sub-system
itself.
Example
Theloginproceduresusedonthewebcanbeconsideredascomponents,printing
system in software can be seen as a component of thesoftware.
InOOP,theobjectsaredesignedareveryspecifictotheirconcernandhavefewer
chances to be used in some othersoftware.
(CBSE).
Reuse Process
Two kinds of method that can be adopted: either by keeping
requirements same and adjusting components or by keeping components
94
same and modifying requirements.
• IncorporateComponents-
Allmatchedcomponentsarepackedtogether to shape them as
completesoftware.
95
Software Maintenance is a process of modifying a software system after delivery to
correct the faults, add new features and to remove obsolete functions. Maintenance
process varies considerably depending on the type of the software being maintained.
The most expensive part of the software life cycle is a software maintenance process.
There are some models for the maintenance of the software system, Qquick-fix model is
one of them.
Quick-fix Model :
• It is basically an adhoc approach to maintain software.
• It is a fire fighting approach waiting for the problem to accur and then trying to fix it as quick
as possible.
• The main objective of this model is to identify the problem and then fix it as soon as possible.
• In this model, changes are made at code level as early as possible without accepting future
problems.
• This model is an approach to modify the software code without little consideration of its
impact on the overall structure of the software system.
• As a result of this model, the structure of the software degrade rapidly
Advantages:
1. The main advantage is that it performs its work at low cost and very quickly.
2. Sometimes, users don’t wait for the long time. Rather, they require the modified software to
be delivered to them in the least possible time. As a result, the software maintenance team
needs to use a quick-fix model to avoid the time consuming process of Software maintenance
life cycle.
3. This model is also advantageous in situations where the software system is to be maintained
with certain deadlines and limited resources.
Disadvantages:
1. This model is not suitable for large project system.
2. This model is not suitable to fix errors for a longer period, as the structure of the software
system degrade rapidly.
96
What is Software Maintenance?
After completing the hectic and time consuming process of developing and testing a
software application, taking measures to ensure its maintenance is quite sensible and
Development Life Cycle (SDLC). It is the process of modifying and updating software
application after its delivery to improve its performance, correct any new defects and adapt
maintenance is to preserve the value of software over time, which can accomplished by:
existing features, which combine together to make the software abreast with the latest
changes and demands of the software industry. However, the type of maintenance can vary
in a software based on its nature and requirement. In order to make the process of
maintaining software more profiting and beneficial, Software Maintenance is divided into
enhancement done to the coding and design of a software to fix errors or defects
detected by the user or concluded by error user report. This type of maintenance is
initiated in the system to resolve any new or missed defects in the software.
o Scheduled Repairs.
platform compiler, operating system or new processor and to match the external
the software program up-to-dated and to meet the needs and demands of the user
done in order to keep the software usable for a long period of time. It aims at
achieving reduced costs in using the system and increasing its maintainability. The
structured, improving its reliability and performance, adding new features, and
more.
its existing qualities, which will facilitate future maintenance work. The objective of
procedure and entails extreme efforts. The process requires knowledgeable experts who
are well versed in latest software engineering trends and can perform suitable
programming and testing. Furthermore, the programmers can face several challenges
while executing software maintenance which can make the process time consuming and
costly. Some of the challenges encountered while performing software maintenance are:
98
• Finding the person or developer who constructed the program can be difficult and
time consuming.
clearly.
• The systems are not maintained by the original authors, which can result in
• Information gap between user and the developer can also become a huge challenge
in software maintenance.
• The biggest challenge in software maintenance is when systems are not designed for
changes.
known as Software Maintenance Life Cycle (SMLC). This life cycle consists of seven
different phases, each of which can be used in iterative manner and can be extended so
that customized items and processes can be included. These seven phases of Software
1. Identification Phase:
In this phase, the requests for modifications in the software are identified and
analysed. Each of the requested modification is then assessed to determine and
classify the type of maintenance activity it requires. This is either generated by the
system itself, via logs or error messages, or by the user.
2. Analysis Phase:
The feasibility and scope of each validated modification request are determined and
a plan is prepared to incorporate the changes in the software. The input attribute
comprises validated modification request, initial estimate of resources, project
documentation, and repository information. The cost of modification and
maintenance is also estimated.
99
3. Design Phase:
The new modules that need to be replaced or modified are designed as per the
requirements specified in the earlier stages. Test cases are developed for the new
design including the safety and security issues. These test cases are created for
the validation and verification of the system.
4. Implementation Phase:
In the implementation phase, the actual modification in the software code are made,
new features that support the specifications of the present software are added, and
the modified software is installed. The new modules are coded with the assistance of
structured design created in the design phase.
7. Delivery Phase:
models are proposed. These models use different approaches and techniques to simplify
100
Quick-Fix Model:
This is an ad hoc approach used for maintaining the software system. The objective of this
model is to identify the problem and then fix it as quickly as possible. The advantage is that
it performs its work quickly and at a low cost. This model is an approach to modify the
software code with little consideration for its impact on the overall structure of the
software system.
Iterative enhancement model considers the changes made to the system are iterative in
nature. This model incorporates changes in the software based on the analysis of the
beginning. Moreover, it attempts to control complexity and tries to maintain good design.
101
Iterative Enhancement Model is divided into three stages:
The parts of the old/existing system that are appropriate for reuse are identified and
understood, in Reuse Oriented Model. These parts are then go through modification and
enhancement, which are done on the basis of the specified new requirements. The final
step of this model is the integration of modified parts into the new system.
102
Boehm's Model:
Boehm’s Model performs maintenance process based on the economic models and
principles. It represents the maintenance process in a closed loop cycle, wherein changes
103
Taute Maintenance Model:
Named after the person who proposed the model, Taute’s model is a typical maintenance
model that consists of eight phases in cycle fashion. The process of maintenance begins by
requesting the change and ends with its operation. The phases of Taute’s Maintenance
Model are:
104
1. Change request Phase.
2. Estimate Phase.
3. Schedule Phase.
4. Programming Phase.
5. Test Phase.
6. Documentation Phase.
7. Release Phase.
105
8. Operation Phase.
(i) Change requires phase: Maintenance team gets a request in a prescribed format
from the client to make a change. This change may fall in any category of maintenance
activities. We identify the type of requires (i.e., corrective, adaptive, preventive or
preventive) and assign a unique identification number of request.
(ii) Estimate phase: This phase is devoted to estimate the time and effort required to
make the change. It is difficult to make exact estimates. but our objective is to have at
least reasonable estimate of time and efforts. Impact analysis on existing system is also
required to minimize the ripple effect.
(iii) Schedule phase: We may like to identify change request for the next scheduled
release and may also prepare the documents that are required for planning.
(iv) Programming phase: In this phase, source code is modified to implement the
requested change. All relevant documents like design document, manuals, etc. are
updated accordingly. Final output is the test version of the source code.
(v) Test phase: We would like to ensure that modification is correctly implemented.
106
Hence, we test the code. We may use already available test cases and may also design
new test cases. The term used for such testing is known as regression testing.
(vi) Documentation phase: After regression testing, system and user documents are
prepared and updated before releasing the system. This helps us to maintain co-relation
between code and documents.
(vii) Release phase: The new software product along with updated documents are
delivered to the customer. Acceptance testing is carried out by the users of the system.
(viii) Operation phase: After acceptance testing, software is placed under normal
operation. During usage, when another problem is identified or new functionality
requirement is felt or even the enhancement of existing capability is desired, again a
‘change request’ process is initiated. If we do so, we may go back to change request
phase and repeat all phases to implement the change.
Source
Boehm represents the maintenance process as a closed loop cycle. He theorizes that it is the stage
where management decisions are made that drives the process. In the stage, asset of approved
changes is determined by applying particular strategies and cost-benefit evaluations to a set of
proposed changes. The approved changes are accompanied by their own budgets, which will largely
determine the extent and type of resources expanded.
107
Boehm sees the maintenance manager’s task as one of balancing the pursuit f the objectives of
maintenance against the constraints imposed by the environment in which maintenance work is
carried out. Thus the maintenance process is driven by the maintenance manager’s decisions, which
are based on the balancing of objectives against the constraints.
108
Previous Years University Question Papers:
109
110
111
112
113
114
Previous Years Internal Question Papers:
1st Internal Examination (2019)
Instructions (if any):- Use of calculator for subjects like Financial Mgt. Operation etc. allowed if
required. (Scientific calculator is not allowed).
Use of unfair means will lead to cancellation of paper followed by disciplinary action.
Question No. 1 is compulsory. Attempt any two questions from Q2 to Q5.
Attempt any two question from section 2.
Section 1
Answer in 400 words. Each question carry 06 marks.
Q. 1 Explain Win-Win Spiral model? What are the advantages of this model?
Q. 2 What is Software configuration management? Explain the process.
Q. 3 What is software engineering? What are the principles of software engineering?
Q.4 What is feasibility study? Why it is required? Explain different types of feasibility study.
Q.5 Write Short Note on any two. Answer in 300 words. Each carry 03 marks.
a) SQA.
b) Brainstorming
c) Software engineering vs programming
Section 2
Answer in 800 words. Attempt any 2 questions. Each question carry 11 marks
Q6. What is SRS document? What is the structure of SRS document? Explain characteristics of
good SRS document.
Q7. Explain RAD and spiral models with the help of diagram. Also differentiate between both.
Q8. What is requirements engineering? Explain different requirements elicitation techniques.
115
BharatiVidyapeeth Deemed University,
Institute of Management and Research (BVIMR), New Delhi
1st Internal Examination (August, 2016)
Course: BCA Semester: III
Subject: Software Engineering Course Code: 302
Max. Marks: 40 Max. Time: 2 Hours
116
Q.4 Attempt any one. Answer in 600 words (Analytical Question / Case Study / Essay Type
Question to test analytical and Comprehensive Skills) [10 x 1]
a) Differentiate between spiral model and RAD model with the help of diagram and Pros and cons
of both the models also.
b) What do you understand by quality control and quality assurance? Explain in detail the different
types of cost of quality.
117
1st Internal Examination (2019)
Instructions (if any):- Use of calculator for subjects like Financial Mgt. Operation etc. allowed if
required. (Scientific calculator is not allowed).
Use of unfair means will lead to cancellation of paper followed by disciplinary action.
Question No. 1 is compulsory. Attempt any two questions from Q2 to Q5.
Attempt any two question from section 2.
Section 1
Answer in 400 words. Each question carry 06 marks.
Q. 1 Explain various software maintenance models
Q. 2 What do you understand by Structure chart and data dictionary? Explain with the help of
diagram.
Q.3 Explain system testing in detail.
Q. 4 Design Entity Relationship Diagram of hospital management system.
Q.5 Write Short Note on any two. Answer in 300 words. Each carry 03 marks.
a) Formal Technical Reviews
b) Types of Maintenance
c) White box testing
Section 2
Answer in 800 words. Attempt any 2 questions. Each question carry 11 marks
Q6. What do you understand by SQA and SCM? Also explain Change control in detail.
Q7. Write and explain the organization of SRS document. Also explain the characteristics of
good SRS document
Q8. Design a 0 level, 1 level and 2 level DFD of college management system
118
BharatiVidyapeeth Deemed University,
Institute of Management and Research (BVIMR), New Delhi
Ist Internal Examination (February 2015)
Subject: Software Engineering Course Code:
Q.3 Attempt any two questions. Answer in 200 words (Practical/Application Oriented) [2 x 5]
Q.4 Attempt any one. Answer in 600 words (Analytical Question / Case Study / Essay type
question to test analytical and Comprehensive Skill) [20 x 1]
a) Define any two software process models with the help of diagram?
b) What is the difference between spiral model and win-win spiral model?
119
BharatiVidyapeeth(Deemed To be University),
Institute of Management and Research (BVIMR), New Delhi
1stInternal Examination (September-2018)
Course : BCA Semester : III
Subject : Software Engineering Course Code: 302
Max. Marks: 40 Max. Time: 2 Hours
Q.3 Attempt any two questions. Answer in 200 words (Application oriented) [2 x 5]
a) What isSoftware project management? Explain its steps and SPMP document.
b) What are software requirements? What are the different types of requirements?
c) What is Waterfall model? Gives it advantages and disadvantages.
d) What is requirement elicitation? Explain with the help FAST technique.
Q.4 Attempt any one. Answer in 600 words (Analytical Question / Case Study / Essay Type Question to test
analytical and Comprehensive Skills)
an [10 x 1]
a) What is a software development model? Differentiate between incremental and spiral model.
b) Write a short note on (any 2):-
1. GANTT and PERT chart
2. Cost Benefit analysis
3. Component based development model
4. Cost of Quality
120
1stInternal Examination (2019)
Instructions (if any):- Use of Calculators for subjects like Financial Mgt. Operation ,etc allowed if
required(Scientific Calculator is not allowed)
Use of unfair means will lead to cancellation of paper followed by disciplinary action.
Question No. 1 is compulsory. Attempt any two questions from Q2 to Q5.
Attempt any two question from section 2.
Section 1
(Theoretical Concept and Practical/Application oriented)
Section 2
(Analytical Question/ case study/Essay Type Question to test analytical and Comprehensive Skills)
121
BharatiVidyapeeth (Deemed to be University)
Institute of Management and Research (BVIMR), New Delhi
2nd Internal Examination (October 2018)
Instructions (if any):- (accounting, mathematics regarding use of Calculator, if required). Give
Examples & Diagrammatic Representations wherever as possible
Section 1
Answer in 400 words. Each question carry 06 marks.
Q. 1. What is Software maintenance? Explain the maintenance process.
Q. 2. What is software design? What are the different types of cohesion and coupling?
Q.3. Define SRS. What are the characteristics of IEEE SRS.
Q. 4. Explain the concepts of software quality assurance and cost of quality.
Q.5. Write Short Note on any two. Answer in 300 words. Each carry 03 marks.
a) Debugging and acceptance testing
b) UML and Use case diagrams.
c) DFD and ERD
Section 2
Answer in 800 words. Attempt any 2 questions. Each question carry 11 marks
Q6. What is software testing? What are the different types of testing methods?
Q7. What is software quality and its attributes? Explain Boehm’s and Taute’s model for S/w
maintenance?
Q8. Design DFD and ERD for Delhi Metro system.
122
2ndInternal Examination (2019)
Instructions (if any):- Use of unfair means will lead to cancellation of paper followed by
disciplinary action.
Question No. 1 is compulsory. Attempt any two questions from Q2 to Q5.
Attempt any two question from section 2.
Section 1
Answer in 400 words. Each question carry 06 marks.
Q. 1 What do you understand by Quality control, quality assurance and cost of quality?
Q. 2 What do you understand by decision tree and decision table? Explain with the help of
diagram.
Q.3 Explain white box testing in detail.
Q. 4 What do you understand by baseline, SCI and Change control
Q.5 Write Short Note on any two. Answer in 300 words. Each carry 03 marks.
a) Formal Technical Reviews
b) Types of Maintenance
c) System testing
Section 2
Answer in 800 words. Attempt any 2 questions. Each question carry 11 marks
Q6. Write and explain the organization of SRS document in detail.
Q7. What do you understand by software maintenance and maintenance process?
Explain various software maintenance models
Q8. Design a 0 level, 1 level and 2 level DFD of Hospital management system
Instructions (if any):- Use of calculator for subjects like Financial Mgt. Operation etc. allowed if
required. (Scientific calculator is not allowed).
Use of unfair means will lead to cancellation of paper followed by disciplinary action.
Question No. 1 is compulsory. Attempt any two questions from Q2 to Q5.
Attempt any two question from section 2.
Section 1
Answer in 400 words. Each question carry 06 marks.
Q. 1 Explain various software maintenance models
Q. 2 What do you understand by Structure chart and data dictionary? Explain with the help of
diagram.
Q.3 Explain system testing in detail.
Q. 4 Design Entity Relationship Diagram of hospital management system.
Q.5 Write Short Note on any two. Answer in 300 words. Each carry 03 marks.
a) Formal Technical Reviews
b) Types of Maintenance
c) White box testing
Section 2
Answer in 800 words. Attempt any 2 questions. Each question carry 11 marks
Q6. What do you understand by SQA and SCM? Also explain Change control in detail.
Q7. Write and explain the organization of SRS document. Also explain the characteristics of
good SRS document
Q8. Design a 0 level, 1 level and 2 level DFD of college management system
Instructions (if any):- Use of calculator for subjects like Financial Mgt. Operation etc. allowed if
required. (Scientific calculator is not allowed).
Use of unfair means will lead to cancellation of paper followed by disciplinary action.
Question No. 1 is compulsory. Attempt any two questions from Q2 to Q5.
Attempt any two question from section 2.
Section 1
Answer in 400 words. Each question carry 06 marks.
Q. 1 Explain any two software maintenance models.
Q. 2 What do you understand by decision tree and data dictionary? Explain with the help of
diagram.
Q.3 Explain integration testing in detail.
Q. 4 Design 0 level and 1 level DFD of hospital management system.
Q.5 Write Short Note on any two. Answer in 300 words. Each carry 03 marks.
a) Cost of quality
b) Types of Maintenance
c) Black box testing
Section 2
Answer in 800 words. Attempt any 2 questions. Each question carry 11 marks
Q6. What do you understand by testing? Explain various techniques of white box and black box
testing.
Q7. Write and explain the organization of SRS document. Also explain the characteristics of
good SRS document
Q8. Design a ERD of college management system.
125
BharatiVidyapeethDeemed University,
Institute of Management and Research (BVIMR), New Delhi
2ndInternal Examination (October, 2016)
Course: BCA Semester: III
Subject: Software EngineeringCourse Code: 302
Max. Marks: 40 Max. Time: 2 Hours
a) Define coupling and cohesion in detail? Also explain various types of coupling and cohesion.
b) Explain various requirements elicitation techniques?
a) Explain Taute’s model of maintenance?
a) Design a context level and first level DFD for hospital system.
b) Design a ERD for college management system.
126
Declaration by Faculty
I Daljeet Singh Bawa, Designation Assistant ProfessorTeaching Software Engineering subject in
BCA- III Morning and Afternooncourse,have incorporated all the necessary pages
section/quotations papers mentioned in the check list above.
127