0% found this document useful (0 votes)
35 views29 pages

Se Unit I Notes

unit 1 notes te be
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views29 pages

Se Unit I Notes

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

lOMoARcPSD|14219384

SE Unit I notes

Computer Engineering (Savitribai Phule Pune University)

Scan to open on Studocu

Studocu is not sponsored or endorsed by any college or university


Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])
lOMoARcPSD|14219384

SE IT
Savitribai Phule University, Pune
Subject: Software engineering [214454]
Unit I: Unit-I: Introduction to software Engineering
Software Engineering Fundamentals: Nature of Software, Software Engineering Practice, Software Process,
Software Myths.
Process Models : A Generic Process Model, Linear Sequential Development Model, Iterative Development
Model, The incremental Development Model
Agile software development: Agile manifesto, agility principles, Agile methods, myth of planned
development, Introduction to Extreme programming and Scrum.
Agile Practices: test driven development, pair programming, continuous integration in DevOps , Refactoring

Unit Objectives: On completion of unit students will be able to :


1. To learn the principles of Software Engineering.
.

Unit Outcomes:

CO1: Classify various software application domains.

Books :
1. Roger S Pressman, Software Engineering: A Practitioner’s Approach, Mcgraw-Hill, ISBN:
0073375977, Seventh or Eighth Edition.

2. Joseph Phillips, IT Project Management –On Track From Start to Finish, Tata Mc Graw-Hill,
ISBN13: 978-0-07106727-0, ISBN-10: 0-07-106727-2.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

Unit-I: Overview of software Engineering


Introduction

Software is a program or set of programs containing instructions which provide desired functionality. And
Engineering is the processes of designing and building something that serves a particular purpose and find
a cost-effective solution to problems.

Software Engineering is a systematic approach to the design, development, operation, and maintenance of
a software system.

Characteristics or Objectives of Software Engineering:

Maintainability –

It should be feasible for the software to evolve to meet changing requirements.

Correctness –

A software product is correct, if the different requirements as specified in the SRS document have been
correctly implemented.

Reusability –

A software product has good reusability, if the different modules of the product can easily be reused to
develop new products.

Testability –

Here software facilitates both the establishment of test criteria and the evaluation of the software with
respect to those criteria.

Reliability –

It is an attribute of software quality. The extent to which a program can be expected to perform its desired
function, over an arbitrary time period.

Portability –

In this case, software can be transferred from one computer system or environment to another.

Adaptability –

In this case, software allows differing system constraints and user needs to be satisfied by making changes
to the software.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

Software Engineering
The term is made of two words, software and engineering. Software is more than just a program code. A
program is an executable code, which serves some computational purpose. Software is considered to be
collection of executable programming code, associated libraries and documentations. Software, when
made for a specific requirement is called software product.

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

Software engineering is an engineering branch associated with development of software product using
well-defined scientific principles, methods and procedures. The outcome of software engineering is an
efficient and reliable software product.

Nature of Software:-

Software can be applied in a situation for which a predefined set of procedural steps exists.based on
complex growth of software it can be classified into following categories.

System Software –

System Software is necessary to manage the computer resources and support the execution of application
programs. Software like operating systems, compilers, editors and drivers etc., come under this category.

Networking and Web Applications Software –

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

Embedded Software –

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

Reservation Software –

A Reservation system is primarily used to store and retrieve information and perform transactions related
to air travel, car rental, hotels, or other activities. They also provide access to bus and railway reservations,

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

although these are not always integrated with the main system. These are also used to relay computerized
information for users in the hotel industry, making a reservation and ensuring that the hotel is not
overbooked.

Business Software –

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

Entertainment Software –

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

Artificial Intelligence Software –

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

Scientific Software –

Scientific and engineering software satisfies the needs of a scientific or engineering user to perform
enterprise specific tasks. Such software is written for specific applications using principles, techniques and
formulae specific to that field. Examples are software like MATLAB, AUTOCAD, PSPICE, ORCAD, etc.

Utilities Software –

The programs coming under this category perform specific tasks and are different from other software in
terms of size, cost and complexity. Examples are anti-virus software, voice recognition software,
compression programs, etc.

