Lecture
Lecture
The manager who pays little attention to the process runs the risk of
inserting competent technical methods and tools into a vacuum.
The manager who embarks without a solid project plan jeopardizes the
success of the product.
1.1 The People :
The cultivation of motivated, highly skilled software people has been
discussed since the 1960s.
In fact, the “people factor” is so important that the Software Engineering
Institute has developed a people management capability maturity model
(PM-CMM), “to enhance the readiness of software organizations to
undertake increasingly complex applications by helping to attract, grow,
motivate, deploy, and retain the talent needed to improve their software
development capability”.
The people management maturity model defines the following key
practice areas for software people: recruiting, selection, performance
management, training, compensation, career development, organization
and work design, and team/culture development.
Organizations that achieve high levels of maturity in the people
management area have a higher likelihood of implementing effective
software engineering practices.
The PM-CMM is a companion to the software capability maturity model
that guides organizations in the creation of a mature software process.
1.1.1 THE PEOPLE AS PROJECT PLAYERS
(STAKEHOLDERS) :
The Software Process is populated by People as Players or otherwise
called as Stakeholders. Who can be categories into one of the Five
constituencies:-
1. Senior managers who define the business issues that often have
significant influence on the project.
2. Project (technical) managers who must plan, motivate, organize,
and control the practitioners who do software work.
3. Practitioners who deliver the technical skills that are necessary to
engineer a product or application.
4. Customers who specify the requirements for the software to be
engineered and other stakeholders who have a peripheral interest in
the outcome.
5. End-users who interact with the software once it is released for
production use.
1.1.2 Team Leaders :
Project management is a people-intensive activity, and for this reason,
competent practitioners often make poor team leaders. They simply don’t
have the right mix of people skills. Individuals just fall into a project
manager role and become accidental project managers. In an excellent book
of technical leadership, Jerry Weinberg suggests a MOI model of leadership:
Organization. The ability to mold existing processes (or invent new ones)
that will enable the initial concept to be translated into a final product.
However, the organization of the people directly involved in a new software project is
within the project manager's purview.
The “best” team structure depends on the management style of your organization, the
number of people who will populate the team and their skill levels, and the overall problem
difficulty.
There are seven project factors that should be considered when planning the structure of
software engineering teams:
1. A closed paradigm structures a team along a traditional hierarchy of authority. Such teams can
work well when producing software that is quite similar to past efforts, but they will be less likely to
be innovative when working within the closed paradigm.
2. The random paradigm structures a team loosely and depends on individual initiative of the
team members. When innovation or technological breakthrough is required, teams following the
random paradigm will excel. But such teams may struggle when “orderly performance” is required.
3. The open paradigm attempts to structure a team in a manner that achieves some of the
controls associated with the closed paradigm but also much of the innovation that occurs when using
the random paradigm. Work is performed collaboratively, with heavy communication and
consensus-based decision making the trademarks of open paradigm teams. Open paradigm team
structures are well suited to the solution of complex problems but may not perform as efficiently as
other teams.
There are five factors that “foster a potentially toxic team Environment”:
1. A frenzied work atmosphere in which team members waste energy and lose focus on
the objectives of the work to be performed.
2. High frustration caused by personal, business, or technological factors that causes
friction among team members.
3. “Fragmented or poorly coordinated procedures” or a poorly defined or improperly
chosen process model that becomes a roadblock to accomplishment.
4. Unclear definition of roles.
5. “Continuous and repeated exposure to failure”.
1.1.4 Agile Teams :
Agile software development is a group of software development methods based
on iterative and incremental development, where requirements and solutions
evolve through collaboration between self-organizing, cross-functional teams. It
promotes adaptive planning, evolutionary development and delivery and
encourages rapid and flexible response to change. It is a conceptual framework
that promotes foreseen interactions throughout the development cycle.
• As the Project proceeds, the Agile Team self organizes to focus individual
competency in a way that is most beneficial to the project at a given
point in time.
1.1.5 Coordination and Communication Issues :
There are many reasons that software projects get into trouble. The
scale of many development efforts is large, leading to complexity, confusion,
and significant difficulties in coordinating team members. Uncertainty is
common, resulting in a continuing stream of changes that ratchets the project
team. Interoperability has become a key characteristic of many systems. New
software must communicate with existing software and conform to predefined
constraints imposed by the system or product.
Context. How does the software to be built into a larger system, product, or
business context and what constraints are imposed as a result of the context?
2.1. Software Scope (Continued)
Information objectives. What customer-visible data objects are produced as
output from the software? What data objects are required for input?
Function and performance. What function does the software perform to
transform input data into output? Are any special performance characteristics to
be addressed?
2.2 Problem Decomposition
Problem decomposition, sometimes called partitioning or problem elaboration,
is an activity that sits at the core of software requirements analysis.
During the scoping activity no attempt is made to fully decompose the
problem.
Rather, decomposition is applied in two major areas: (1) the functionality that
must be delivered and (2) the process that will be used to deliver it.
A complex problem is partitioned into smaller problems that are more
manageable. This is the strategy that applies as project planning begins.
Software functions, described in the statement of scope, are evaluated and
refined to provide more detail prior to the beginning of estimation.
As an example, consider a project that will build a new word-processing
product. Among the unique features of the product are continuous voice as well
as keyboard input, extremely sophisticated “automatic copy edit” features, page
layout capability, automatic indexing and table of contents, and others. The
project manager must first establish a statement of scope that bounds these
features (as well as other more mundane functions such as editing, file
management, document production, and the like).
For example, will continuous voice input require that the product be “trained”
by the user?
Specifically, what capabilities will the copy edit feature provide?
Just how sophisticated will the page layout capability be?
As the statement of scope evolves, a first level of partitioning naturally
occurs. The project team learns that the marketing department has talked with
potential customers and found that the following functions should be part of
automatic copy editing: (1) spell checking, (2) sentence grammar checking,
(3) reference checking for large documents (e.g., Is a reference to a bibliography
entry found in the list of entries in the bibliography?), and (4) section and
chapter reference validation for large documents. Each of these features
represents a sub function to be implemented in software. Each can be further
redefined if the decomposition will make planning easier.
3. THE PROCESS
The generic phases that characterize the software process— definition,
development, and support—are applicable to all software.
The problem is to select the process model that is appropriate for the
software to be engineered by a project team.
The project manager must decide which process model is most appropriate
for (1) the customers who have requested the product and the people who will
do the work, (2) the characteristics of the product itself, and (3) the project
environment in which the software team works.
When a process model has been selected, the team then defines a preliminary
project plan based on the set of common process framework activities.
Once the preliminary plan is established, process decomposition begins.
That is, a complete plan, reflecting the work tasks required to populate the
framework activities must be created.
3.1 Melding the Product and the Process
Project planning begins with the melding of the product and the process.
Each function to be engineered by the software team must pass through the set
of framework activities that have been defined for a software organization.
Assume that the organization has adopted the following set of framework
activities :
• Customer communication—tasks required to establish effective requirements
elicitation between developer and customer.
• Planning—tasks required to define resources, timelines, and other project
related information.
• Risk analysis—tasks required to assess both technical and management risks.
• Engineering—tasks required to build one or more representations of the
application.
• Construction and release—tasks required to construct, test, install, and provide
user support (e.g., documentation and training).
• Customer evaluation—tasks required to obtain customer feedback based on
evaluation of the software representations created during the engineering activity
and implemented during the construction activity.
3.1 Melding the Product and the Process(Continued)
The team members who work on a product function will apply each of the framework activities to it.
In essence, a matrix similar to the one shown in Figure is created
Each major product function (the figure notes functions for the word-processing software discussed
earlier) is listed in the left- hand column.
Framework activities are listed in the top row. Software engineering work tasks (for each framework
activity) would be entered in the following row.
The job of the project manager (and other team members) is to estimate resource requirements for
each matrix cell, start and end dates for the tasks associated with each cell, and work products to be
produced as a consequence of each task.
4.2 Process Decomposition
Early design stage model : Used once requirements have been stabilized and
basic software architecture has been established.
Post architecture stage model : Used during the construction of the software.
Like all estimation models for software, the COCOMO II models requires
sizing information. Three different sizing options are available as part of the
model hierarchy : object points, function points and lines of source codes.
Each object instance (e.g., a screen or report) is classified into one of three
complexity levels (i.e., simple, medium, or difficult) using criteria suggested
by Boehm.
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
1.2.Quality control
Variation control may be equated to quality control. But how do we achieve quality control? Quality
control is the series of inspections reviews, and tests used throughout the development cycle to ensure
that each work product meets the requirements placed upon it, Quality control includes a feedback loop
to the process that created the work product. The combination of measurement and feedback allows us
to
tune the process when the work products created fail to meet their specifications.
This approach views quality control as part of the manufacturing process. Quality
control activities may be fully automated, entirely manual or a combination of
automated tools and human interaction. A key concept of quality controls is that
all work products have defined and measurable specifications. To which we may
compare the outputs of each process. The feedback loop is essential to minimize
the defects produced.
1.3. Quality Assurance
Quality assurance consists of the auditing and reporting functions of
management. 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. Of course, if the data
provided through quality assurance identify problems, it is management’s
responsibility to address the problems and apply the necessary resources to
resolve quality issues .
1.4. Cost of Quality
Cost of quality includes all costs incurred in the pursuit of quality or in
performing quality related activities. Cost of quality studies are conducted to
provide a baseline for the current. Cost of quality, to identify opportunities for
reducing the cost of quality and ;to provide a normalized basis of comparison.
The basis of normalization is almost always dollars. Once we have normalized
quality costs on a dollar basis, we have the necessary data to evaluate where the
opportunities lie to improve our processes. Furthermore, we can evaluate the
affect of changes in dollar-based terms. 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 “first time
through” each process. Examples of appraisal costs include:
• In-process and inter process inspection
• Equipment calibration and maintenance
• Testing
Failure costs are costs 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 the costs incurred when we detect an error in our
product prior to shipment . Internal failure costs include:
• Rework
• Repair
• Failure mode analysis
External failure costs are the costs associated with defects found after the product
has been shipped to the customer. Examples of external failure s costs are:
• Complaint resolution
• Product return and replacement
• Help line support
• Warranty work
2.Software Quality Assurance
Even the most jaded software developers will agree that high-quality software is
an important goal. But how do we define quality? A wag once said , “Every
program does something right, it just may not be the thing that we want it to do”
There have been many definitions of software quality proposed in the literature.
For our purposes, software quality is defined as:
Conformance to explicitly stated functional and performance requirements,
explicitly documented development standards and implicit characteristics that are
expected of all professionally developed software.
There is little question that the above definition could be modified or extended .
If fact a definitive definition of software quality could be debated endlessly. For
the purposes of this book, the above definition serves to emphasize three
important points:
1. Software requirements are the foundation from which quality is measured.
Lack of conformance to requirements is lack of quality.
2. Specified standards define a set of development criteria that guide the manner
in which software is engineered. If the criteria are not followed, lack of quality
will almost surely result.
3. There is a set of implicit requirements that often goes unmentioned (e.g., the
desire for good maintainability) . If software conforms to its explicit
requirements but fails to meet implicit requirements, software quality is suspect.
2.1.Background issues
Quality assurance is an essential activity for any business that produces products
to be used by others. Prior to the twentieth century, quality assurance was the
sole responsibility of the craftsperson who built a product. The first formal
quality assurance and control function was introduced at Bell Labs in 1916 and
spread rapidly throughout the manufacturing world. During the early days of
computing (the 1950s ) , quality was the sole responsibility of the programmer.
Standards for quality assurance for software were introduced in military contract
software development
during the 1970s and have spread rapidly into software development in the
commercial world [IEE94] Extending the definition presented earlier, software
quality assurance is a “planned and systematic pattern of actions” [SCH87] that
are required to ensure quality in software Today the implication is that many
different constituencies in an organization have software quality assurance
responsibility-software engineers, project managers customers, salespeople, and
the individuals who serve within an SQA group.
The SQA group serves as the customer’s in-house representative, That is the
people who perform SQA must look at the software from the customer’s point of
view Does the software adequately meet, the quality factors. Has software
development been conducted according to pre-established standards? Have
technical disciplines properly performed their roles as part of the SQA group
attempts to answer these and other questions to ensure that software quality is
maintained.
2.2. SQA Activities
Software quality assurance is comprised of a variety of tasks associated with two
different constituencies the software engineers who do technical work and a SQA
group that has responsibility for quality assurance planning, over sight, record
keeping, analysis and reporting.
Software engineers address quality (and perform quality assurance) by applying
solid technical methods and measures, conducting formal technical reviews, and
performing well-planned software testing.
The charter of the SQA group is to assist the software engineering team in
achieving a high quality end product. The software Engineering Institute
[PAU93] recommends a set of SQA activities that address quality assuring
planning, oversight. Record keeping, analysis, and reporting, It is these activities
that are performed (or facilitated) by an independent SQA group.
Prepare a 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 software project team
Participates in the development of the project’s software process description. The
software engineering team selects a process for the work to be performed. The
SQA group reviews the process description for compliance with organizational
policy, internal software standards, externally imposed standards (e.g., ISO
9001), and other parts of the software project plan.
Reviews software engineering activities to verify compliance with the defined
software process. The SQA group identifies, documents and tracks deviations
from the process and verifies that corrections have been made.
Audits designated software work products to verify compliance with those
defined as part of the software process. The SQA group reviews selected work
products, identifies, documents and tracks deviations, verifies that corrections
have been made and periodically reports the results of its work to the project
manager.
Ensures that deviations in software work and work products are documented and
handled according to a documented procedure. Deviations may be encountered in
the project plan, process description, applicable standards, or technical work
products.
Record any noncompliance and reports to senior management. Noncompliance
items are tracked until they are resolved. In addition to these activities the SQA
group coordinates the control and management of change and helps to collect and
analyze software metrics.
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 that can then be removed. Software reviews serve to “purify” the
software work products that occur as a result of analysis design, and coding.
Freedman and Weinberg [FRE90] discuss the need for reviews this way:
Technical work needs reviewing for the same reason that pencils need erasers: To
err is human. The second reason we need technical reviews is that although
people are good at catching some of their own errors, large classes of errors
escape the originator more easily than they escape anyone else. The review
process is, therefore, the answer to the prayer of Robert Burns:
O wad some power the gifted give us
To see ourselves as other set us
A review-any review-is a way of using the diversity of a group of people to:
1. Point out needed improvement in the product of single person or team
2. Confirm those parts of a product in which improvement is either not desired or
not needed; and
3. Achieve technical work of more uniform, or at least more predictable. Quality
than can be achieved without reviews, in order to make technical work more
manageable.
Formal Technical Reviews
A formal technical review (FTR) is a software quality assurance activity is performed by
software engineers. The objectives of the FTR are
(1)to Cover errors in function logic, or implementation for any representation of the
software;
(2) to verify that the software under review meets its requirements
(3) to ensure that the software has been represented according to predefined standards;
(4)to achieve software that is developed in a uniform manner; and
(5)to make projects more manageable.
The FTR is actually a class of reviews that include walkthroughs, inspections, and
other small group technical assessments of software. Each FTR is conducted as a meeting
and will be successful only if it is properly planned, controlled, and attended. In the
paragraphs that, follow, guidelines similar to those for a walkthrough [ERE90] , [GIL 93]
are presented as a representative formal technical review.
The Review Meeting
Regardless of the FTR format that is chosen, every review meeting should abide
by the following constraints:
• Between three and five people (typically) should be involved in the review;
• Advance preparation should occur but should require no more than two hours
of work for each person; and
• The duration of the review meeting should be less than two hours.
The review meeting is attended by the review leader, all reviewers and the
producer. One of the reviewers takes on the role of the recorder, that is, the
individual who records (in writing) all important issues raised during the review.
The FTR begins with an introduction of the agenda and a brief introduction by
the producer. The producer then proceeds to “walk through” the work product,
explaining the material, while reviewers raise issues based on their advance
preparation When valid problems or ;errors are discovered the recorder notes
each.
At the end of the review, all attendees of the FTR must decide whether to
(1)accept the work product without further modification.
(2)reject the work product due to severe errors (once corrected, another review
must be performed) or
(3)accept the work product provisionally (minor errors have been encountered
and must be corrected, but no additional review will be required). The decision
made, all FTR attendees complete a sign-off indicating their
participation in the review and their concurrence with the review team ‘s
findings.
Review Reporting and Record Keeping
During the FTR a reviewer (the recorder) actively records all issues that have
been raised. These are summarized at the end of the review meeting and a review
issues list is produced. In addition, a simple review summary report is completed.
A review summary report answers three questions:
1. What was reviewed?
2. Who reviewed it?
3. What were the findings and conclusions?
The review summary report is typically a single page form (with possible
attachments) . It becomes part of the project historical record and may be
distributed to the project leader and other interested parties.
Review Guidelines
Guidelines for the conduct of formal technical reviews must be established in
advance, distributed to all reviewers, agreed upon and them followed. A review
that is uncontrolled can often be worse than no review at all. The following
represents a minimum set of guidelines for formal technical reviews:
1. Review the product, not the producer. AN FTR should leave all participants
with a warm feeling of accomplishment. Conducted improperly, the FTR can
take on the aura of an inquisition. Errors should be pointed out gently; the tone of
the meeting should be loose and constructive; and the intent should not be to
embarrass or belittle. The
review leader should conduct the review meeting to ensure that the proper tone
and attitude are maintained and should immediately halt a review that has gotten
out of control.
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. Rather than spending time debating the
question, the issue should be recorded for further discussion off-line.
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 as wall board, so that wording and prioritization can be assessed by other
reviewers as information is recorded.
6. Limit the number of participants and insist upon advance preparation . Two
heads are better than one, but 14 are not necessarily better than 4. Keep the
number of people involved to the necessary minimum. However, all review team
members must prepare in advance. Written comments should be solicited by the
review leader (providing an indication ;that the reviewer has reviewed the
material).
7. Develop a checklist for each work 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, coding, and even test documents.
8. Allocate resources and time schedule for FTRs. For reviews to be effective,
they should be scheduled as a task during the software engineering process. In
addition time should be scheduled for the inevitable modification that will occur
as the result of an FTR.