Handwritten Nores
Handwritten Nores
Handwritten Nores
ON
SOFTWARE ENGINEERING
CSE-6thSEM
UNIT-I
INTRODUCTION TO SOFTWARE ENGINEERING
Software: Software is
(1) Instructions (computer programs) that provide desired features, function, and performance, when
executed
(2) Data structures that enable the programs to adequately manipulate information,
(3) Documents that describe the operation and use of the programs.
Characteristics of Software:
(1) Software is developed or engineered; it is not manufactured in the classical sense.
(2) Software does not “wear out”
(3) Although the industry is moving toward component-based construction, most software continues to
be custom built.
Software Engineering:
(1) The systematic, disciplined quantifiable approach to the development, operation and maintenance of
software; that is, the application of engineering to software.
(2) The study of approaches as in (1)
The 7 broad categories of computer software present continuing challenges for software engineers:
1) System software
2) Application software
3) Engineering/scientific software
4) Embedded software
5) Product-line software
6) Web-applications
7) Artificial intelligence software.
System software: System software is a collection of programs written to service other programs.
The systems software is characterized by
heavy interaction with computer hardware
1. heavy usage by multiple users
2. concurrent operation that requires scheduling, resource sharing, and sophisticated process
management
3. complex data structures
4. multiple external interfaces
E.g. compilers, editors and file management utilities.
Application software:
Application software consists of standalone programs that solve a specific business need.
It facilitates business operations or management/technical decision making.
It is used to control business functions in real-time
E.g. point-of-sale transaction processing, real-time manufacturing process control.
Embedded software:
Embedded software resides within a product or system and is used to implement and control features and functions
for the end-user and for the system itself.
It can perform limited and esoteric functions or provide significant function and control
capability.
E.g. Digital functions in automobile, dashboard displays, braking systems etc.
Tools
Methods
Process
A quality focus
The foundation for software engineering is the process layer. Software engineering process is the glue that
holds the technology layers. Process defines a framework that must be established for effective delivery of
software engineering technology.
The software forms the basis for management control of software projects and establishes the context in
which
1.technical methods are applied,
2.work products are produced,
3. milestones are established,
4 quality is ensured,
And change is properly managed.
A PROCESS FRAMEWORK:
➢ Software process must be established for effective delivery of software engineering technology.
➢ A process framework establishes the foundation for a complete software process by identifying a
small number of framework activities that are applicable to all software projects, regardless of
their size or complexity.
➢ The process framework encompasses a set of umbrella activities that are applicable across the
entire software process.
➢ Each framework activity is populated by a set of software engineering actions
➢ Each software engineering action is represented by a number of different task sets- each a
collection of software engineering work tasks, related work products, quality assurance points, and
project milestones.
"A process defines who is doing what, when, and how to reach a certain goal."
\
THE CAPABILITY MATURITY MODEL INTEGRATION (CMMI):
The specific goals (SG) and the associated specific practices(SP) defined for project planning are
SG 1 Establish estimates
SP 1.1 Estimate the scope of the project
SP 1.2 Establish estimates of work product and task attributes
SP 1.3 Define project life cycle
SP 1.4 Determine estimates of effort and cost
SG 2 Develop a Project Plan
SP 2.1 Establish the budget and schedule
SP 2.2 Identify project risks
SP 2.3 Plan for data management
SP 2.4 Plan for needed knowledge and skills
SP 2.5 Plan stakeholder involvement
SP 2.6 Establish the project plan
SG 3 Obtain commitment to the plan
SP 3.1 Review plans that affect the project
SP 3.2 Reconcile work and resource levels
SP 3.3 Obtain plan commitment
PERSONAL AND TEAM PROCESS MODELS:
The best software process is one that is close to the people who will be doing the work.Each software
engineer would create a process that best fits his or her needs, and at the same time meets the broader needs
of the team and the organization. Alternatively, the team itself would create its own process, and at the
same time meet the narrower needs of individuals and the broader needs of the organization.
Planning: This activity isolates requirements and, base on these develops both size and resource estimates.
In addition, a defect estimate is made. All metrics are recorded on worksheets or templates. Finally,
development tasks are identified and a project schedule is created.
High level design: External specifications for each component to be constructed are developed and a
component design is created. Prototypes are built when uncertainty exists. All issues are recorded and
tracked.
High level design review: Formal verification methods are applied to uncover errors in the design. Metrics
are maintained for all important tasks and work results.
Development: The component level design is refined and reviewed. Code is generated, reviewed,
compiled, and tested. Metrics are maintained for all important task and work results.
Postmortem: Using the measures and metrics collected the effectiveness of the process is determined.
Measures and metrics should provide guidance for modifying the process to improve its effectiveness.
PSP stresses the need for each software engineer to identify errors early and, as important, to understand
the types of errors that he is likely to make.
Team software process (TSP): The goal of TSP is to build a “self-directed project team that organizes
itself to produce high-quality software. The following are the objectives for TSP:
• Build self-directed teams that plan and track their work, establish goals, and own their processes
and plans. These can be pure software teams or integrated product teams(IPT) of 3 to about 20
engineers.
• Show managers how to coach and motivate their teams and how to help them sustain peak
performance.
• Accelerate software process improvement by making CMM level 5 behavior normal and expected.
• Provide improvement guidance to high-maturity organizations.
• Facilitate university teaching of industrial-grade team skills.
A self-directed team defines
- roles and responsibilities for each team member
- tracks quantitative project data
- identifies a team process that is appropriate for the project
- a strategy for implementing the process
- defines local standards that are applicable to the teams software engineering work;
- continually assesses risk and reacts to it
- Tracks, manages, and reports project status.
-
TSP defines the following framework activities: launch, high-level design, implementation, integration and
test, and postmortem.
TSP makes use of a wide variety of scripts, forms, and standards that serve to guide team members in their
work.
Scripts define specific process activities and other more detailed work functions that are part of the team
process.
Each project is “launched” using a sequence of tasks.
A prescriptive process model populates a process framework with explicit task sets for software
engineering actions.
Advantage:
It can serve as a useful process model in situations where requirements are fixed and work is to
proceed to complete in a linear manner.
The problems that are sometimes encountered when the waterfall model is applied are:
1. Real projects rarely follow the sequential flow that the model proposes. Although the linear model
can accommodate iteration, it does so indirectly. As a result, changes can cause confusion as the
project team proceeds.
2. It is often difficult for the customer to state all requirements explicitly. The waterfall model
requires this and has difficulty accommodating the natural uncertainty that exist at the beginning
of many projects.
3. The customer must have patience. A working version of the programs will not be available until
late in the project time-span. If a major blunder is undetected then it can be disastrous until the
program is reviewed.
Co n st ru ct io n
com ponent reuse
Team # 2 autom at ic code
Communicat io n generation
test ing
Mo d eling
business m odeling
dat a m odeling
process m odeling
Planning
Co nst ruct io n De ployme nt
Team # 1 com ponent reuse
int egrat ion
aut om at ic code
generat ion t
deliv ery
Mode ling est ing feedback
business modeling
dat a modeling
process modeling
6 0 - 9 0 days
Evolutionary process models produce with each iteration produce an increasingly more complete version of
the software with every iteration.
Evolutionary models are iterative. They are characterized in a manner that enables software engineers to
develop increasingly more complete versions of the software.
PROTOTYPING:
Prototyping is more commonly used as a technique that can be implemented within the context of anyone
of the process model.
The prototyping paradigm begins with communication. The software engineer and customer meet and
define the overall objectives for the software, identify whatever requirements are known, and outline areas
where further definition is mandatory.
Prototyping iteration is planned quickly and modeling occurs. The quick design leads to the construction of
a prototype. The prototype is deployed and then evaluated by the customer/user.
Iteration occurs as the prototype is tuned to satisfy the needs of the customer, while at the same time
enabling the developer to better understand what needs to be done.
Advantages:
The prototyping paradigm assists the software engineer and the customer to better understand what is
to be built when requirements are fuzzy.
The prototype serves as a mechanism for identifying software requirements. If a working prototype is
built, the developer attempts to make use of existing program fragments or applies tools.
• The spiral model, originally proposed by Boehm, is an evolutionary software process model that
couples the iterative nature of prototyping with the controlled and systematic aspects of the
waterfall model.
• The spiral model can be adapted to apply throughout the entire life cycle of an application, from
concept development to maintenance.
• Using the spiral model, software is developed in a series of evolutionary releases. During early
iterations, the release might be a paper model or prototype. During later iterations, increasingly
morecomplete versions of the engineered system are
planning
estimation
scheduling
risk analysis
communication
modeling
analysis
design
start
deployment
construction
delivery
code
feedback test
produced.
• Anchor point milestones- a combination of work products and conditions that are attained along
the path of the spiral- are noted for each evolutionary pass.
• The first circuit around the spiral might result in the development of product specification;
subsequent passes around the spiral might be used to develop a prototype and then progressively
more sophisticated versions of the software.
• Each pass through the planning region results in adjustments to the project plan. Cost and schedule
are adjusted based on feedback derived from the customer after delivery. In addition, the project
manager adjusts the planned number of iterations required to complete the software.
• It maintains the systematic stepwise approach suggested by the classic life cycle but incorporates it
into an iterative framework that more realistically reflects the real world.
➢ The first circuit around the spiral might represent a “concept development project” which starts
at the core of the spiral and continues for multiple iterations until concept development is
complete.
➢ If the concept is to be developed into an actual product, the process proceeds outward on the spiral
and a “new product development project” commences.
➢ Later, a circuit around the spiral might be used to represent a “product enhancement project.” In
essence, the spiral, when characterized in this way, remains operative until the software is retired.
Advantages:
It provides the potential for rapid development of increasingly more complete versions of the software.
The spiral model is a realistic approach to the development of large-scale systems and software. The spiral
model uses prototyping as a risk reduction mechanism but, more importantly enables the developer to apply
the prototyping approach at any stage in the evolution of the product.
Draw Backs:
The spiral model is not a panacea. It may be difficult to convince customers that the evolutionary approach
is controllable. It demands considerable risk assessment expertise and relies on this expertise for success. If
a major risk is not uncovered and managed, problems will undoubtedly occur.
.
UNIT-II
SOFTWARE REQUIREMENTS
Types of requirement:
• User requirements
o Statements in natural language plus diagrams of the services the system provides and its
operational constraints. Written for customers.
• System requirements
o A structured document setting out detailed descriptions of the system’s functions,
services and operational constraints. Defines what should be implemented so may be part
of a contract between client and contractor.
FUNCTIONAL REQUIREMENTS:
• Describe functionality or system services.
• Depend on the type of software, expected users and the type of system where the software is
used.
• Functional user requirements may be high-level statements of what the system should do but
functional system requirements should describe the system services in detail.
The functional requirements for The LIBSYS system:
• A library system that provides a single interface to a number of databases of articles in different
libraries.
• Users can search for, download and print these articles for personal study.
Examples of functional requirements
• The user shall be able to search either all of the initial set of databases or select a subset from it.
• The system shall provide appropriate viewers for the user to read documents in the document
store.
• Every order shall be allocated a unique identifier (ORDER_ID) which the user shall be able to
copy to the account’s permanent storage area.
Requirements imprecision
• Problems arise when requirements are not precisely stated.
• Ambiguous requirements may be interpreted in different ways by developers and users.
• Consider the term ‘appropriate viewers’
o User intention - special purpose viewer for each different document type;
o Developer interpretation - Provide a text viewer that shows the contents of the document.
Requirements completeness and consistency:
In principle, requirements should be both complete and consistent.
Complete
• They should include descriptions of all facilities required.
Consistent
• There should be no conflicts or contradictions in the descriptions of the system facilities.
In practice, it is impossible to produce a complete and consistent requirements document.
NON-FUNCTIONAL REQUIREMENTS
• These define system properties and constraints e.g. reliability, response time and storage
requirements. Constraints are I/O device capability, system representations, etc.
• Process requirements may also be specified mandating a particular CASE system, programming
language or development method.
• Non-functional requirements may be more critical than functional requirements. If these are not
met, the system is useless.
Non-functional requirement types:
Non-functional requirements :
Product requirements
• Requirements which specify that the delivered product must behave in a particular way
e.g. execution speed, reliability, etc.
• Eg:The user interface for LIBSYS shall be implemented as simple HTML without frames
or Java applets.
USER REQUIREMENTS
• Should describe functional and non-functional requirements in such a way that they are
understandable by system users who don’t have detailed technical knowledge.
• User requirements are defined using natural language, tables and diagrams as these can be
understood by all users.
This spiral model accommodates approaches to development in which the requirements are developed to
different levels of detail. The number of iterations around the spiral can vary, so the spiral can be exited
after some or all of the user requirements have been elicited.
Some people consider requirements engineering to be the process of applying a structured analysis method
such as object-oriented analysis. This involves analyzing the system and developing a set of graphical
system models, such as use-case models, that then serve as a system specification. The set of models
describes the behavior of the system and are annotated with additional information describing, for example,
its required performance or reliability.
Spiral model of requirements engineering processes
1) FEASIBILITY STUDIES
A feasibility study decides whether or not the proposed system is worthwhile. The input to the
feasibility study is a set of preliminary business requirements, an outline description of the system and how
the system is intended to support business processes. The results of the feasibility study should be a report
that recommends whether or not it worth carrying on with the requirements engineering and system
development process.
• A short focused study that checks
– If the system contributes to organisational objectives;
– If the system can be engineered using current technology and within budget;
– If the system can be integrated with other systems that are used.
Requirements checking:
• Validity: Does the system provide the functions which best support the customer’s needs?
• Consistency: Are there any requirements conflicts?
• Completeness: Are all functions required by the customer included?
• Realism: Can the requirements be implemented given available budget and technology
• Verifiability: Can the requirements be checked?
Requirements reviews:
• Regular reviews should be held while the requirements definition is being formulated.
• Both client and contractor staff should be involved in reviews.
• Reviews may be formal (with completed documents) or informal. Good communications between
developers, customers and users can resolve problems at an early stage.
Review checks:
• Verifiability: Is the requirement realistically testable?
• Comprehensibility: Is the requirement properly understood?
• Traceability: Is the origin of the requirement clearly stated?
• Adaptability: Can the requirement be changed without a large impact on other requirements?
4) REQUIREMENTS MANAGEMENT
• Requirements management is the process of managing changing requirements during the
requirements engineering process and system development.
• Requirements are inevitably incomplete and inconsistent
– New requirements emerge during the process as business needs change and a better
understanding of the system is developed;
– Different viewpoints have different requirements and these are often contradictory.
Requirements change
• The priority of requirements from different viewpoints changes during the development process.
• System customers may specify requirements from a business perspective that conflict with end-user
requirements.
• The business and technical environment of the system changes during its development.
Requirements evolution:
Traceability:
Traceability is concerned with the relationships between requirements, their sources and the system design
• Source traceability
– Links from requirements to stakeholders who proposed these requirements;
• Requirements traceability
– Links between dependent requirements;
• Design traceability - Links from the requirements to the design;
CASE tool support:
• Requirements storage
– Requirements should be managed in a secure, managed data store.
• Change management
– The process of change management is a workflow process whose stages can be defined
and information flow between these stages partially automated.
• Traceability management
– Automated retrieval of the links between requirements.
Change management:
SYSTEM MODELLING
•System modelling helps the analyst to understand the functionality of the system and models are
used to communicate with customers.
• Different models present the system from different perspectives
o Behavioural perspective showing the behaviour of the system;
o Structural perspective showing the system or data architecture.
Model types
• Data processing model showing how the data is processed at different stages.
• Composition model showing how entities are composed of other entities.
• Architectural model showing principal sub-systems.
• Classification model showing how entities have common characteristics.
• Stimulus/response model showing the system’s reaction to events.
1) CONTEXT MODELS:
• Context models are used to illustrate the operational context of a system - they show what lies
outside the system boundaries.
• Social and organisational concerns may affect the decision on where to position system
boundaries.
• Architectural models show the system and its relationship with other systems.
2) BEHAVIOURAL MODELS:
• Behavioural models are used to describe the overall behaviour of a system.
• Two types of behavioural model are:
o Data processing models that show how data is processed as it moves through the system;
o State machine models that show the systems response to events.
• These models show different perspectives so both of them are required to describe the system’s
behaviour.
Data-processing models:
• Data flow diagrams (DFDs) may be used to model the system’s data processing.
• These show the processing steps as data flows through a system.
• DFDs are an intrinsic part of many analysis methods.
• Simple and intuitive notation that customers can understand.
• Show end-to-end processing of data.
Data dictionaries
• Data dictionaries are lists of all of the names used in the system models. Descriptions of the
entities, relationships and attributes are also included.
• Advantages
o Support name management and avoid duplication;
o Store of organisational knowledge linking analysis, design and implementation;
• Many CASE workbenches support data dictionaries.
3) OBJECT MODELS:
• Object models describe the system in terms of object classes and their associations.
• An object class is an abstraction over a set of objects with common attributes and the services
(operations) provided by each object.
• Various object models may be produced
o Inheritance models;
o Aggregation models;
o Interaction models.
• Natural ways of reflecting the real-world entities manipulated by the system
• More abstract entities are more difficult to model using this approach
• Object class identification is recognised as a difficult process requiring a deep understanding of
the application domain
• Object classes reflecting domain entities are reusable across systems
Inheritance models:
• Organise the domain object classes into a hierarchy.
• Classes at the top of the hierarchy reflect the common features of all classes.
• Object classes inherit their attributes and services from one or more super-classes. these may then
be specialised as necessary.
• Class hierarchy design can be a difficult process if duplication in different branches is to be
avoided.
Condition Testing
• Exercise the logical conditions contained in a program module
• Focuses on testing each condition in the program to ensure that it does contain errors
• Simple condition
Loop Testing
• Focuses on the validity of loop constructs
• Four categories can be defined
1. Simple loops
2. Nested loops
3. Concatenated loops
4. Unstructured loop.
Software Quality
• Conformance to explicitly stated functional and performance requirements, explicitly documented
development standards, and implicit characteristics that are expected of all professionally
developed software.
• Factors that affect software quality can be categorized in two broad groups:
1. Factors that can be directly measured (e.g. defects uncovered during testing)
2. Factors that can be measured only indirectly (e.g. usability or maintainability)
• McCall’s quality factors
1. Product operation
a. Correctness
b. Reliability
c. Efficiency
d. Integrity
e. Usability
2. Product Revision
a. Maintainability
b. Flexibility
c. Testability
3. Product Transition
a. Portability
b. Reusability
c. Interoperability
ISO 9126 Quality Factors
1.Functionality
2. Reliability
3.Usability
4.Efficiency
5.Maintainability
6.Portability
Product metrics
• Product metrics for computer software helps us to assess quality.
• Measure
-- Provides a quantitative indication of the extent, amount, dimension, capacity or size of some attribute of
a product or process
• Metric(IEEE 93 definition)
-- A quantitative measure of the degree to which a system, component or process possess a given attribute
• Indicator
-- A metric or a combination of metrics that provide insight into the software process, a software project or
a product itself
Product Metrics for analysis,Design,Test and maintenance
• Product metrics for the Analysis model
❖ Function point Metric
▪ First proposed by Albrecht
▪ Measures the functionality delivered by the system
▪ FP computed from the following parameters
1) Number of external inputs(EIS)
2) Number external outputs(EOS)
3) Number of external Inquiries(EQS)
4) Number of Internal Logical Files(ILF)
5) Number of external interface files(EIFS)
Each parameter is classified as simple, average or complex and weights are assigned as follows
Count Simple avg Complex
3 4 6
4 5 7
3 4 6
7 10 15
5 7 10
1) SOFTWARE MEASUREMENT
Software measurement can be categorized in two ways.
(1) Direct measures of the software engineering process include cost and effort applied. Direct
measures of the product include lines of code (LOC) produced, execution speed, memory size, and
defects reported over some set period of time.
Indirect measures of the product include functionality, quality, complexity, efficiency, reliability,
maintainability, and many other "–abilities"
Size-Oriented Metrics
Size-oriented software metrics are derived by normalizing quality and/or productivity measures by
considering the size of the software that has been produced.
To develop metrics that can be assimilated with similar metrics from other projects, we choose lines of
code as our normalization value. From the rudimentary data contained in the table, a set of simple size-
oriented metrics can be developed for each project:
• Errors per KLOC (thousand lines of code).
• Defects per KLOC.
.
.
Function-Oriented Metrics
Function-oriented software metrics use a measure of the functionality delivered by the application
as a normalization value. Since ‘functionality’ cannot be measured directly, it must be derived indirectly
using other direct measures. Function-oriented metrics were first proposed by Albrecht, who suggested a
measure called the function point. Function points are derived using an empirical relationship based on
countable (direct) measures of software's information domain and assessments of software complexity.
2) METRICS FOR SOFTWARE QUALITY
The overriding goal of software engineering is to produce a high-quality system, application, or
product within a timeframe that satisfies a market need. To achieve this goal, software engineers must
apply effective methods coupled with modern tools within the context of a mature software process.
Measuring Quality
The measures of software quality are correctness, maintainability, integrity, and usability. These measures
will provide useful indicators for the project team.
➢ Correctness. Correctness is the degree to which the software performs its required function. The
most common measure for correctness is defects per KLOC, where a defect is defined as a verified
lack of conformance to requirements.
➢ Maintainability. Maintainability is the ease with which a program can be corrected if an error is
encountered, adapted if its environment changes, or enhanced if the customer desires a change in
requirements. A simple time-oriented metric is mean-time-tochange (MTTC), the time it takes to
analyze the change request, design an appropriate modification, implement the change, test it, and
distribute the change to all users.
➢ Integrity. Attacks can be made on all three components of software: programs, data, and
documents.
QUALITY MANAGEMENT
1) QUALITY CONCEPTS:
Quality management encompasses
(1) a quality management approach,
(2) effective software engineering technology (methods and tools),
(3) formal technical reviews that are applied throughout the software process,
(4) a multitiered testing strategy,
(5) control of software documentation and the changes made to it,
(6) a procedure to ensure compliance with software development standards (when applicable), and
(7) measurement and reporting mechanisms.
Variation control is the heart of quality control.
Quality
✓ The American Heritage Dictionary defines quality as “a characteristic or attribute of something.”
✓ Quality of design refers to the characteristics that designers specify for an item.
✓ Quality of conformance is the degree to which the design specifications are followed during
manufacturing.
In software development, quality of design encompasses requirements, specifications, and the design of the
system. Quality of conformance is an issue focused primarily on implementation. If the implementation
follows the design and the resulting system meets its requirements and performance goals, conformance
quality is high.
Robert Glass argues that a more “intuitive” relationship is in order:
User satisfaction = compliant product + good quality + delivery within budget and schedule
Quality Control
Quality control involves the series of inspections, reviews, and tests used throughout the software process
to ensure each work product meets the requirements placed upon it.
A key concept of quality control is that all work products have defined, measurable specifications to which
we may compare the output of each process. The feedback loop is essential to minimize the defects
produced.
Quality Assurance
Quality assurance consists of the auditing and reporting functions that assess the effectiveness and
completeness of quality control activities. The goal of quality assurance is to provide management with the
data necessary to be informed about product quality, thereby gaining insight and confidence that product
quality is meeting its goals.
Cost of Quality
The cost of quality includes all costs incurred in the pursuit of quality or in performing quality-related
activities.
Quality costs may be divided into costs associated with prevention, appraisal, and failure.
Prevention costs include
• quality planning
• formal technical reviews
• test equipment
• training
Appraisal costs include activities to gain insight into product condition the “first time through” each
process. Examples of appraisal costs include
• in-process and interprocess inspection
• equipment calibration and maintenance
• testing
Failure costs are those that would disappear if no defects appeared before shipping a product to customers.
Failure costs may be subdivided into internal failure costs and external failure costs.
Internal failure costs are incurred when we detect a defect in our product prior to shipment. Internal failure
costs include
• rework
• repair
• failure mode analysis
External failure costs are associated with defects found after the product has been shipped to the customer.
Examples of external failure costs are
• complaint resolution
• product return and replacement
• help line support
• warranty work
SQA Activities
Software quality assurance is composed of a variety of tasks associated with two different constituencies—
✓ the software engineers who do technical work and
✓ an SQA group that has responsibility for quality assurance planning, oversight, record keeping,
analysis, and reporting.
The Software Engineering Institute recommends a set of SQA activities that address quality assurance
planning, oversight, record keeping, analysis, and reporting. These activities are performed (or facilitated)
by an independent SQA group that conducts the following activities.
Prepares an SQA plan for a project. The plan is developed during project planning and is reviewed by all
interested parties. Quality assurance activities performed by the software engineering team and the SQA
group are governed by the plan. The plan identifies
✓ evaluations to be performed
✓ audits and reviews to be performed
✓ standards that are applicable to the project
✓ procedures for error reporting and tracking
✓ documents to be produced by the SQA group
✓ amount of feedback provided to the software project team
3) SOFTWARE REVIEWS
Software reviews are a "filter" for the software engineering process. That is, reviews are applied at various
points during software development and serve to uncover errors and defects that can then be removed.
Software reviews "purify" the software engineering activities that we have called analysis, design, and
coding.
Many different types of reviews can be conducted as part of software engineering. Each has its
place. An informal meeting around the coffee machine is a form of review, if technical problems are
discussed. A formal presentation of software design to an audience of customers, management, and
technical staff is also a form of review
A formal technical review is the most effective filter from a quality assurance standpoint. Conducted by
software engineers (and others) for software engineers, the FTR is an effective means for improving
software quality.
Review Guidelines
The following represents a minimum set of guidelines for formal technical reviews:
1. Review the product, not the producer. An FTR involves people and egos. Conducted properly, the
FTR should leave all participants with a warm feeling of accomplishment.
2. Set an agenda and maintain it. An FTR must be kept on track and on schedule. The review leader
is chartered with the responsibility for maintaining the meeting schedule and should not be afraid
to nudge people when drift sets in.
3. Limit debate and rebuttal. When an issue is raised by a reviewer, there may not be universal
agreement on its impact.
4. Enunciate problem areas, but don't attempt to solve every problem noted. A review is not a
problem-solving session. The solution of a problem can often be accomplished by the producer
alone or with the help of only one other individual. Problem solving should be postponed until
after the review meeting.
5. Take written notes. It is sometimes a good idea for the recorder to make notes on a wall board, so
that wording and priorities can be assessed by other reviewers as information is recorded.
6. Limit the number of participants and insist upon advance preparation. Keep the number of
people involved to the necessary minimum.
7. Develop a checklist for each product that is likely to be reviewed. A checklist helps the review
leader to structure the FTR meeting and helps each reviewer to focus on important issues.
Checklists should be developed for analysis, design, code, and even test documents.
8. Allocate resources and schedule time for FTRs. For reviews to be effective, they should be
scheduled as a task during the software engineering process
9. Conduct meaningful training for all reviewers. To be effective all review participants should
receive some formal training.
10. Review your early reviews. Debriefing can be beneficial in uncovering problems with the review
process itself.
SDRs attempt to quantify those work products that are primary targets for full FTRs.To accomplish this the
following steps are suggested…
• Inspect a fraction ai of each software work product, i. Record the number of faults, fi found within
ai.
• Develop a gross estimate of the number of faults within work product i by multiplying fi by 1/ai.
• Sort the work products in descending order according to the gross estimate of the number of faults
in each.
• Focus available review resources on those work products that have the highest estimated number
of faults.
The fraction of the work product that is sampled must
• Be representative of the work product as a whole and
• Large enough to be meaningful to the reviewer(s) who does the sampling.
SOFTWARE RELIABILITY
Software reliability is defined in statistical terms as "the probability of failure-free operation of a
computer program in a specified environment for a specified time".
Software Safety
Software safety is a software quality assurance activity that focuses on the identification and
assessment of potential hazards that may affect software negatively and cause an entire system to fail. If
hazards can be identified early in the software engineering process, software design features can be
specified that will either eliminate or control potential hazards.
SOFTWARE ENGINEERING IMPORTANT QUESTIONS
Q1. Explain SDLC waterfall model? Also list its advantages and disadvantages?
Q9. Write short note on (a) CASE and its scope. (b) Rational software suite?
Q12What is software crisis? Write its causes? Also discuss the solutions to overcome
software crisis?
Q16.What are the different software lifecycles models? Discuss the need of these models?
Q26.What is debugging?
ANSWERS
Q25.
Programming
Not Required Required
Knowledge
Implementation
Not Required Required
Knowledge
CASE environment:
Although individual CASE tools square measure helpful, the true power of a toolset is often
completed only this set of tools square measure integrated into a typical framework or
setting. CASE tools square measure characterized by the stage or stages of package
development life cycle that they focus on. Since totally different tools covering different
stages share common data, it’s needed that they integrate through some central repository
to possess an even read of data related to the package development artifacts. This central
repository is sometimes information lexicon containing the definition of all composite and
elementary data things.
Q6. The Software Engineering Institute (SEI) Capability Maturity Model (CMM) specifies an
increasing series of levels of a software development organization. The higher the level, the
better the software development process, hence reaching each level is an expensive and
time-consuming process.
What is CMM ?