Document Management Software –

A Document Management Software is used to track, manage and store documents in order to reduce the
paperwork. Such systems are capable of keeping a record of the various versions created and modified by
different users (history tracking). They commonly provide storage, versioning, metadata, security, as well
as indexing and retrieval capabilities.

Software Engineering Practice

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

Software engineering (SE) is concerned with developing and maintaining software systems that behave
reliably and efficiently, are affordable to develop and maintain, and satisfy all the requirements that
customers have defined for them.

The Essence of Practice

Analysis: decompose a large problem into smaller, understandable pieces composition is challenging

1. Understand the problem (communication and analysis)

• Who has a stake in the solution to the problem?

• What are the unknowns? and what (data, function, behaviour) are required to properly solve the
Problem?

2. Carry out the plan (construction; code generation)

• Does the solution conform to the plan? Is the source code traceable back to the design?

• Is each component of the solution correct? Has the design and code been reviewed, or better?

3. Examine the results for accuracy (testing and quality assurance)

Core Principles

 Remember the reason that the software exists -The software should provide value to its users and
satisfy the requirements

 Keep it simple - All design and implementation should be as simple as possible

 Maintain the vision of the project - A clear vision is essential to the project’s success

 Others will consume what you produce - Always specify, design, and implement knowing that
someone else will later have to understand and modify what you did

 Be open to the future- Never design yourself into a corner; build software that can be easily
changed and adapted.

Software myths:
Software myths are misleading attitudes that have caused serious problems for managers and technical
people alike. Software myths propagate misinformation and confusion. There are three kinds of software
myths:

1) Management myths: Managers with software responsibility are often under pressure to maintain
budgets, keep schedules from slipping, and improve quality. Following are the management myths:

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

 Myth: We already have a book that’s full of standards and procedures for building software, won’t that
provide my people with everything they need to know?

Reality: The book of standards may very well exist, but isn’t used. Most software practitioners aren’t
aware of its existence. Also, it doesn’t reflect modern software engineering practices and is also complete.

 Myth: My people have state-of-the-art software development tools, after all, we buy them the newest
computers.

Reality: It takes much more than the latest model mainframe, workstation, or PC to do high-quality
software development. Computer-aided software engineering (CASE) tools

are more important than hardware for achieving good quality and productivity, yet the majority of software
developers still do not use them effectively.

 Myth: If we get behind schedule, we can add more programmers and catch up (sometimes called the
Mongolian horde concept).

Reality: Software development is not a mechanistic process like manufacturing. As new people are added,
people who were working must spend time educating the newcomers, thereby reducing the amount of time
spent on productive development effort. People can be added but only in a planned and well-coordinated
manner.

 Myth: If I decide to outsource the software project to a third party, I can just relax and let that firm
build it.

Reality: If an organization does not understand how to manage and control software projects internally, it
will invariably struggle when it outsources software projects.

2) Customer myths: Customer myths lead to false expectations (by the customer) and ultimately,
dissatisfaction with the developer. Following are the customer myths:

 Myth: A general statement of objectives is sufficient to begin writing programs-we can fill in the details
later.

Reality: A poor up-front definition is the major cause of failed software efforts. A formal and detailed
description of the functions, behavior, performance, interfaces, design constraints, and validation criteria is
essential.

 Myth: Project requirements continually change, but change can be easily accommodated because
software is flexible.

Reality: It is true that software requirements change, but the impact of change varies with the time at
which it is introduced. When changes are requested during software design, the cost impact grows rapidly.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

Resources have been committed and a design framework has been established. Change can cause heavy
additional costs. Change, when requested after software is in production, can be much more expensive than
the same change requested earlier.

3) Practitioner’s myths: Practitioners have following myths:

 Myth: Once we write the program and get it to work, our job is done.

Reality: Industry data indicate that between 60 and 80 percent of all effort expended on software will be
expended after it is delivered to the customer for the first time.

 Myth: Until I get the program “running” I have no way of assessing its quality.

Reality: One of the most effective software quality assurance mechanisms can be applied from the
inception of a project—the formal technical review.

A Layered Technology

