SE Study Material
SE Study Material
Department
Of
Computer Engineering
SOFTWARE ENGINEERING
(3150711)
PREPARED BY:
PROF. NIKHILESH N. GIRNARA
INDEX
2 Agile Development 21
5 Software Design 49
9 DevOps 89
Unit: 1
Introduction to Software and Software Engineering
1.1 The Evolving Role of Software:
The cost an impact of these changes is accessed to see how much system is affected by
the change and how much it might cost to implement the change. If the proposed
changes are accepted, a new release of the software system is planned. During release
planning, all the proposed changes (fault repair, adaptation, and new functionality) are
considered.
A design is then made on which changes to implement in the next version of the system.
The process of change implementation is an iteration of the development process
where the revisions to the system are designed, implemented and tested.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 1
Software Engineering (3150711)
Software is often divided into application software (programs that do work users are
directly interested in) and system software (which includes operating systems and
any program that supports application software).
Software Crisis is a term used in computer science for the difficulty of writing useful and
efficient computer programs in the required time.
Software crisis was due to using same workforce, same methods, same tools even though
rapidly increasing in software demand, complexity of software and software challenges. With
increase in the complexity of software, many software problems arise because existing
methods were insufficient.
Since the early days of computing, the myths regarding the software engineering float around
the industry.
There are numbers of attributes included in the myths, that make them includes. In
developing a software, the developers put their extreme dedication and hard work.
A great majority of software related problems arises because of the myths that formed during
the software development’s initial stages. The most of the pressure and strain are on the
managers, who own the responsibilities of the software development.
Software Myths :
Management myths
1. Members acquires all the information.
2. Adding more people can reduce the time gap.
3. The management can relax themselves by outsourcing its project.
2. Customer myths
1. Software is malleable as a result of which changes are easy to accommodate.
2. Its easy functionality understood.
3. Developer myths
1. Once the code is delivered, the software can be called complete.
2. The software’s success depends on the product’s produced quality.
3. The assessment of the software quality can be addressed after the execution of the
program
4. The product, which is delivered after the project’s completion can be called working
program.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 2
Software Engineering (3150711)
reduced levels of quality. It ensures that the application is built consistently, correctly,
on time and on budget and within requirements.
The demand of software engineering also emerged to cater to the immense rate of
change in user requirements and environment on which application is supposed to be
working.
A small program can be written without using software engineering principles. But if
one wants to develop a large software product, then software engineering principles
are absolutely necessary to achieve a good quality software cost effectively.
A Layered Technology:
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 3
Software Engineering (3150711)
2. Process:-
1. Foundation for SE is the Process Layer
2. SE process is the GLUE that holds all the technology layers together and enables
the timely development of computer software.
3. It forms the base for management control of software project.
3. Methods:-
1. SE methods provide the "Technical Questions" for building Software.
2. Methods contain a broad array of tasks that include communication requirement
analysis, design modeling, program construction testing and support.
4. Tools:-
1. SE tools provide automated or semi-automated support for the "Process" and
the "Methods".
2. Tools are integrated so that information created by one tool can be used by
another.
A software process is the set of activities and associated outcome that produce a
software product. Software engineers mostly carry out these activities. These are four
key process activities, which are common to all software processes. These activities are:
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 4
Software Engineering (3150711)
Process models may contain activities, which are part of the software process, software product, and the
roles of people involved in software engineering. Some examples of the types of software process models
that may be produced are:
Process Flow – Describe how the framework activities and the actions and tasks that
occur within each framework activity are organized with respect to sequence and time.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 5
Software Engineering (3150711)
Software Crisis
1. Size: Software is becoming more expensive and more complex with the growing
complexity and expectation out of software. For example, the code in the
consumer product is doubling every couple of years.
2. Quality: Many software products have poor quality, i.e., the software products
defects after putting into use due to ineffective testing technique. For example,
Software testing typically finds 25 errors per 1000 lines of code.
3. Cost: Software development is costly i.e. in terms of time taken to develop and
the money involved. For example, Development of the FAA's Advanced
Automation System cost over $700 per lines of code.
4. Delayed Delivery: Serious schedule overruns are common. Very often the
software takes longer than the estimated time to develop, which in turn leads to
cost shooting up. For example, one in four large-scale development projects are
never completed.
Linear sequential model for software engineering is also known as waterfall model.
The linear sequential model suggests a systematic sequential approach to software
development that begins at the system level and progresses through analysis, design,
coding, testing, and support.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 6
Software Engineering (3150711)
1. Communication Phase:
Requirement are gathered
The problem is specified along with the desired service objectives (goals).
The constraints are identified.
The system specification is produced from the requirement analysis. This
document should clearly define the product function.
2. Planning Phase:
Planning is a critical activity in software development.
A good plan is based on the requirements of the system and should be done
before later phase begin.
However detailed requirement is not necessary for planning. It includes
activities like:
Cost estimation to find best affordable cost.
Task scheduling and timeline management.
Work organization and team structure designing.
3. Modeling Phase:
The system specification are translated into a software representation.
The software engineer at this stage is concerned with:
i) Data Structure ii) Software Architecture iii) Algorithm detail and iv) Interface representation
4. Construction Phase:
Coding is done.
The implementation and testing is done.
The designers are translated into the software domain.
Detailed documentation from the design phase can significantly reduce the
coding effort.
Testing at this stage focuses on making sure that errors are identified and the
software meets its required specification.
All the program units integrated and tested to ensure that the complete system
meets the software requirements.
5. Deployment Phase:
After construction the software is delivered to the customer.
The system is handed over to the customer and will be used the first time by
them.
All the problems which did not arise during the previous phase will be solved in
this last phase.
Maintenance part is largest and never ending phase of software development.
In this phase the software is updated to:
1. Meet the changing customer needs.
2. Adapted to accommodate change in the external environment.
3. Correct errors and oversights previously undetected in the testing phase.
4. Enhancing the efficiency of the software.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 7
Software Engineering (3150711)
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 8
Software Engineering (3150711)
4. Construction of prototype:
The prototype is evaluated by the customer itself.
If the user is not satisfied with current prototype then it refines according to the
requirements of the user.
The process of refining the prototype is repeated until all the requirements of
users are met.
When the users are satisfied with the developed prototype then the system is
developed on the basis of final prototype.
Prototype model need not know the detailed input, output, processes,
adaptability of operating system and full machine interaction.
In the development process of this model users are actively involved.
The development process is the best platform to understand the system by the
user.
Errors are detected much earlier.
Gives quick user feedback for better solutions.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 9
Software Engineering (3150711)
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 10
Software Engineering (3150711)
2.Data Modeling:
The characteristics/attributes of each object are identified and the relationships
between these objects are defined.
3.Process Modeling:
The data objects defined in the data-modeling phase are transformed to achieve
the information flow necessary to implement a business function.
Processing descriptions are created for adding, modifying, deleting, or
retrieving a data object.
4.Application Generation:
RAD assumes the use of the fourth generation techniques and tools like VB, C++,
Delphi etc.
Rather than creating software using conventional third generation programming
languages.
The RAD works to reuse existing program components.
In all cases, automated tools are used to facilitate construction of the software.
5. Testing and Turnover:
Since the RAD process emphasizes reuse, many of the program components
have already been tested.
This minimizes the testing and development time.
However, new components must be tested and all interfaces must be fully
exercised.
If a business application can be modularized to that each major function can be
completed within the development cycle then it is a right candidate for the RAD
model.
In this case, each team can be assigned a model, which is then integrated to form
a whole.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 11
Software Engineering (3150711)
It is better for software products that have their feature sets redefined during
development because of user feedback and other factors. The Evolutionary
development model divides the development cycle into smaller, incremental waterfall
models in which users are able to get access to the product at the end of each cycle.
Feedback is provided by the users on the product for the planning stage of the next
cycle and the development team responds, often by changing the product, plan or
process. Therefore, the software product evolves with time. All the models have the
disadvantage that the duration of time from start of the project to the delivery time of a
solution is very high. Evolutionary model solves this problem in a different approach.
Evolutionary model suggests breaking down of work into smaller chunks, prioritizing
them and then delivering those chunks to the customer one by one. The number of
chunks is huge and is the number of deliveries made to the customer.
The main advantage is that the customer’s confidence increases as he constantly gets
quantifiable goods or services from the beginning of the project to verify and validate
his requirements. The model allows for changing requirements as well as all work in
broken down into maintainable work chunks.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 12
Software Engineering (3150711)
Disadvantages:
Sometimes it is hard to divide the problem into several versions that would be
acceptable to the customer which can be incrementally implemented and
delivered.
Spiral model is one of the most important Software Development Life Cycle models,
which provides support for Risk Handling. In its diagrammatic representation, it looks
like a spiral with many loops. The exact number of loops of the spiral is unknown and
can vary from project to project.
Each loop of the spiral is called a Phase of the software development process. The
exact number of phases needed to develop the product can be varied by the project
manager depending upon the project risks. As the project manager dynamically
determines the number of phases, so the project manager has an important role to
develop a product using spiral model.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 13
Software Engineering (3150711)
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 14
Software Engineering (3150711)
Requirements gathering
Design the requirements
Construction/ iteration
Testing/ Quality assurance
Deployment
Feedback
1.Requirements gathering: In this phase, you must define the requirements. You
should explain business opportunities and plan the time and effort needed to build
the project. Based on this information, you can evaluate technical and economic
feasibility.
2.Design the requirements: When you have identified the project, work with
stakeholders to define requirements. You can use the user flow diagram or the high-
level UML diagram to show the work of new features and show how it will apply to
your existing system.
3.Construction/ iteration: When the team defines the requirements, the work begins.
Designers and developers start working on their project, which aims to deploy a
working product. The product will undergo various stages of improvement, so it
includes simple, minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's
performance and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work
environment.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 15
Software Engineering (3150711)
6. Feedback: After releasing the product, the last step is feedback. In this, the team
receives feedback about the product and works through the feedback.
An iterative life cycle model does not start with a full specification of requirements.
In this model, the development begins by specifying and implementing just part of the
software, which is then reviewed in order to identify further requirements.
Moreover, in iterative model, the iterative process starts with a simple implementation
of a small set of the software requirements, which iteratively enhances the evolving
versions until the complete system is implemented and ready to be deployed. Each
release of Iterative Model is developed in a specific and fixed time period, which is
called iteration.
Furthermore, this iteration focuses on a certain set of requirements. Each cycle ends
with a usable system i.e., a particular iteration results in an executable release.
Iterative Model allows accessing previous phases, in which the changes are made
accordingly.
The final output of the product is revived at the end of the Software Development
Life Cycle (SDLC). Typically iterative development is used in conjunction with
incremental development, in which a longer software development cycle is split into
smaller segments that are built upon each other. Hence, iterative model is used in
following scenarios:
When the requirements of the complete system are clearly defined and
understood.
The major requirements are defined, while some functionalities and requested
enhancements evolve with the process of the development process.
A new technology is being used and is being learnt by the development team,
while they are working on the project.
If there are some high risk features and goals, which might change in the future.
When the resources with needed skill sets are not available and are planned to be
used on contract basis for specific iterations.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 16
Software Engineering (3150711)
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 17
Software Engineering (3150711)
Each iteration passes through the requirements, design, coding and testing phases.
And each subsequent release of the system adds function to the previous release until
all designed functionality has been implemented.
The system is put into production when the first increment is delivered. The first
increment is often a core product where the basic requirements are addressed, and
supplementary features are added in the next increments. Once the core product is
analyzed by the client, there is plan development for the next increment.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 18
Software Engineering (3150711)
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 19
Software Engineering (3150711)
Product:
In the context of software engineering, Product includes any software manufactured
based on the customer’s request. This can be a problem solving software or computer
based system. It can also be said that this is the result of a project.
Process:
Process is a set of sequence steps that have to be followed to create a project. The
main purpose of a process is to improve the quality of the project. The process serves
as a template that can be used through the creation of its examples and is used to
direct the project.
The main difference between a process and a product is that the process is a set of
steps that guide the project to achieve the convenient product. While on the other
hand, the product is the result of a project that is manufactured by a wide variety of
people.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 20
Software Engineering (3150711)
Unit: 2
Agile Development
2.1 Agility and Agile Process Model:
Agility:
Agile principles:
The highest priority of this process is to satisfy the customer.
Acceptance of changing requirement even late in development.
Frequently deliver a working software in small time span.
Throughout the project business people and developers work together on daily
basis.
Projects are created around motivated people if they are given the proper
environment and support.
Face to face interaction is the most efficient method of moving information in the
development team.
Primary measure of progress is a working software.
Agile process helps in sustainable development.
Continuous attention to technical excellence and good design increases agility.
From self organizing teams the best architecture, design and requirements are
emerged.
Simplicity is necessary in development.
The Agile model was primarily designed to help a project to adapt to change requests
quickly. So, the main aim of the agile model is to facilitate quick project completion.
To accomplish this task agility is required. Agility is achieved by fitting the process to
the project, removing activities that may not be essential for a specific project. Also,
anything that is wastage of time and effort is avoided.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 21
Software Engineering (3150711)
Actually Agile model refers to a group of development processes. These processes share
some basic characteristics but do have certain subtle differences among themselves.
A few Agile SDLC models are given below:
Extreme programming (XP)
Feature-driven development
Scrum
Lean development
Unified process
In the Agile model, the requirements are decomposed into many small parts that can be
incrementally developed. The Agile model adopts Iterative development.
Each incremental part is developed over an iteration. Each iteration is intended to be
small and easily manageable and that can be completed within a couple of weeks only.
At a time one iteration is planned, developed and deployed to the customers. Long-term
plans are not made.
Agile model is the combination of iterative and incremental process models. Steps
involve in agile SDLC models are:
Requirement gathering
Requirement Analysis
Design
Coding
Unit testing
Acceptance testing
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 22
Software Engineering (3150711)
The XP Process:
The XP process comprises four framework activities:
1. Planning: Planning starts with the requirements gathering which enables XP
team to understand the rules for the software. The customer and developer work
together for the final requirements.
2. Design: The XP design follows the 'keep it simple' principle. A simple design
always prefers the more difficult representation.
3. Coding: The coding is started after the initial design work is over. After the initial
design work is done, the team creates a set of unit tests which can test each
situation that should be a part of the release.
The developer is focused on what must be implemented to pass the test. It is an
important concept in coding activity.
4. Testing: Validation testing of the system occurs on a daily basis. It gives the XP
team a regular indication of the progress. 'XP acceptance tests' are known as the
customer test.
Advantages of Extreme Programming:
Fever documentation is required.
Collaboration with customer.
Flexibility to developer.
Easy to manage.
Disadvantages of Extreme Programming:
Depends heavily on customer interaction.
Transfer on technology to new team members may be quite challenging due to
lack of documentation.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 23
Software Engineering (3150711)
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 24
Software Engineering (3150711)
8. Demonstrate Control: The Project Manager and Team Leader should make their plans
and progress visible to all and focus on successful delivery.
2. Scrum:
Scrum is an agile development methodology used in the development of Software
based on iterative and incremental processes. Scrum is adaptable, fast, flexible and
effective agile framework that is designed to deliver value to the customer throughout
the development of the project.
Scrum is executed in temporary blocks that are short and periodic, called Sprints, which
usually range from 2 to 4 weeks, which is the term for feedback and reflection. Each
Sprint is an entity in itself, that is, it provides a complete result, a variation of the final
product that must be able to be delivered to the client with the least possible effort
when requested.
The process has as a starting point, a list of objectives/ requirements that make up the
project plan. It is the client of the project that prioritizes these objectives considering a
balance of the value and the cost thereof, that is how the iterations and consequent
deliveries are determined.
On the one hand the market demands quality, fast delivery at lower costs, for which a
company must be very agile and flexible in the development of products, to achieve
short development cycles that can meet the demand of customers without undermining
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 25
Software Engineering (3150711)
the quality of the result. It is a very easy methodology to implement and very popular
for the quick results it gets.
Scrum methodology is used mainly for software development, but other sectors are
also taking advantage of its benefits by implementing this methodology in their
organizational models such as sales, marketing, & HR teams etc.
However, if you need to apply agile to larger projects and teams, it is worthwhile taking
the time to understand FDD a little more.
The natural habitat of Scrum and XP-inspired approaches is a small team of skilled and
disciplined developers. It remains a significant challenge to scale these approaches to
larger projects and larger teams. Some have been successful but many have struggled.
The term "client" in FDD is used to represent what Agile Modeling (AM) refers to as
project stakeholders or eXtreme Programming (XP) calls customers.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 26
Software Engineering (3150711)
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 27
Software Engineering (3150711)
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 28
Software Engineering (3150711)
Unit: 3
Managing Software Project
3.1 Software Metrics (Process, Product and Project Metrics):
A software metric is a measure of software characteristics which are measurable or
countable. Software metrics are valuable for many reasons, including
measuring software performance, planning work items, measuring productivity, and
many other uses.
Within the software development process, many metrics are that are all connected.
Software metrics are similar to the four functions of management: Planning,
Organization, Control, or Improvement.
Software metrics is a standard of measure that contains many activities which involve
some degree of measurement. It can be classified into three categories: product metrics,
process metrics, and project metrics.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 29
Software Engineering (3150711)
The four major parameters that control the software projects are time, requirements,
resources people, infrastructure/materials and money, and risks. This is one of the
reasons why making good estimates of these variables like time and resources
required for a project is very critical.
But if the estimation is lower than the project needs it will affect the progress of the project
due to the lack of enough time, money, infrastructure/materials, or people.
Objectives:
Observation on Estimation
Planning requires you to make an initial commitment, even though it’s likely that this
“commitment” will be proven wrong. Estimation carries natural risk and this risk leads
to uncertainty:-
Project complexity.
Project size
The degree of structural uncertainty.
Estimation Guidelines
One should keep the following guidelines in mind while estimating a project −
During estimation, ask other people's experiences. Also, put your own
experiences at task.
Resources working on multiple projects take longer to complete tasks because
of the time lost switching between them.
Include management time in any estimate.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 30
Software Engineering (3150711)
1. Lines of code:
The size is estimated by comparing it with the existing systems of same kind. The
experts use it to predict the required size of various components of software and
then add them to get the total size.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 31
Software Engineering (3150711)
2. Function Points:
A Function Point (FP) is a unit of measurement to express the amount of business
functionality, an information system (as a product) provides to a user. FPs measure
software size.
They are widely accepted as an industry standard for functional sizing. A function
point (FP) is a component of software development which helps to approximate the
cost of development early in the process.
It is a process which defines the required functions and their complexity in a piece
of software in order to estimate the software's size and scope upon completion.
A function point calculates software size with the help of logical design and
performance of functions as per user requirements.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 32
Software Engineering (3150711)
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 33
Software Engineering (3150711)
Project Planning is an ongoing effort throughout the Project Lifecycle. The Project
Planning tasks ensure that various elements of the Project are coordinated and
therefore guide the project execution.
A detailed plan stating stepwise strategy to achieve the listed objectives is an integral
part of any project.
Planning consists of the following activities:
1. Set objectives or goals
2. Develop strategies
3. Develop project policies
4. Determine courses of action
5. Making planning decisions
6. Set procedures and rules for the project
7. Develop a software project plan
8. Prepare budget
9. Conduct risk management
10. Document software project plans
The objective of software project scheduling is to create a set of engineering tasks that
will enable to complete the job in time.
Project scheduling is a mechanism to communicate what tasks need to get done and
which organizational resources will be allocated to complete those tasks in what
timeframe.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 34
Software Engineering (3150711)
Periodic project status meetings with each team member reporting progress and
problems
Evaluation of results of all work product reviews
Comparing actual milestone completion dates to scheduled dates
Comparing actual project task start-dates to scheduled start-dates
Informal meeting with practitioners to have them asses subjectively progress to
date and future problems
Use earned value analysis to assess progress quantitatively
Project risk analysis and management can be used on all projects, whatever the
industry or environment, and whatever the timescale or budget.
In this guide, the term ‘PRAM’ encompasses processes, techniques and methods that
enables the analysis and management of the risks associated with a project.
Risk Analysis is a process that helps you identify and manage potential problems that
could undermine key business initiatives or projects.
To carry out a Risk Analysis, you must first identify the possible threats that you face,
and then estimate the likelihood that these threats will materialize.
Risk Analysis can be complex, as you'll need to draw on detailed information such as
project plans, financial data, security protocols, marketing forecasts, and other relevant
information. However, it's an essential planning tool, and one that could save time,
money, and reputations.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 35
Software Engineering (3150711)
When you're planning for changes in your environment, such as new competitors
coming into the market, or changes to government policy.
Managers can plan their strategy based on four steps of risk management which
prevails in an organization.
1. Risk Identification:
Risk identification is a process for identifying and recording potential
project risks that can affect the project delivery.
Documenting the risks: Identified risks should be documented in a risk register
and a risk breakdown structure, along with their causes and consequences.
Product-specific risks - the project plan and software statement of scope are
examined to identify any special characteristics of the product that may threaten
the project plan.
Generic risks - are potential threats to every software product (product size,
business impact, customer characteristics, process definition, development
environment, technology to be built, staff size and experience)
2. Risk Projection:
Risk projection, also called risk estimation, attempts to rate each risk in two
ways—the likelihood or probability that the risk is real and the consequences of
the problems associated with the risk, should it occur.
The project planner, along with other managers and technical staff, perform
four risk projection activities:
1) Establish a scale that reflects the perceived likelihood of a risk.
2) Estimate the impact of the risk on the project and the product.
3) Note the overall accuracy of the risk projection so that there will be no
misunderstandings.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 36
Software Engineering (3150711)
3. Risk Refinement:
Also called Risk assessment
Refines the risk table in reviewing the risk impact based on the following three
factors.
a. Nature: Likely problems if risk occurs
b. Scope: Just how serious is it?
c. Timing: When and how long
Process of restating the risks as a set of more detailed risks that will be easier to
mitigate, monitor, and manage.
CTC (condition-transition-consequence) format may be a good representation
for the detailed risks (e.g. given that <condition> then there is a concern that
(possibly) <consequence>).
4. Risk Mitigation:
Risk mitigation planning is the process of developing options and actions to
enhance opportunities and reduce threats to project objectives.
Risk mitigation implementation is the process of executing risk
mitigation actions.
Risk mitigation is one element of risk management, and its implementation will
differ by organization.
Although the principle of risk mitigation is to prepare a business for all
potential risks, a proper risk mitigation plan will weigh the impact of each risk
and prioritize planning around that impact.
Risk mitigation focuses on the inevitability of some disasters and is used for
those situations where a threat cannot be avoided entirely.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 37
Software Engineering (3150711)
Unit: 4
Requirement Analysis and Specification
4.1 Understanding the Requirement:
The process to gather the software requirements from client, analyze and document
them is known as requirement engineering Requirements analysis, also
called requirements engineering, is the process of determining user expectations for
a new or modified product.
And it's the process by which you clearly and precisely define the scope of the project,
so that you can assess the timescales and resources needed to complete it.A focused and
detailed business requirements analysis can help you avoid problems like these.
And it's the process by which you clearly and precisely define the scope of the project,
so that you can assess the timescales and resources needed to complete it.
In a solution domain, we focus on how to deliver the solution for functional or business
requirements.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 38
Software Engineering (3150711)
User interface
Integration
Runtime infrastructure
Networking and communication
Constraints such as the use of specific RDBMS System, protocols, and standards
Requirements are divided into functional (what the system will have to do) and non-
functional (constraints within which the system will have to perform).
Often this is defined as a behavior of the system that takes input and provides output.
For example, a traveler fills out a form in an airline's mobile application with his/her
name and passport details (input), submits the form, and the application generates a
boarding pass with the traveler's details (output).
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 39
Software Engineering (3150711)
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 40
Software Engineering (3150711)
The SRS is a specification for a specific software product, program, or set of applications
that perform particular functions in a specific environment. It serves several goals
depending on who is writing it. First, the SRS could be written by the client of a system.
Second, the SRS could be written by a developer of the system.
SRS indicates to a developer and a customer what is implemented in the software. SRS
is useful if the software system is developed by the outside contractor. SRS must include
an interface, functional capabilities, quality, reliability, privacy etc.
This is achieved through detailed and continuous communications with the project
team and customer throughout the software development process.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 41
Software Engineering (3150711)
Why SRS?
In order to fully understand one’s project, it is very important that they come up with a
SRS listing out their requirements, how are they going to meet it and how will they
complete the project.
It helps the team to save upon their time as they are able to comprehend how are going
to go about the project. Doing this also enables the team to find out about the
limitations and risks early on.
Qualities of SRS:
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 42
Software Engineering (3150711)
Characteristics of SRS:
The SRS should be complete and consistence.
The modification like logical and hierarchical must be allowed in SRS.
The requirement should be easy to implement.
Each requirement should be uniquely identified.
The statement in SRS must be unambiguous means it should have only one
meaning.
The entire requirement must be valid for the specified project.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 43
Software Engineering (3150711)
Analyst, requirement analysis is the most important part of any Job. It will help you
determining the actual needs of stakeholders.
At the same time, enable you to communicate with the stakeholders in a language they
understand (like charts, models, flow-charts,) instead of complex text.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 44
Software Engineering (3150711)
Requirements elicitation is perhaps the most difficult, most error-prone and most
communication intensive software development. It can be successful only through an
effective customer-developer partnership. It is needed to know what the users really
need.
2. Brainstorming Sessions:
It is a group technique
It is intended to generate lots of new ideas hence providing a platform to share
views
A highly trained facilitator is required to handle group bias and group conflicts.
Every idea is documented so that everyone can see it.
Finally a document is prepared which consists of the list of requirements and their
priority if possible.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 45
Software Engineering (3150711)
It’s objective is to bridge the expectation gap – difference between what the developers
think they are supposed to build and what customers think they are going to get.
A team oriented approach is developed for requirements gathering.
Each attendee is asked to make a list of objects that are-
1. Part of the environment that surrounds the system
2. Produced by the system
3. Used by the system
Each participant prepares his/her list, different lists are then combined, redundant
entries are eliminated, team is divided into smaller sub-teams to develop mini-
specifications and finally a draft of specifications is written down using all the inputs
from the meeting.
4. Quality Function Deployment:
This technique combines text and pictures to provide a better understanding of the
requirements. The use cases describe the ‘what’, of a system and not ‘how’. Hence they
only give a functional view of the system.
The components of the use case deign includes three major things – Actor, Use cases,
use case diagram.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 46
Software Engineering (3150711)
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.
1. Feasibility study:
When the client approaches the organization for getting the desired product
developed, it comes up with rough idea about what all functions the software
must perform and which all features are expected from the software.
Referencing to this information, the analysts does a detailed study about
whether the desired system and its functionality are feasible to develop.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 47
Software Engineering (3150711)
2. Requirement Gathering:
If the feasibility report is positive towards undertaking the project, next phase
starts with gathering requirements from the user.
Analysts and engineers communicate with the client and end-users to know
their ideas on what the software should provide and which features they want
the software to include.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 48
Software Engineering (3150711)
Unit: 5
Software Design
5.1 Design Concepts and Design Principle:
Software design is a phase in software engineering, in which a blueprint is developed to
serve as a base for constructing the software system. IEEE defines software design as
'both a process of defining, the architecture, components, interfaces, and other
characteristics of a system or component and the result of that process.'
In the design phase, many critical and strategic decisions are made to achieve the
desired functionality and quality of the system. These decisions are taken into account
to successfully develop the software and carry out its maintenance in a way that the
quality of the end product is improved.
The core design concepts in software engineering should be followed to create a
successful program or application. This lesson will go through those main design
concepts and explain how each one plays a role in software development.
In the field of software development, there are many stages of planning and analysis
before the project is finalized and development can formally begin. Design always
comes before development and functional design makes coding and maintenance very
simple.
The design concepts provide the software designer with a foundation from which more
sophisticated methods can be applied. A set of fundamental design concepts has
evolved. They are as follows:
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 49
Software Engineering (3150711)
The software that is built for computer-based systems can exhibit one of these many
architectural styles.
1. It defines an abstraction level at which the designers can specify the functional and
performance behavior of the system.
2. It acts as a guideline for enhancing the system (when ever required) by describing
those features of the system that can be modified easily without affecting the system
integrity.
3. It evaluates all top-level designs.
4. It develops and documents top-level design for the external and internal interfaces.
5. It develops preliminary versions of user documentation.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 50
Software Engineering (3150711)
6. It defines and documents preliminary test requirements and the schedule for
software integration.
7. Information regarding the application domain for the software to be developed.
8. Using data-flow diagrams.
9. Availability of architectural patterns and architectural styles.
The objective of this design is to transform the design model into functional software.
To achieve this objective, the component-level design represents -the internal data
structures and processing details of all the software components (defined during
architectural design) at an abstraction level, closer to the actual code. In addition, it
specifies an interface that may be used to access the functionality of all the software
components.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 51
Software Engineering (3150711)
Simply put, a component, sometimes also called a module, is basic building block for
the software application or system being designed.
Systems whose responses depend on a single stimulus or input and which are not
affected by input histories are naturally functionally-oriented.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 52
Software Engineering (3150711)
Design Process:
The whole system is seen as how data flows in the system by means of data flow
diagram.
DFD depicts how changes data and state of entire system functions.
The entire system is logically broken down into smaller units known as
functions on the basis of their operation in the system.
Each function is then described at large.
The OOD process takes the conceptual systems model, use cases, system relational
model, user interface (UI) and other analysis data as input from the OOA phase.
This is used in OOD to identify, define and design systems classes and objects, as
well as their relationship, interface and implementation.
Object oriented design 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 software solution revolves around the
engaged entities.
1. Objects - All entities involved in the solution design are known as objects.
For example, person, banks, company and customers are treated as objects.
Every entity has some attributes associated to it and has some methods to
perform on the attributes.
Class defines all the attributes, which an object can have and methods, which
defines the functionality of the object.
In the solution design, attributes are stored as variables and functionalities are
defined by means of methods or procedures.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 53
Software Engineering (3150711)
4. Inheritance -”Inheritance is the process through which one Object can access or
acquire property or data of another object of another class.”
Hierarchical classification
Parent-Child relationship between classes
Concept of Re-usability
We can say, existing class may have original features and new class can have
combined features of both classes.
Polymorphism means to take more than one form with different characteristics.
The operation to perform task may exhibit different behaviors in different
instances, depends on type of data.
This is called polymorphism, which allows a single interface performing tasks for
different types.
Design Process:
Software design process can be perceived as series of well-defined steps. Though it
varies according to design approach (object oriented), yet It may have the following
steps involved:
A solution design is created from requirement or system sequence diagram.
Objects are identified and grouped into classes on behalf of similarity in attribute
characteristics.
Class hierarchy and relation among them is defined.
Application framework is defined.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 54
Software Engineering (3150711)
ii) Cursor - It is a small horizontal line or a vertical bar of the height of line, to
represent position of character while typing.
It moves as the user writes or deletes something.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 55
Software Engineering (3150711)
Every graphical component provides a way to work with the system. A GUI
system has following elements such as:
Window - An area where contents of application are displayed. Contents in a
window can be displayed in the form of icons or lists, if the window
represents file structure.
Tabs - If an application allows executing multiple instances of itself, they
appear on the screen as separate windows. Tabbed Document
Interface has come up to open multiple documents in the same window.
Menu - Menu is an array of standard commands, grouped together and
placed at a visible place (usually top) inside the application window. The
menu can be programmed to appear or hide on mouse clicks.
Icon - An icon is small picture representing an associated application. When
these icons are clicked or double clicked, the application window is opened.
Icon displays application and programs installed on a system in the form of
small pictures.
Cursor - Interacting devices such as mouse, touch pad, digital pen are
represented in GUI as cursors. On screen cursor follows the instructions from
hardware in almost real-time. Cursors are also named pointers in GUI
systems. They are used to select menus, windows and other application
features.
The design stage encompasses several different aspects, including user interface design
(UI), usability (UX), content production, and graphic design. Within this post, we
focused mainly on UI and UX design.
Web Applications are web sites combined with server side programming which provide
functionalities such as interacting with users, connecting to back-end databases, and
generating results to browsers.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 56
Software Engineering (3150711)
For every interface design, either for traditional software or for WebApp, should have
the usability characteristics like response time; help facilities, error handling, menu and
command labeling, application accessibility, etc.
Security
Reduce external attacks
Exclude unauthorized access
Ensure the privacy of users/customers
Availability
The measure of the percentage of time that a WebApp is available for use
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 57
Software Engineering (3150711)
Scalability
Can the WebApp and the systems with which it is interfaced handle
significant variation in user or transaction volume.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 58
Software Engineering (3150711)
Unit: 6
Software Coding & Testing
6.1 Coding standard and coding guidelines:
Coding Standard:
A coding standard gives a uniform appearance to the codes written by different
engineers. It improves readability, and maintainability of the code and it reduces
complexity also. It helps in code reuse and helps to detect error easily.
The main goal of coding phase is to transform the design produced after requirements
are collected and analyzed, into code by using some languages.
It is very important for the programmers to maintain the coding standards otherwise
the code will be rejected during code review.
Purpose of Having Coding Standards:
A coding standard gives a uniform appearance to the codes written by different
engineers.
It improves readability, and maintainability of the code and it reduces complexity
also.
It helps in code reuse and helps to detect error easily.
It promotes sound programming practices and increases efficiency of the
programmers.
Coding Guidelines:
Following are some coding guidelines generally followed by most of the software
organizations:
Use simple coding styles that can be easily understood by other programmers.
Avoid using complex conventions.
Do not use identifiers for different purposes.
The codes should be well documented.
The functions and procedures should be short, it should not be too lengthy.
Avoid using Go to statements.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 59
Software Engineering (3150711)
In the coding phase, the design documents are translated into codes. Each software
organizations have their own standards and formatting style for writing codes. All the
software developers strictly follow the standard organizations of uniform code pattern.
Code review is necessary after completion of each of the modules of a software under
construction. In this phase, as many errors are possible are uncovered and resolved.
The code review is very economical, since errors are detected and corrected early in the
development stages.
Code review consists of following three activities:
1. Testing
2. Debugging, and
3. Correcting the errors
Following are some of review techniques generally used:
Code walkthrough is used to detect algorithmic and logical errors.
Code inspection is used to detect common programming errors.
Clean room testing.
1. Code Walkthrough:
A walkthrough is a term describing the review process at an abstract level.
It is an informal code analysis technique.
The term is often used in software industry to describe the process of inspecting
algorithms and source code to find out logical error by paths through the
algorithms or code as determined by input conditions.
Code Walkthrough is a form of peer review in which a programmer leads the
review process and the other team members ask questions and spot possible
errors against development standards and other issues.
Before the walkthrough meeting, the preparation by reviewers and then a
review report with a list of findings.
2. Code Inspection:
Code Inspection is the most formal type of review, which is a kind of avoid the
defect multiplication at a later stage.
The main purpose of code inspection is to find defects and it can also spot any
process improvement if any.
Once the code is written for a module; it is first verified before it is used by other.
Inspection was started for detecting faults in code, and was later applied for
design, requirement etc.
Preparation before the meeting is essential, which includes reading of any
source documents to ensure consistency.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 60
Software Engineering (3150711)
The inspection process is the most formal type of review based on rules and
checklists and makes use of entry and exit criteria.
After the meeting, a formal follow-up process is used to ensure that corrective
action is completed in a timely manner.
3. Cleanroom Testing:
The strategy and tactics of classroom testing are basically different from
traditional testing strategies and tactics.
Traditional methods generate a set of test cases to find the design and coding
errors.
The primary goal of clean room testing is to validate software requirements by
showing the statistical samples of use-cases that have been executed
successfully.
As a rule, there’s a special team in a company occupied with technical writing - the
documentation team. Although, workflows can differ. In some companies, support, dev
or QA can do documentation authoring.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 61
Software Engineering (3150711)
The documentation section describes each of the work produced as part of the software
process. These include:
Project documents (e.g., project plan)
Models (e.g., ER diagrams, class diagrams)
Technical documents (e.g., specifications, test plans)
User documents (e.g., help files)
Following are the list of questions that must be answered while conducting
documentation testing:
Are all modes of use are described accurately?
Is description of the sequence of each interaction accurate?
Are all the terminologies, menu descriptions and system responses are in
advance with the actual program?
Is the table of contents and index accurate and complete?
Are hyperlinks correct and accurate?
Is design navigation is appropriate?
All these questionnaires must be checked and answered by the independent third party.
Testing is an important activity in software development process. Before the start of the
development, testing is planned and is conducted very systematically.
In order to implement the testing, there are various testing strategies defined in the
software engineering literature. All these strategies provided a testing template to the
developers.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 62
Software Engineering (3150711)
1. Unit testing:
It focuses each of the components individually and ensures that it should work
properly as per requirements.
2. Integration testing :
An integration testing focuses on the construction and design of the software. The
test cases also focus on inputs and outputs during integration.
3. Validation testing :
Check all the requirements like functional, behavioral and performance
requirement are validate against the construction software.
4. System testing:
System testing confirms all system elements and performance are tested entirely.
3. The objectives of verification are to The objectives of the validation are to check
check whether software is whether the specifications are correct and
constructed according to satisfy the business need.
requirement and design specification.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 63
Software Engineering (3150711)
4. It describes whether the outputs are It explains whether they are accepted by
as per the inputs or not. the user or not.
5. Verification is done before the It is done after the verification.
validation.
6. Plans, requirement, specification, Actual product or software is tested under
code are evaluated during the validation.
verifications.
Principles of Testing:-
Once the software is developed it should be tested in a proper manner before the
system is delivered to the user. For this, two techniques that provide systematic
guidance for designing tests are used.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 64
Software Engineering (3150711)
The goal of white box testing is to ensure that the test cases (developed by software
testers by using white box testing) exercise each path through a program.
White box testing involves the testing of the software code for the following:
Internal security process
Broken or poorly structured paths in the coding processes
The flow of specific inputs through the code
Expected output
The functionality of conditional loops
Testing of each statement, object, and function on an individual basis
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 65
Software Engineering (3150711)
This method is named so because the software program, in the eyes of the tester, is
like a black box; inside which one cannot see.
This method attempts to find errors in the following categories:
Incorrect or missing functions
Interface errors
Errors in data structures or external database access
Behavior or performance errors
The black box testing is used to find the errors listed below.
1. Interface errors such as functions, which are unable to send or receive data
to/from software.
2. Incorrect functions that lead to undesired output when executed.
3. Missing functions and erroneous data structures.
4. Erroneous databases, which lead to incorrect outputs when the software uses
the data present in these databases for processing.
5. Incorrect conditions due to which the functions produce incorrect outputs
when they are executed.
6. Termination errors such as certain conditions due to which a function enters
a loop that forces it to execute indefinitely.
Here are the generic steps followed to carry out any type of Black Box Testing.
Initially, the requirements and specifications of the system are examined.
Tester chooses valid inputs (positive test scenario) to check whether SUT
(System Under Test) processes them correctly. Also some invalid inputs
(negative test scenario) are chosen to verify that the SUT is able to detect them.
Tester determines expected outputs for all those inputs.
Software tester constructs test cases with the selected inputs.
Software tester compares the actual outputs with the expected outputs.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 66
Software Engineering (3150711)
A test suite is a set of machines that is usually considered as a platform to test the
web apps. These machines are designed in such a way that they behave like a client-
side environment for testing the Web Apps.
On the other hand the labs are specially equipped and designed for usability testing.
The test labs allow the monitoring of various users testing the applications.
In another approach, the developer conducts the test on a daily basis as the
development proceeds and one part of the program is completed. These strategies
are chosen by the development team based on the product and convenience of the
team.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 67
Software Engineering (3150711)
The team starts with an incremental view of testing and test individual program
units. Then moving ahead with integration of the units, and finalizing the tests of
overall system.
A unit is the smallest testable part of any software. It usually has one or a few
inputs and usually a single output.
In procedural programming, a unit may be an individual program, function,
procedure, etc.
With the adoption of OO paradigm, almost all the phases of software development have
changed in their approach, environments, and tools.
Though OO paradigm helps make the designing and development of software easier, it
may pose new kind of problems. Thus, testing of software developed using OO
paradigm has to deal with the new problems also.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 68
Software Engineering (3150711)
OO program should be tested at different levels to uncover all the errors. At the
algorithmic level, each module (or method) of every class in the program should be
tested in isolation.
1. State-based Testing
State-based testing is used to verify whether the methods (a procedure that is
executed by an object) of a class are interacting properly with each other.
This testing seeks to exercise the transitions among the states of objects based
upon the identified inputs.
2. Fault-based Testing
Fault-based testing is used to determine or uncover a set of possible faults.
In other words, the focus of tester in this testing is to detect the presence of
possible faults.
Fault-based testing starts by examining the analysis and design models of OO
software as these models may provide an idea of problems in the
implementation of software.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 69
Software Engineering (3150711)
3. Scenario-based Testing
Scenario-based testing is used to detect errors that are caused due to incorrect
specifications and improper interactions among various segments of the
software.
The use of scenarios in testing is a common way of describing how a user might
accomplish a task or achieve a goal within a specific context or environment.
Note that these scenarios are more context- and user specific instead of being
product-specific.
The testing strategy for web and mobile applications use the basic principles for
all software testing and also applies the strategies and tactics of object-oriented
testing.
The testing strategy for web and mobile applications use the basic principles for all
software testing and also applies the strategies and tactics of object-oriented testing.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 70
Software Engineering (3150711)
Unit testing and subsequent integration testing can be performed by software testing
tools. These tools are used to fulfill all the requirements of planned testing activities.
These tools also work as commercial software testing tools. The quality of the software
is evaluated by software testers with the help of various testing tools.
The Test Manager is an automated software testing tool is used in day to days testing
activities. Such Test Management tools are used to facilitate regular Software
Development activities, automate & mange the testing activities.
We know that testing a software application is how tedious and painful. It consumes
lot of time and man hours. Eventually heavy investment is required. Also there are
possibilities of mistakes using manual testing.
Sometimes it is quite impossible to test all feature of software thoroughly before the
final delivery of the product to the client. In order to control testing in a proper way,
some automated tools are used to uncover the errors and correct then accordingly.
The examples of these automated tools are as follows:
1. WinRunner
2. LoadRunner
Win Runner is the most used Automated Software Testing Tool.
Main Features of Win Runner are :
Developed by Mercury Interactive
Functionality testing tool
Supports C/s and web technologies such as (VB, VC++, Java, HTML, Power Builder, Cibell
(ERP))
To Support .net, xml, SAP, Peoplesoft, Oracle applications, Multimedia we can use QTP
(Quick Test Professional).
Winrunner run on Windows only.
Xrunner run only UNIX and linux.
Tool developed in C on VC++ environment.
To automate our manual test win runner used TSL (Test Script language like c)
The messages and interactions to be generated are stored in scripts. Load Runner can
generate the scripts by recording them, such as logging HTTP requests between a client
web browser and an application's web server.
Load testing is to test that if the application works fine with the loads that result from
large number of simultaneous users, transactions and to determine weather it can
handle peak usage periods.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 71
Software Engineering (3150711)
Unit: 7
Quality Assurance and Management
7.1 Quality Concepts and Software Quality Assurance:
Software quality is an abstract concept. “In the context of software
engineering, software quality measures how well software is designed (quality of
design), and how well the software conforms to that design (quality of conformance). It
is often described as the 'fitness for purpose' of a piece of software.”
The most software developers will agree that high-quality software is an important
goal.
2. For the development processes, some standards specified that define the
development criteria. These development criteria will guide software engineering
process. If the criteria are not followed properly then the quality of the product
will be quite low.
Even if the explicit requirements are considered, the quality may be degraded if it fails
to meet implicit requirements.
Software quality is an complex mix of factors that will vary across different
applications and the customers who request them.
The factors that affect software quality can be categorized in two broad groups:
Factors that can be directly measured (e.g., defects uncovered during testing), and
Factors that can be measured only indirectly (e.g., usability or maintainability)
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 72
Software Engineering (3150711)
An organization has to ensure, that processes are efficient and effective as per the
quality standards defined for software products.
It assures that the standards and procedures once established are followed throughout
the software development life cycle.
Quality assurance has a defined cycle called PDCA cycle or Deming cycle. The
phases of this cycle are:
These above steps are repeated to ensure that processes followed in the organization
are evaluated and improved on a periodic basis.
SQA insures that there are clear and achievable standards these can evaluate the
compliance of the software application product with established standards.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 73
Software Engineering (3150711)
The process monitoring activity in an SQA ensures that the appropriate steps are
carried out during the development process. The SQA standards monitor all the
processes by comparing the actual steps carried out during the development process.
The SQA also ensures that the Management Plan specifies that methods that should be
used by the monitoring activity of SQA process.
FTR (Formal Technical Review) is also a learning ground for junior developers to know
more about different approaches to software analysis, design and implementation. It
also serves as a backup and continuity for the people who are not exposed to the
software development so far.
FTR (Formal Technical Review) activities include walkthroughs, inspection and round
robin reviews and other technical assessments. The above-mentioned methods are
different FTR (Formal Technical Review) formats
The software reviews can be considered as the filter in the software process. The
software reviews are applied throughout the development process at different point of
time. The main purpose of software reviews is to purify all these activities.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 74
Software Engineering (3150711)
The main motive behind the software reviews is to uncover the errors that can be
corrected later on. The technical reviews are having their own significant since the
developers can find errors of others but it is very difficult to find their own errors.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 75
Software Engineering (3150711)
Improving Reliability:
1. Primary objective: Remove faults with the most serious consequences.
2. Secondary objective: Remove faults that are encountered most often by users.
Fixing N% of the faults does not, in general, lead to an N% reliability
improvement.
90-10 Rule: 90% of the time you are executing 10% of the code.
One study showed that removing 60% of software “defects” led to a 3%
reliability improvement.
1. ISO 9000:
ISO 9000 is defined as a set of international standards on quality management
and quality assurance developed to help companies effectively document
the quality system elements needed to maintain an efficient quality system. They are
not specific to any one industry and can be applied to organizations of any size.
ISO 9000 can help a company satisfy its customers, meet regulatory requirements,
and achieve continual improvement. It should be considered to be a first step or the
base level of a quality system.
The ISO 9000 certification is provided if and only if the ISO 9000 series standards are
followed.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 76
Software Engineering (3150711)
All these standards are designed to improve the quality of the product.
Following are various of ISO 9000 series:
ISO 9001
ISO 9002
ISO 9003
In the following section, we will focus on some of the limitations of ISO 9000
certification:
ISO 9000 does not guarantee 100% for setting up an high quality system.
It does not provide any guidelines for defining the process.
There is no continuous process improvement.
CMM was developed by the Software Engineering Institute (SEI) at Carnegie Mellon
University in 1987.It is not a software process model. It is a framework which is used to
analyse the approach and techniques followed by any organization to develop a
software product.
It also provides guidelines to further enhance the maturity of those software products.
It is based on profound feedback and development practices adopted by the most
successful organizations worldwide.
This model describes a strategy that should be followed by moving through 5 different
levels. Each level of maturity shows a process capability level.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 77
Software Engineering (3150711)
Level-1: Initial –
No KPA’s defined.
Processes followed are adhoc and immature and are not well defined.
Unstable environment for software development.
No basis for predicting product quality, time for completion, etc.
Level-2: Managed–
Focuses on establishing basic project management policies.
Experience with earlier projects is used for managing new similar natured
projects.
Level-3: Defined –
At this level, documentation of the standard guidelines and procedures takes
place.
It is a well defined integrated set of project specific software engineering and
management processes.
Level-5: Optimizing –
This is the highest level of process maturity in CMM and focuses on continuous
process improvement in the organization using quantitative feedback.
Use of new tools, techniques and evaluation of software processes is done to
prevent recurrence of known defects.
Six sigma is a disciplined approach towards process improvement. It was first used by
General Eclectic (GE) Corporation back in 1995. Many companies across the globe now
are using Six Sigma standards and finding it useful.
Six Sigma is the process of producing high and improved quality output. This can be
done in two phases – identification and elimination. Six Sigma is a quality management
methodology used to help businesses improve current processes, products or services
by discovering and eliminating defects.
The main purpose behind using Six Sigma is to improve the process for the
development of the products faster and reasonable cost. The six sigma approach
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 78
Software Engineering (3150711)
uncovers many errors and corrects it. Thus we can say that six sigma is a systematic
approach to achieve perfection.
Basically the Six Sigma is an approach that is based on measurement strategy and
obviously focuses on process improvement.
The purpose of this Software Quality Assurance Plan (SQAP) is to define the
techniques, procedures, and methodologies that will be used at the Center for Space
Research (CSR) to assure timely delivery of the software that meets specified
requirements within project resources.
SQA is the mainly responsible for leading the Quality Initiative in the CMMI
organization.
SQA is responsible for conducting many associated process improvement
activities in the organization.
SQA is involved with these CMMI Process Improvement activities: Process
Improvement Planning
SQA Benefits:
SQA has a host of benefits. It ensures that software built as per SQA procedures are of
specified quality. SQA helps to:
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 79
Software Engineering (3150711)
Unit: 8
Software Maintenance and Configuration Management
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 80
Software Engineering (3150711)
3. Perfective maintenance:
A software product needs maintenance to support the new features that the users
want or to change different types of functionalities of the system according to the
customer demands.
4. Preventive maintenance:
This type of maintenance includes modifications and updating to prevent future
problems of the software. It goals to attend problems, which are not significant at
this moment but may cause serious issues in future.
There are number of reasons, why modifications are required, some of them are
briefly mentioned below:
1. Market Conditions - Policies, which changes over the time, such as taxation and
newly introduced constraints like, how to maintain bookkeeping, may trigger need
for modification.
2. Client Requirements - Over the time, customer may ask for new features or
functions in the software.
3. Host Modifications - If any of the hardware and/or platform (such as operating
system) of the target host changes, software changes are needed to keep
adaptability.
4. Organization Changes - If there is any business level change at client end, such as
reduction of organization strength, acquiring another company, organization into
new business, need to modify in the original software may arise.
8.2 Re-Engineering:
Software Re-engineering is a process of software development which is done to
improve the maintainability of a software system. Re-engineering is the examination
and alteration of a system to reconstitute it in a new form. This process encompasses a
combination of sub-processes like reverse engineering, forward engineering,
reconstructing etc.
Re-engineering is the reorganizing and modifying existing software systems to make them
more maintainable.
Objectives of Re-engineering:
To describe a cost-effective option for system evolution.
To describe the activities involved in the software maintenance process.
To distinguish between software and data re-engineering and to explain the
problems of data re-engineering.
Reengineering is the term used for a radical change processes in the organization.
Reorganising and modifying existing software systems to make them more
maintainable.
Sometimes the concept of Business Process Reengineering is used. A variety of
reengineering work products (e.g., analysis model, design model, test procedures) are
product.
The final output is the reengineered business process and/or the engineered software
that supports it.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 81
Software Engineering (3150711)
Advantages of Re-engineering:
Reduced Risk: As the software already exists, the risk is less as compared to new
software development. Development problems, staffing problems and
specification problems are the lots of problems which may arise in new software
development.
Reduced Cost: The cost of re-engineering is less than the costs of developing new
software.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 82
Software Engineering (3150711)
1. Abstraction Level:
In this level, the design information is extracted from the source code.
It is the highest level in the reverse engineering process.
It is always expected that the abstraction level for any reverse engineering
process must be high.
When the level of abstraction is high, then it becomes easy for the software
developer to understand the program.
2. Completeness:
The completeness is nothing but the details available through the abstraction
level of reverse engineering process.
For example from the given source code it is very easy to develop the complete
procedural design.
3. Directionality:
The directionality of a reverse engineering process is a method of extracting
information from the source code and making it available to the software
developers.
The software developers can use this information during the maintenance
activity.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 83
Software Engineering (3150711)
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 84
Software Engineering (3150711)
It is essential to control the changes in light of the fact that if the changes are not
checked legitimately then they may wind up undermining a well-run programming.
It aims to control cost and work effort involved in making changes to the software
system. The primary goal is to increase productivity with minimal mistakes.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 85
Software Engineering (3150711)
SCM process is also beneficial to control the costs involved in making changes to
a system.
SCM defines a mechanism to deal with different technical difficulties of a project plan. In
a software organization, effective implementation of software configuration
management can improve productivity by increased coordination among the
programmers in a team.
SCM helps to eliminate the confusion often caused by miscommunication among team
members. The SCM system controls the basic components such as software objects,
program code, test data, test output, design documents, and user manuals.
To control and manage software configuration items, each must be separately named
and then organized using an object-oriented approach. Two types of objects can be
identified: basic objects and aggregate objects.
A basic object is a "unit of text" that has been created by a software engineer during
analysis, design, code, or test.
The object name is a character string that identifies the object unambiguously.
The object description is a list of data items that identify the SCI type (e.g., model
element, program, data) represented by the object, a project identifier, and change
and/or version information.
Resources are “entities that are provided, processed, referenced or otherwise required
by the object”.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 86
Software Engineering (3150711)
Two types of objects can be identified : Basic objects and aggregate objects
A basic object is a unit of information that has been created by a software
engineer during analysis, design, code or test. For example, a basic object might
be a section of requirements specification, part of design model or a source code
of component.
An aggregate object is a collection of basic objects. Each object has a set of
distinct features that identify it uniquely: a name, a description, a list of
resources.
Configuration object identification can also consider the relationships that exist
between named objects. For example, using the simple notation :
o Class diagram <part-of> analysis model;
o Analysis model <part-of> requirements specification;
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 87
Software Engineering (3150711)
An Engineering Change Order (ECO) is generated for each approved change. The
ECO describes the change to be made, the constraints that must be respected and
the criteria for review and audit.
A version control system updates the original file once the change has been
made. As an alternative, the objects can be checked out of the project database,
the change is made and appropriate SQA activities are applied. The object is then
checked into the database and appropriate version control mechanisms are used
to create the next version of the software.
These version control mechanisms, integrated within the change control
process, implement two important elements of change management – access
control and synchronization.
Access control governs which software engineers have authority to access and
modify a particular configuration object.
Synchronization control helps to ensure that parallel changes, performed by two
different people do not overwrite one another.
For such projects, change control combines human procedures and automated tools to
provide a mechanism for the control of change.
A change request is submitted and evaluated to assess technical merit, potential side
effects, overall impact on other configuration objects and system functions, and the
projected cost of the change.
The results of the evaluation are presented as a change report, which is used by a
change control authority. (CCA)—a person or group that makes a final decision on the
status and priority of the change.
An engineering change order (ECO) is generated for each approved change. The ECO
describes the change to be made, the constraints that must be respected, and the
criteria for review and audit.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 88
Software Engineering (3150711)
Unit: 9
DevOps
9.1 Overview:
DevOps is the combination of cultural philosophies, practices, and tools that increases
an organization’s ability to deliver applications and services at high velocity: evolving
and improving products at a faster pace than organizations using traditional software
development and infrastructure management processes.
This speed enables organizations to better serve their customers and compete more
effectively in the market.
Under a DevOps model, development and operations teams are no longer “siloed.”
Sometimes, these two teams are merged into a single team where the engineers work
across the entire application lifecycle, from development and test to deployment to
operations, and develop a range of skills not limited to a single function.
In some DevOps models, quality assurance and security teams may also become more
tightly integrated with development and operations and throughout the application
lifecycle. When security is the focus of everyone on a DevOps team, this is sometimes
referred to as DevSecOps.
These teams use practices to automate processes that historically have been manual
and slow. They use a technology stack and tooling which help them operate and evolve
applications quickly and reliably.
These tools also help engineers independently accomplish tasks (for example,
deploying code or provisioning infrastructure) that normally would have required help
from other teams, and this further increases a team’s velocity.
In simple words, DevOps can be defined as an alignment of development and IT
operations with better communication and collaboration.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 89
Software Engineering (3150711)
Benefits of DevOps:
Speed
Rapid Delivery
Reliability
Scale
Improved Collaboration
Security
Why DevOps?
You might have heard the following statements about DevOps:
DevOps is a close collaboration between Development team and Operations.
DevOps is using Automation.
DevOps is treating your infrastructure as code.
DevOps is frequent and smaller deployments to production.
DevOps is using Agile Methodologies.
“DevOps” upon the world, there is no denying that DevOps has evolved into a global
movement.
Of course, DevOps has its detractors. Negative opinions range from the misguided
(“DevOps is a new name for a Sys Admin”) to the dismissive (“DevOps is just some crazy
Devs trying to get rid of Ops” or “DevOps is just crazy some Ops trying to act like Devs
so they will be better liked”) to the outright offended (whose arguments tend to defy
logic).
I’ve spent the past nine months or so overcoming resistance to the DevOps movement
in both public forums and inside client companies. During that time, I’ve begun to notice
a common misconception that I think is fueling much of the negative initial reaction that
some people have to DevOps ideas. I want to take a shot at clearing it up now:
Within that business process there are all kinds of activity that needs to happen, some
technology-driven and some human-driven. This is where all of the different functions
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 90
Software Engineering (3150711)
But if you take away the context of the business process, what have you got? You’ve got
a bunch of people and groups doing their own thing. You lose any real incentive to fight
inefficiency, duplication of effort, conflicts, and disconnects between those groups. It’s
every person for them, literally.
But you know what else happens if you remove the context of the business process?
Your job eventually goes away. Enabling the business is why we get paychecks and
why we get to spend our time doing what we do. If there is no business to enable or we
don’t do any business enabling, this all just turns into a hobby. And by definition, it’s
pretty difficult to get paid for a hobby.
The whole point of DevOps is to enable your business to react to market forces as
quickly, efficiently, and reliably as possible. Without the business, there is no other
reason for us to be talking about DevOps problems, much less spending any time
solving them.
As more businesses rush to beat the competition with the help of technology, software
development has become more than just a sound investment. It is a major revenue
channel and the main strategic benefit of a modern business.
That is why it is crucial to ensure the quality, performance, and security of your
product, as well as a fast time to market. For the last decade, businesses and software
development teams around the world have been relying on the agile methodology as a
way to improve team efficiency and adaptability.
However, with the increased focus on the business value of software products,
traditional methods are no longer enough. There is a need for more effective ways to
build and deploy software.
Benefits of fixing application:
1. Reduced chance of product failure.
2. Improved flexibility and support.
3. Faster time to market.
4. Better team efficiency.
5. Clear product vision within the team.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 91
Software Engineering (3150711)
While this may seem easy on paper, it is not so simple to execute without strong
support from the organization. Here, discuss what it takes to deliver a successful
DevOps project through the different stages of the development lifecycle.
The journey starts with the user (e.g. customer, client, software requirement,
enhancement request, bug fix, line-of-business, features, idea) in mind. User feedback is
an integral part of the process with ongoing development and deployment practices.
By enabling organizations to create stronger bonds between Dev, Ops and other
stakeholders in the company, DevOps promotes shorter, more controllable iterations
through the adoption of best practices, automation and new tools.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 92
Software Engineering (3150711)
DevOps is not a technology, but it covers everything from the organisation to culture,
processes and tooling.
Initial steps usually include Continuous integration and continuous delivery (CI/CD),
real-time monitoring, incident response systems and collaboration platforms.
Benefits of DevOps
Maximizes Efficiency with Automation
Optimizes the Entire Business
Improves Speed and Stability of Software Development and Deployment
Gets You to Focus on What Matters Most: People
That was fine when Waterfall development dominated. But since Agile and continuous
workflow have taken over the world of software development, this model is out of the
game. Short sprints and frequent releases occurring every two weeks or even every day
require a new approach and new team roles.
But first, let’s look at what DevOps is all about and how it helps improve product
delivery.
Successful, long-lasting movement have a clear manifesto outlining goals and principles.
Many DevOps adopters may not be aware of the DevOps Manifesto nor how successful
DevOps requires keeping a clear focus on principles, practices, and value (instead of
infrastructure tooling).
DevOps Principles
DevOps value is derived in the core principles that started the movement:
Iterative
Incremental
Continuous
Automated
Self-service
Collaborative
Holistic
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 93
Software Engineering (3150711)
DevOps currently ranges over the whole association including client benefit,
advertising, item proprietors, program administrators, and distinctive levels of
engineers, discharge or construct groups and framework group.
The fundamental focal point of DevOps is to serve the client better and speedier.
Therefore; it is essential for every partner to have better end-to-end accepting of
activities.
These activities are arranging, mixing, testing, checking, conveyance, and criticism. This
is the 7C approach of DevOps which requires a rich combination of procedures and
devices to robotize the consistent data trade and execution.
Continuous Planning
Continuous Development
Continuous Deployment
Continuous Integration
Continuous Testing
Continuous Delivery and Monitoring
Continuous Feedback
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 94
Software Engineering (3150711)
The goal of Continuous Testing is test early and tests often. The process involves
stakeholders like Developer, DevOps, QA and Operational system.
Then came the idea of DevOps, which has its roots in the Agile methodology and
integrates the two teams to improve collaboration and productivity. There are actually
many different definitions of the term “DevOps,” and the concepts behind it are
multilayered.
But most will agree at least that continuity and automation are big parts of DevOps, and
certain DevOps tools help team members ensure that those two elements will be
implemented as efficiently as possible.
Of course, your organization’s specific needs will determine which tools are best for
you, but here are what many consider to be the top DevOps tools.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 95
Software Engineering (3150711)
As to the best practices for choosing DevOps tools you can use to approach your
DevOps implementation, these can be boiled down to seven steps.
1.Step 1: Understand the collaboration and shared tools strategy for the Dev, QA, and
infrastructure automation teams.
2.Step 2: Use tools to capture every request.
3.Step 3: Use agile Kanban project management for automation and DevOps requests
that can be dealt with in the tooling.
4.Step 4: Use tools to log metrics on both manual and automated processes.
5.Step 5: Implement test automation and test data provisioning tooling.
6.Step 6: Perform acceptance tests for each deployment tooling.
7.Step 7: Ensure continuous feedback between the teams to spot gaps, issues, and
inefficiencies.
Over the years, DevOps has gained global recognition among IT professionals and
experts who have not only given it a thought but have also gone a step ahead to
implement it within their organizations, leaving behind manual interventions and
working towards an automated synced world.
You could easily identify automation as one of the major pillars of this movement.
However, despite its widespread popularity, why does DevOps implementation
continue to remain a challenge for some? Let us look into some of the challenges faced
during implementation.
Speaking in terms of technological goals, even though we are well aware of the fact
that DevOps aims to achieve the ultimate in automation and integration, practical
implementation of it is still a far cry.
Implementing new schools of thought has always been a struggle, even if it is about
replacing older methods with newer ones. Here are some of the challenges that people
often face during DevOps implementation.
Here are some of the challenges that people often face during DevOps
implementation.
Lack of a Standard Definition for DevOps
Dearth of Vision
Shortage of Tool Knowledge
Choice of Tools
Lack of Tool Integration
Cultural Challenges
Isolated Teams
Risk Analysis
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 96
Software Engineering (3150711)
A DevOps Engineer must be able to manage the IT infrastructure as per the supported
software code dedicated in multi-tenant or hybrid cloud environments.
There is a need to have a provision for required resources and for getting the
appropriate deployment model, validating the release and monitoring performance.
DevOps is a clear indication of its ability to help companies grow. When a company
implements DevOps and practices well, then there will be an improvement in its
software products.
Good DevOps implementation helps a company to deliver better, faster, top-quality and
reliable software. This is possible because of the cooperation amongst all the
departments in a company. For this implementation to work well, then there must be
changes and modifications in the programming practices. The following are key
practices that will lead to a successful implementation.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 97
Software Engineering (3150711)
Value stream mapping brings the metrics you need to deliver on the promise of DevOps.
And the faster, more frequent, and more continuous feedback you have, the .VSM helps
companies measure the value they are receiving from DevOps tools and practices. ...
SAP S/4HANA app migration: Lessons from the trenches.
DevOps - Measure :
Accelerate correlates these ideas and technical practices with four metrics:
DevOps-Feedback :
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 98
Software Engineering (3150711)
Unit: 10
Advanced topics in Software Engineering
1. Component Qualification:
This activity ensures that the system architecture define the requirements of the
components for becoming a reusable component. Reusable components are
generally identified through the traits in their interfaces. It means “the services
that are given, and the means by which customers or consumers access these
services ” are defined as a part of the component interface.
2. Component Adaptation:
This activity ensures that the architecture defines the design conditions for all
component and identifying their modes of connection. In some of the cases,
existing reusable components may not be allowed to get used due to the
architecture’s design rules and conditions. These components should adapt and
meet the requirements of the architecture or refused and replaced by other, more
suitable components.
3. Component Composition:
This activity ensures that the Architectural style of the system integrates the
software components and forms a working system. By identifying connection and
coordination mechanisms of the system, the architecture describes the
composition of the end product.
4. Component Update:
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 99
Software Engineering (3150711)
the reusable component may be outside the immediate control of the software
engineering organization accessing the component currently.).
Various Components :
All system processes are placed into separate components so that all of the data and
functions inside each component are semantically related (just as with the contents of
classes).
Because of this principle, it is often said that components are modular and cohesive.
However, when a component needs to use another component in order to function, it
adopts a used interface that specifies the services that it needs.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 100
Software Engineering (3150711)
The process model used in C/S software engineering is evolutionary beginning with
requirements elicitation. Functionality is allocated to subsystems of components that
are assigned to either the client or the server side of the C/S architecture.
C/S software engineering relies on the same SQA practices as other software
engineering processes. Formal technical reviews are used to assess the quality of the
analysis and design models. Specialized reviews consider issues associated with
component integration and middleware. Testing is used to uncover errors at the
component, subsystem, client, and sever levels.
There are different software process models were introduced. Although any of them
could be adapted for use during the development of software for c/s systems, two
approaches are most commonly used:
Client/server systems are developed using the classic software engineering activities
analysis, design, construction, and testing—as the system evolves from a set of general
business requirements to a collection of validated software components that have been
implemented on client and server machines.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 101
Software Engineering (3150711)
File servers - The client requests specific records from a file. The server transmits
these records to the client across the network.
Database servers - The client sends structured query language (SQL) requests to
the server. These are transmitted as messages across the network. The server
processes the SQL request and finds the requested information, passing back the
results only to the client.
Transaction servers - The client sends a request that invokes remote procedures at
the server site. The remote procedures are a set of SQL statements.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 102
Software Engineering (3150711)
Groupware servers - When the server provides a set of applications that enable
communication among clients (and the people using them) using text, images,
bulletin boards, video, and other representations, a groupware architecture exists.
Web engineering homework help provides all the related and important information in
a simplest way which is comprehend by users and learners easily and all the
assignment related work is done on time under the supervision of best online experts.
Web engineering is the process used to create high-quality Web Apps. Web engineering
is not a perfect clone of software engineering, but it borrows many of software
engineering’s.
Because WebApps are often content driven with an emphasis on aesthetics, it is likely
that parallel development activities will be scheduled within the WebE process and
involve a team of both technical and non-technical people (e.g., copywriters, graphic
designers).
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 103
Software Engineering (3150711)
The WebE process begins with a formulation—an activity that identifies the
goals and objectives of the WebApp and establishes the scope for the first
increment.
1.Planning : estimates overall project cost, evaluates risks associated with the
development effort, and defines a finely granulated development schedule for the initial
WebApp increment, with a more coarsely granulated schedule for subsequent
increments.
2.Analysis : establishes technical requirements for the WebApp and identifies the
content items that will be incorporated.
The intent of these tasks is to design, produce, and/or acquire all text, graphics, audio,
and video content that are to become integrated into the WebApp.
Page generation is a construction activity that makes heavy use of automated tools for
WebApp creation.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 104
Software Engineering (3150711)
Each increment produced as part of the WebE process is reviewed during customer
evaluation. This is the point at which changes are requested (scope extensions occur).
10.4 Re-Engineering:
Software Re-engineering is a process of software development which is done to
improve the maintainability of a software system. Re-engineering is the examination
and alteration of a system to reconstitute it in a new form. This process encompasses a
combination of sub-processes like reverse engineering, forward engineering,
reconstructing etc.
Re-engineering is the reorganizing and modifying existing software systems to make them
more maintainable.
Objectives of Re-engineering:
To describe a cost-effective option for system evolution.
To describe the activities involved in the software maintenance process.
To distinguish between software and data re-engineering and to explain the
problems of data re-engineering.
Reengineering is the term used for a radical change processes in the organization.
Reorganising and modifying existing software systems to make them more
maintainable.
Sometimes the concept of Business Process Reengineering is used. A variety of
reengineering work products (e.g., analysis model, design model, test procedures) are
product.
The final output is the reengineered business process and/or the engineered software
that supports it.
Re-engineering Cost Factors:
The quality of the software to be re-engineered
The tool support available for re-engineering
The extent of the required data conversion
The availability of expert staff for re-engineering
Advantages of Re-engineering:
Reduced Risk: As the software is already existing, the risk is less as compared to
new software development. Development problems, staffing problems and
specification problems are the lots of problems which may arise in new software
development.
Reduced Cost: The cost of re-engineering is less than the costs of developing new
software.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 105
Software Engineering (3150711)
CASE can also help as a warehouse for documents related to projects, like business
plans, requirements and design specifications. One of the major advantages of using
CASE is the delivery of the final product, which is more likely to meet real-world
requirements as it ensures that customers remain part of the process.
CASE illustrates a wide set of labor-saving tools that are used in software development.
It generates a framework for organizing projects and to be helpful in enhancing
productivity.
There was more interest in the concept of CASE tools years ago, but less so today, as the
tools have morphed into different functions, often in reaction to software developer
needs. The concept of CASE also received a heavy dose of criticism after its release.
CASE Tools:
The essential idea of CASE tools is that in-built programs can help to analyze developing
systems in order to enhance quality and provide better outcomes.
Various tools are incorporated in CASE and are called CASE tools, which are used to
support different stages and milestones in a software development life cycle.
CASE tools can be broadly divided into the following parts based on their use at a
particular SDLC stage:
Central Repository - CASE tools require a central repository, which can serve as a
source of common, integrated and consistent information.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 106
Software Engineering (3150711)
1.Upper Case Tools - Upper CASE tools are used in planning, analysis and design
stages of SDLC.
2.Lower Case Tools - Lower CASE tools are used in implementation, testing and
maintenance.
3.Integrated Case Tools - Integrated CASE tools are helpful in all the stages of SDLC,
from Requirement gathering to Testing and documentation.
CASE tools can be grouped together if they have similar functionality, process activities
and capability of getting integrated with other tools.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 107
Software Engineering (3150711)
As special emphasis is placed on redesign as well as testing, the servicing cost of a
product over its expected lifetime is considerably reduced.
Chances to meet real-world requirements are more likely and easier with a
computer-aided software engineering approach.
As part of the improvement process, the CMMI uses a systematic, evidence based
approach which can be applied to any business problem.
In fact, the Capability Maturity Model Integration (CMMI) developed by the Software
Engineering Institute at Carnegie Mellon Institute, grew out of the need to develop
better quality software for industry and the government.
Broadsword applies its unique methodology called Agile CMMI to software process
improvement.
Defining and implementing processes is only part of the improvement picture.The real
key is getting the community to embrace and use the processes.
Agile CMMI uses Agile methods, such as incremental delivery, continuous build and
collaboration to support implementation and acceptance of the process.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 108
Software Engineering (3150711)
It is used in freeware, open source software and commons based peer production. It is
also used in agile development model. It is generally used in development of free
software.
It is very compatible with free software. They meets online for software development. It
is evolution of integrated development environment.
Model-Driven Development:
It is software design approach for development of software system.
It provides guidelines for structuring of specifications.
It is kind of domain engineering.
It is launched by object management group.
It defines system functionalities using platform independent model.
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 109
Software Engineering (3150711)
Prepared By: Prof. Nikhilesh Girnara (V.V.P. Engg. College - Rajkot) Page 110