Divided into 4 layers: -


1. A quality Process: -
Any engineering approach must rest on a quality.
The "Bed Rock" that supports software Engineering is Quality Focus.
2. Process: -
Foundation for SE is the Process Layer

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

SE process is the GLUE that holds all the technology layers together and enables the timely development
of computer software.
It forms the base for management control of software project.
3. Methods: -
SE methods provide the "Technical Questions" for building Software.
Methods contain a broad array of tasks that include communication requirement analysis, design modeling,
program construction testing and support.
4. Tools: -
SE tools provide automated or semi-automated support for the "Process" and the "Methods".
Tools are integrated so that information created by one tool can be used by another.

Generic Process Model


A software process is a collection of various activities.
There are five generic process framework activities:

1. Communication:
The software development starts with the communication between customer and developer.

2. Planning:
It consists of complete estimation, scheduling for project development and tracking.

3. Modeling:
Modeling consists of complete requirement analysis and the design of the project like algorithm, flowchart
etc.
The algorithm is the step-by-step solution of the problem and the flow chart shows a complete flow
diagram of a program.

4. Construction:
Construction consists of code generation and the testing part. Coding part implements the design details
using an appropriate programming language.
Testing is to check whether the flow of coding is correct or not. Testing also check that the program
provides desired output.

5. Deployment:
Deployment step consists of delivering the product to the customer and take feedback from them.
If the customer wants some corrections or demands for the additional capabilities, then the change is
required for improvement in the quality of the software.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

Software Process Framework


 The process of framework defines a small set of activities that are applicable to all types of
projects.
 The software process framework is a collection of task sets.
 Task sets consist of a collection of small work tasks, project milestones, work productivity and
software quality assurance points.

Umbrella activities
Typical umbrella activities are:

1. Software project tracking and control


 In this activity, the developing team accesses project plan and compares it with the predefined
schedule.
 If these project plans do not match with the predefined schedule, then the required actions are taken
to maintain the schedule.
2. Risk management
 Risk is an event that may or may not occur.
 If the event occurs, then it causes some unwanted outcome. Hence, proper risk management is
required.
3. Software Quality Assurance (SQA)

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

 SQA is the planned and systematic pattern of activities which are required to give a guarantee of
software quality.
For example, during the software development meetings are conducted at every stage of
development to find out the defects and suggest improvements to produce good quality software.
4. Formal Technical Reviews (FTR)
 FTR is a meeting conducted by the technical staff.
 The motive of the meeting is to detect quality problems and suggest improvements.
 The technical person focuses on the quality of the software from the customer point of view.
5. Measurement
 Measurement consists of the effort required to measure the software.
 The software cannot be measured directly. It is measured by direct and indirect measures.
 Direct measures like cost, lines of code, size of software etc.
 Indirect measures such as quality of software which is measured by some other factor. Hence, it is
an indirect measure of software.
6. Software Configuration Management (SCM)
 It manages the effect of change throughout the software process.
7. Reusability management
 It defines the criteria for reuse the product.
 The quality of software is good when the components of the software are developed for certain
application and are useful for developing other applications.
8. Work product preparation and production
 It consists of the activities that are needed to create the documents, forms, lists, logs and user
manuals for developing a software.

Process Models
A software process model is a specified definition of a software process, which is presented from a
particular perspective.
Models, by their nature, are a simplification, so a software process model is an abstraction of the actual
process, which is being described.
Process models may contain activities, which are part of the software process, software product, and the
roles of people involved in software engineering.

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

1. The Waterfall Model


2. Incremental Process model
3. RAD model

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

1. The Waterfall Model


 The waterfall model is also called as 'Linear sequential model' or 'Classic life cycle model'.
 In this model, each phase is fully completed before the beginning of the next phase.
 This model is used for the small projects.
 In this model, feedback is taken after each phase to ensure that the project is on the right path.
 Testing part starts only after the development is complete.

Advantages of waterfall model


 The waterfall model is simple and easy to understand, implement, and use.
 All the requirements are known at the beginning of the project; hence it is easy to manage.
 It avoids overlapping of phases because each phase is completed at once.
 This model works for small projects because the requirements are understood very well.
 This model is preferred for those projects where the quality is more important as compared to the
cost of the project.
Disadvantages of the waterfall model
 This model is not good for complex and object-oriented projects.
 It is a poor model for long projects.
 The problems with this model are uncovered, until the software testing.
 The amount of risk is high.

2. Incremental Process model


 The incremental model combines the elements of waterfall model and they are applied in an
iterative fashion.
 The first increment in this model is generally a core product.
 Each increment builds the product and submits it to the customer for any suggested modifications.
 The next increment implements on the customer's suggestions and add additional requirements in
the previous increment.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

 This process is repeated until the product is finished.


For example, the word-processing software is developed using the incremental model.

Advantages of incremental model


 This model is flexible because the cost of development is low and initial product delivery is faster.
 It is easier to test and debug during the smaller iteration.
 The working software generates quickly and early during the software life cycle.
 The customers can respond to its functionalities after every increment.
Disadvantages of the incremental model
 The cost of the final product may cross the cost estimated initially.
 This model requires a very clear and complete planning.
 The planning of design is required before the whole system is broken into small increments.
 The demands of customer for the additional functionalities after every increment causes problem
during the system architecture.

3. RAD model
 RAD is a Rapid Application Development model.
 Using the RAD model, software product is developed in a short period of time.
 The initial activity starts with the communication between customer and developer.
 Planning depends upon the initial requirements and then the requirements are divided into groups.
 Planning is more important to work together on different modules.

The RAD model consists of following phases:


1. Business Modelling
 Business modelling consist of the flow of information between various functions in the project.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

 For example, what type of information is produced by every function and which are the functions
to handle that information.
 A complete business analysis should be performed to get the essential business information.
2. Data modelling
 The information in the business modelling phase is refined into the set of objects and it is essential
for the business.
 The attributes of each object are identified and define the relationship between objects.
3. Process modeling
 The data objects defined in the data modeling phase are changed to fulfil the information flow to
implement the business model.
 The process description is created for adding, modifying, deleting or retrieving a data object.
4. Application generation
 In the application generation phase, the actual system is built.
 To construct the software the automated tools are used.
5. Testing and turnover
 The prototypes are independently tested after each iteration so that the overall testing time is
reduced.
 The data flow and the interfaces between all the components are are fully tested. Hence, most of
the programming components are already tested.

Evolutionary Process Models in Software Engineering


Evolutionary Process Models
 Evolutionary models are iterative type models.
 They allow developing more complete versions of the software.
Following are the evolutionary process models.

1. The prototyping model

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

2. The spiral model


3. Concurrent development model

1. The Prototyping model


 Prototype is defined as first or preliminary form using which other forms are copied or derived.
 Prototype model is a set of general objectives for software.
 It does not identify the requirements like detailed input, output.
 It is software working model of limited functionality.
 In this model, working programs are quickly produced.

The different phases of Prototyping model are:

1. Communication
In this phase, developer and customer meet and discuss the overall objectives of the software.

2. Quick design
 Quick design is implemented when requirements are known.
 It includes only the important aspects like input and output format of the software.
 It focuses on those aspects which are visible to the user rather than the detailed plan.
 It helps to construct a prototype.
3. Modeling quick design
 This phase gives the clear idea about the development of software because the software is now
built.
 It allows the developer to better understand the exact requirements.
4. Construction of prototype
The prototype is evaluated by the customer itself.

5. Deployment, delivery, feedback


 If the user is not satisfied with current prototype then it refines according to the requirements of the
user.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

 The process of refining the prototype is repeated until all the requirements of users are met.
 When the users are satisfied with the developed prototype then the system is developed on the basis
of final prototype.
Advantages of Prototyping Model
 Prototype model need not know the detailed input, output, processes, adaptability of operating
system and full machine interaction.
 In the development process of this model users are actively involved.
 The development process is the best platform to understand the system by the user.
 Errors are detected much earlier.
 Gives quick user feedback for better solutions.
 It identifies the missing functionality easily. It also identifies the confusing or difficult functions.
Disadvantages of Prototyping Model:
 The client involvement is more and it is not always considered by the developer.
 It is a slow process because it takes more time for development.
 Many changes can disturb the rhythm of the development team.
 It is a thrown away prototype when the users are confused with it.

2. The Spiral model


 Spiral model is a risk driven process model.
 It is used for generating the software projects.
 In spiral model, an alternate solution is provided if the risk is found in the risk analysis, then
alternate solutions are suggested and implemented.
 It is a combination of prototype and sequential model or waterfall model.
 In one iteration all activities are done, for large project's the output is small.
The framework activities of the spiral model are as shown in the following figure.

Advantages of Spiral Model


 It reduces high amount of risk.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

 It is good for large and critical projects.


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

3. The concurrent development model


 The concurrent development model is called as concurrent model.
 The communication activity has completed in the first iteration and exits in the awaiting changes
state.
 The modeling activity completed its initial communication and then go to the underdevelopment
state.
 If the customer specifies the change in the requirement, then the modeling activity moves from the
under-development state into the awaiting change state.
 The concurrent process model activities moving from one state to another state.

Advantages of the concurrent development model


 This model is applicable to all types of software development processes.
 It is easy for understanding and use.
 It gives immediate feedback from testing.
 It provides an accurate picture of the current state of a project.
Disadvantages of the concurrent development model
 It needs better communication between the team members. This may not be achieved all the time.
 It requires to remember the status of the different activities.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

SPECIALIZED PROCESS MODELS.


Special process models take on many of the characteristics of one or more of the conventional models.
However, specialized models tend to be applied when a narrowly defined software engineering approach is
chosen.

COMPONENT-BASED DEVELOPMENT.
Commercial off-the-shelf (COST) software components, developed by vendors who offer them as
products, can be used when software is to be built.
These components provide targeted functionality with well-defined interfaces that enable the component to
be integrated into the software.
Consists of the following process steps
Available component-based products are researched and evaluated for the application domain in question
Component integration issues are considered
A software architecture is designed to accommodate the components
Components are integrated into the architecture
Comprehensive testing is conducted to ensure proper functionality
Relies on a robust component library
Capitalizes on software reuse, which leads to documented savings in project cost and time component-
based development can lead to reduction in development cycle time, reduction in project cost and increase
in productivity.

THE FORMAL METHODS MODEL.


The Formal Methods Model
• Encompasses a set of activities that leads to formal mathematical specification of computer software
• Enables a software engineer to specify, develop, and verify a computer-based system by applying a
rigorous, mathematical notation
• Ambiguity, incompleteness, and inconsistency can be discovered and corrected more easily through
mathematical analysis
• Offers the promise of defect-free software
• Used often when building safety-critical systems Challenges:
• Development of formal methods is currently quite time-consuming and expensive
• Because few software developers have the necessary background to apply formal methods, extensive
training is required

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

• It is difficult to use the models as a communication mechanism for technically unsophisticated


customers.

Personal and team process models


What Is Personal Software Process (PSP)?
• The Personal Software Process (PSP) shows engineers how to –
manage the quality of their projects –
make commitments they can meet –
improve estimating and planning –
reduce defects in their products
PSP emphasizes the need to record and analyze the types of errors you make, so you can develop strategies
to eliminate them.

Personal Software Process


• Because personnel costs constitute 70 percent of the cost of software development, the skills and work
habits of engineers largely determine the results of the software development process.
• Based on practices found in the CMMI, the PSP can be used by engineers as a guide to a disciplined and
structured approach to developing software. The PSP is a prerequisite for an organization planning to
introduce the TSP.

Cleanroom Software Engineering

Introduction to cleanroom software engineering


 It is an engineering approach which is used to build correctness in developed software.
 The main concept behind the cleanroom software engineering is to remove the dependency on the
costly processes.
 The cleanroom software engineering includes the quality approach of writing the code from the
beginning of the system and finally gathers into a complete a system.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

Following tasks occur in cleanroom engineering:

1. Incremental planning
 In this task, the incremental plan is developed.
 The functionality of each increment, projected size of the increment and the cleanroom
development schedule is created.
 The care is to be taken that each increment is certified and integrated in proper time according to
the plan.
2. Requirements gathering
 Requirement gathering is done using the traditional techniques like analysis, design, code, test and
debug.
 A more detailed description of the customer level requirement is developed.
3. Box structure specification
 The specification method uses box structure.
 Box structure is used to describe the functional specification.
 The box structure separate and isolate the behaviour, data and procedure in each increment.
4. Formal design
 The cleanroom design is a natural specification by using the black box structure approach.
 The specification is called as state boxes and the component level diagram called as the clear
boxes.
5. Correctness verification
 The cleanroom conducts the exact correctness verification activities on the design and then the
code.
 Verification starts with the highest-level testing box structure and then moves toward the design
detail and code.
 The first level of correctness takes place by applying a set of 'correcting questions'.
 More mathematical or formal methods are used for verification if correctness does not signify that
the specification is correct.
6. Code generation, inspection and verification
 The box structure specification is represented in a specialized language and these are translated into
the appropriate programming language.
 Use the technical reviews for the syntactic correctness of the code.
7. Statical test planning
 Analysed, planned and designed the projected usages of the software.
 The cleanroom activity is organized in parallel with specification, verification and code generation.
8. Statistical use testing
 The exhaustive testing of computer software is impossible. It is compulsory to design limited
number of test cases.
 Statistical use technique executes a set of tests derived from a statistical sample in all possible
program executions.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

 These samples are collected from the users from a targeted population.
9. Certification
 After the verification, inspection and correctness of all errors, the increments are certified and
ready for integration.
Cleanroom process model
 The modeling approach in cleanroom software engineering uses a method called box structure
specification.
 A 'box' contains the system or the aspect of the system in detail.
 The information in each box specification is sufficient to define its refinement without depending
on the implementation of other boxes.

The cleanroom process model uses three types of boxes as follows:

1. Black box
 The black box identifies the behaviour of a system.
 The system responds to specific events by applying the set of transition rules.
2. State box
 The box consists of state data or operations that are similar to the objects.
 The state box represents the history of the black box i.e the data contained in the state box must be
maintained in all transitions.
3. Clear box
 The transition function used by the state box is defined in the clear box.
 It simply states that a clear box includes the procedural design for the state box.

Software Quality Assurance


Software Quality Assurance (SQA) is simply a way to assure quality in the software. It is the set of
activities which ensure processes, procedures as well as standards suitable for the project and implemented
correctly.
Software Quality Assurance is a process which works parallel to development of a software. It focuses on
improving the process of development of software so that problems can be prevented before they become a
major issue. Software Quality Assurance is a kind of an Umbrella activity that is applied throughout the
software process.
Software Quality Assurance have:
1. A quality management approach
2. Formal technical reviews
3. Multi testing strategy
4. Effective software engineering technology
5. Measurement and reporting mechanism
Major Software Quality Assurance Activities:

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

1. SQA Management Plan:


Make a plan how you will carry out the sqa throughout the project. Think which set of software
engineering activities are the best for project. Check level of sqa team skills.
2. Set the Check Points:
SQA team should set checkpoints. Evaluate the performance of the project on the basis of collected
data on different check points.
3. Multi testing Strategy:
Do not depend on single testing approach. When you have lot of testing approaches available use
them.
4. Measure Change Impact:
The changes for making the correction of an error sometimes re introduces more errors keep the
measure of impact of change on project. Reset the new change to change check the compatibility of
this fix with whole project.
5. Manage Good Relations:
In the working environment managing the good relation with other teams involved in the project
development is mandatory. Bad relation of sqa team with programmers’ team will impact directly
and badly on project. Don’t play politics.

Benefits of Software Quality Assurance (SQA):


1. SQA produce high quality software.
2. High quality application saves time and cost.
3. SQA is beneficial for better reliability.
4. SQA is beneficial in the condition of no maintenance for long time.
5. High quality commercial software increase market share of company.
6. Improving the process of creating software.
7. Improves the quality of the software.

Disadvantage of SQA:
There are a number of disadvantages of quality assurance.
adding more resources, employing more workers to help maintain quality and so much more.

What is the Quality Attribute of a software?


The following six characteristics can define the quality of the software:
1. Functionality
Quality of software is defined as how effectively the software interacts with other components of the
system. The software must provide appropriate functions as per requirement, and these functions must be
implemented correctly.
2. Reliability
It is defined as the capability of the software to perform under specific conditions for a specified duration.
3. Usability

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

Usability of software is defined as its ease of use. Quality of the software is also identified as how easily a
user can understand the functions of the software and how much efforts are required to follow the features.
4. Efficiency
The efficiency of the software is dependent on the architecture and coding practice followed during
development.
5. Maintainability
Maintainability is also one of the significant factors to define the quality of the software. It refers to
identify the fault and fix in the software. It should be stable when the changes are made.
6. Portability
Portability of the software, defined as how easily a system adapts to changes in the specifications. Quality
of the software is also determined by the portability of the system how easy it is to install the software and
how easy it is to replace a component of the order in a given environment.

Verification and Validation


Verification and Validation is the process of investigating that a software system satisfies specifications
and standards and it fulfils the required purpose.

Barry Boehm described verification and validation as the following:

Verification: Are we building the product, right?


Validation: Are we building the right product?

Verification:
Verification is the process of checking that a software achieves its goal without any bugs. It is the process
to ensure whether the product that is developed is right or not. It verifies whether the developed product
fulfils the requirements that we have.
Verification is Static Testing.

Activities involved in verification:


1. Inspections
2. Reviews
3. Walkthroughs
4. Desk-checking

Validation:
Validation is the process of checking whether the software product is up to the mark or in other words
product has high level requirements.
It is the process of checking the validation of product i.e. it checks what we are developing is the right
product. it is validation of actual and expected product.
Validation is the Dynamic Testing.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

McCall’s Quality Factors


McCall’s software quality factors focus on following aspect of a software product.

1. Operational characteristic of software product


 Correctness –A program satisfies specification and fulfills the customer requirements.
 Reliability –A program is expected to perform the intended function with needed precision.
 Efficiency –Amount of computing resources and the code required by a program to perform its
functions.
 Integrity –The efforts are taken to handle access authorization.
 Usability –The efforts are needed to learn, operate, prepare input and interpret the output of a
program.

2. Ability to undergo change or the product transition


 Portability –Transfer the program from one system (hardware or software) environment to
another.
 Reusability –Extent to that a program or a part of a program is reused in other applications.
 Interoperability –The efforts are needed to couple one system to another.

3. Adaptability to new environment or product revision


 Maintainability –The efforts are needed to locate and fix an error in the program.
 Flexibility –The efforts are needed to modify an operational program.
 Testability –The effort needed to test a program to check that it performs its intended function.

Difference between Quality Assurance and Quality Control

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

Quality Assurance Quality Control

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

Quality assurance provides assurance that the The quality of request required In QA is achieved
quality request has been met. in QC
The goal of quality assurance is to prevent the The goal of quality control is to recognize and fix
defects. defects.
Quality assurance manages the quality
Quality control checks the quality-Validation.
Verification.
It does not include the execution of program. It requires execution of program.
Quality assurance is a proactive technique. Quality control is a reactive technique.
It is a proactive measure. It is a reactive measure.
It is a procedure to produce the deliverables i.e a
It is a procedure to check those deliverables.
product of development process.
Quality assurance is included in complete Quality testing is included in complete software
software development life cycle. testing life cycle.
It defines the standards and methodologies to meet It ensures that the standards are followed while
customer requirements. working on the product.
It is executed only after quality assurance activity
It is executed before quality control.
is completed.
Quality assurance is a less time-consuming Quality control is a more time-consuming
activity. activity.
Statistical technique applied on QA is known as Statistical technique applied on QC is known as
Statistical Process Control (SPC). Statistical Quality Control (SQC).

What is the ISO 9000 standard?


ISO 9000 is a family of internationally accepted standards that are used to measure the quality
management system (QMS) followed by an organization.

The ISO 9000 standard


The main purpose of the ISO 9000 standard is to provide a time-tested framework to help companies
establish and follow a systematic approach for managing organizational processes for rendering consistent
quality.
Before you begin implementing your quality management system, purchase a copy of ISO 9000 and ISO
9001 Standards. Read them both and make yourself familiar with their language and concepts. Although it
is written in a dense, formal language the clause titles in ISO 9001:2015 are fairly self-explanatory.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

How is ISO 9000 related to ISO 9001?


ISO 9000 is often used to refer to a family of three standards:
 ISO 9000:2005 - Fundamentals and vocabulary
 ISO 9001:2015 - Requirements
 ISO 9004:2000 - Guidelines for performance improvement
ISO 9000 explains the principles of the quality management system while ISO 9001 defines the
requirements that an organization has to meet to gain certification.
ISO 9000 contains various definitions and terminologies that are integral to developing a proper
understanding of the quality management concepts used by ISO 9001.

ISO 9001:2015 has five main sections:


 Quality Management System
 Management Responsibility
 Resource Management
 Product Realization
 Measurement Analysis and Improvement

The 2008 revision introduces a concept known as the process model. This means that you need to define
what your organization does by:
 Developing a process model of your organization’s activities
 Understanding how those processes inter-relate
 Deciding who owns these processes and ensure they are trained and competent
 Monitoring and improving the system by auditing and measuring customer satisfaction, etc.

ISO 9000 principles


The principles of ISO 9000 are integral to almost every business. They include:
 Ensuring a focus on customer satisfaction
 Developing leadership that drives the purpose of the organization
 Involving all people within the organization
 Adopting the process approach to managing activities and resources
 Applying a system-based approach to manage interrelated processes
 Continual improvement (to meet customer expectations and ISO 9001 requirements)
 Using data to drive decision making
These principles are not elements against which an organization can be directly assessed or certified but
their influence will impact upon the implementation of the requirements.

What are the Advantages of Implementing ISO 9000?


Benefits include the creation and continual improvement of effective and efficient operating process,
reducing waste, increasing productivity, better marketing, and above all else - increasing customer
satisfaction and retention.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

Commercial benefits of ISO 9000 and ISO 9001


Certification is often a prerequisite when bidding for contracts. It widens the scope of business
opportunities - enabling you to increase market share and overall competitiveness.

ISO represents an accepted minimum management standard for a well-managed organization. Whether
you operate internationally or want to expand locally, ISO approval will demonstrate your commitment to
quality.

Capability Maturity Model (CMM)

 Capability Maturity Model (CMM) is an industry standard model. This model is used to develop
and refine processes of an organization.
 This model is organized into the five levels of maturity.

 Each level ranks the organization as per standardization of process assessed in the subject area.
 The subject area can be software engineering, system engineering, project management, risk
management, system acquisition, information technology services etc.
 A maturity model is a structured collection of element and explains the characteristics of effective
processes.
 It is used as benchmark for accessing various organizations for equivalent comparison.

Following are the five levels of maturity:

i) Initial

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])


lOMoARcPSD|14219384

 The software processes at this level are ad hoc and do not give a stable environment.
 The success of project depends on the capability and braveness of the people in the organization.
 There are no actual applications required to adopt planning, monitoring or controlling the process.
 It is not possible to estimate the time and cost to develop the software.

ii) Repeatable
 The software development processes are repeatable. They are not repeated for all the projects in the
organization.
 An organization may use basic and constant project management processes to track cost, schedule
and functionality.
 The minimum process discipline is used to repeat earlier success of project with same applications.

iii) Defined
 In defined level of maturity model, common engineering and management activities are
standardized and documented.
 These standards are adapted and accepted for use on various projects.
 Test documents and plans are reviewed and accepted before testing starts.
 The groups of testers are independent from the developers.
 The test outputs are used to determine when the software is ready.

iv) Managed
 In managed level of maturity, detailed measure of the software process and product quality is
gathered.
 The software process and product are quantitatively understood and controlled.

v) Optimizing
 This level show continuous improvement from previous levels and hence it is called as Optimizing.
 The processes and new technologies are attempted, the outputs are measured and the evolutionary
and incremental changes are achieved for better quality levels.

Downloaded by Y-2462 E&TC Rajat Chaskar ([email protected])

You might also like