Software Engineering
Training Material
|
SOFTWARE ENGINEERING
·
Introduction
About the company
Netkraft
is a leading
provider of creative Web professional services called e-Business services. eBusiness is the complex fusion of business
processes, enterprise applications, and organizational structure necessary to
create a high-performance business model. In this environment, widespread use
is made of synergistic clusters, business ecosystems, coalitions, co-operative networks,
or outsourcing to create end-to-end value streams to link businesses, customers
and suppliers. NetKraft has built a reputation for quality products, outstanding customer support
and business values.
·
Software
Industry
Ø In India itself, Software industry
growth has been phenomenal.
Ø IT field has enormously grown in the
past 50 years.
Ø IT industry in India is expected to
touch 10,000 crores of which software share is dramatically increasing.
·
Software
Crisis
Ø
Software
cost/schedules are grossly inaccurate.
Cost
overruns of several times, schedule slippage’s by months, or even years are
common.
Ø
Productivity
of people has not kept pace with demand
Added
to it is the shortage of skilled people.
Ø
Quality
of software is than desired
Error
rates of released software leave customer dissatisfied…Threatening the very
business.
·
Software
Myths
Ø
Management
Myths
ü
Software
Management is different.
ü
Why
change or approach to development?
ü
We
have provided the state-of-the-art hardware.
ü
Problems
are technical
ü
If
project is late, add more engineers.
ü
We
need better people.
Ø
Developers
Myths
ü
We
must start with firm requirements
ü
Why
bother about Software Engineering techniques, I will go to terminal and code
it.
ü
Once
coding is complete, my job is done.
ü
How
can you measure the quality..it is so intangible.
Ø
Customer’s
Myth
ü A general statement of objective is
good enough to produce software.
ü Anyway software is “Flexware”, it
can accommodate my changing needs.
Ø
What
do we do ?
ü
Use
Software Engineering techniques/processes.
ü
Institutionalize
them and make them as part of your development culture.
ü
Adopt
Quality Assurance Frameworks : ISO, CMM
ü
Choose
the one that meets your requirements and adopt where necessary.
·
Software
Engineering:
Ø Software Engineering is an
engineering discipline concerned with the practical problems of developing
large software.
Ø Software Engineering discipline
tracks both technical & non-technical problems associated with software
development.
Ø Challenge for Software Engineers is
to produce high quality software with finite amount of resources & within a
predicted schedule.
Ø Apply Engineering Concepts to
developing Software
Ø Apply Engineering Concepts to
removing crisis.
·
Software
Quality Assurance:
Software quality assurance Software QA involves the
entire software development PROCESS - monitoring and improving the process,
making sure that any agreed-upon standards and procedures are followed, and
ensuring that problems are found and dealt with. It is oriented to 'prevention'.
OR
The
purpose of Software Quality Assurance is to provide management with appropriate
visibility into the process being used by the software project and of the
products being built.
Software Quality Assurance involves reviewing and
auditing the software products and activities to verify that they comply with
the applicable procedures and standards and providing the software project and
other appropriate managers with the results of these reviews and audits.
·
Verification:
Ø Verification typically involves
reviews and meetings to evaluate documents, plans, code, requirements, and
specifications.
Ø The determination of consistency,
correctness & completeness of a program at each stage
·
Validation:
Ø Validation typically involves actual testing and
takes place after verifications are completed.
Ø The determination of correctness of a final program
with respect to its requirements.
·
Software
Engineering Process
Consists of Three generic Phases:
Ø Definition, Development, and Maintenance.
1. Definition (What)
Customer Contact, Planning, Requirement Analysis.
2. Development Phase (How)
Design, Coding, Testing.
3. Maintenance Phase (Change)
Correction, Adaptation, Enhancement, Reengineering.
4. Support Activities
Quality Assurance, Configuration Management.
Software
Life Cycle Models
·
Prototyping Model
·
Waterfall Model –
Sequential
·
Spiral Model
·
V Model -
Sequential
Prototyping Model of Software Development
A prototype is a toy implementation of a system; usually exhibiting
limited functional capabilities, low reliability, and inefficient performance. There are several reasons for developing a
prototype. An important purpose is to
illustrate the input data formats, messages, reports and the interactive
dialogues to the customer. This a valuable mechanism for gaining better
understanding of the customer’s needs. Another important use of the prototyping
model is that it helps critically examine the technical issues associated with
the product development.
Customer
Suggestions
Acceptance by Customer
Classic Waterfall Model
In a typical model, a project begins with feasibility analysis. On
successfully demonstrating the feasibility of a project, the requirements
analysis and project planning begins.
The design starts after the requirements analysis is complete, and
coding begins after the design is complete.
Once the programming is completed, the code is integrated and testing is
done. On successful completion of testing, the system is installed. After this, the regular operation and
maintenance of the system takes place.
Feasibility
|
|
|
|
|
Requirement Document
And
Project Plan
System Design
Document
Detailed
Design Document
|
Programs
Test
Plan, Test Report
And Manuals
Installation
Report
Typical Spiral Model
Developed by Barry Boehm in 1988. it provides the potential for rapid
development of incremental versions of the software. In the spiral model,
software is developed in a series of incremental releases. During early iterations , the incremental
release might be a paper model or prototype.
·
Each
iteration consists of
Planning,
Risk Analysis, Engineering, Construction & Release & Customer Evaluation.
Customer Communication: Tasks required to establish effective communication 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 representatives of the application.
Construction & 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 stage and implemented
during the installation state.
V – Process Model
Project
Process
(Project Plan)
Acceptance
Test
Plan
System
Test Plan
Int.Test
Plan.
Unit
T.P
|
|
What
makes a good test engineer?
A good test engineer has a 'test to break' attitude, an ability to take
the point of view of the customer, a strong desire for quality, and an
attention to detail. Tact and diplomacy are useful in maintaining a cooperative
relationship with developers, and an ability to communicate with both technical
(developers) and non-technical (customers, management) people is useful. Previous
software development experience can be helpful as it provides a deeper
understanding of the software development process, gives the tester an
appreciation for the developers' point of view, and reduce the learning curve
in automated test tool programming. Judgment skills are needed to assess
high-risk areas of an application on which to focus testing efforts when time
is limited.
What
makes a good Software QA engineer?
The same qualities a good tester has are useful for
a QA engineer. Additionally, they must be able to understand the entire
software development process and how it can fit into the business approach and
goals of the organization. Communication skills and the ability to understand
various sides of issues are important. In organizations in the early stages of
implementing QA processes, patience and diplomacy are especially needed. An
ability to find problems as well as to see 'what's missing' is important for
inspections and reviews.
·
Testing
Ø An examination of the behavior of a program by
executing on sample data sets.
Ø Testing comprises of set of activities to detect
defects in a produced material.
Ø To unearth & correct defects
Ø To detect defects early & to reduce cost of
defect fixing
Ø To avoid user detecting problems
Ø To ensure that product works as users expected it
to.
Why Testing ?
·
To
unearth and correct defects.
·
To detect
defects early and to reduce cost of defect fixing.
·
To ensure
that product works as user expected it to.
·
To avoid
user detecting problems.
Types of Tests
Contract
Other Tests
System Req. Spec.
System Tests
Functional Spec. Functional Tests
H.LD. Integration
Testing
L.L.D.
Unit Testing
Test Life Cycle
·
Identify Test
Candidates
- Test Plan
- Design Test Cases
- Execute Tests
- Evaluate Results
- Document Test Results
- Casual Analysis/ Preparation of Validation Reports
- Regression Testing / Follow up on reported bugs.
Testing Techniques
- Black Box Testing
- White Box Testing
- Regression Testing
- These principles & techniques can be
applied to any type of testing.
Black Box
Testing
Testing of a function without knowing internal structure of the program.
White Box
Testing
Testing of a function with knowing internal structure of the
program.
Regression Testing
To ensure that
the code changes have not had an adverse affect to the other modules or on
existing functions.
Functional
Testing
Ø Study
SRS
Ø Identify Unit Functions
Ø For each unit function
·
Take each
input function
·
Identify
Equivalence class
·
Form Test
cases
·
Form Test
cases for boundary values
·
From Test
cases for Error Guessing
Ø Form Unit function v/s Test cases, Cross Reference
Matrix
Ø Find the coverage
Unit Testing:
The most
'micro' scale of testing to test particular functions or code modules.
Typically done by the programmer and not by testers
·
Unit - smallest testable piece of
software
·
A unit
can be compiled/ assembled/ linked/ loaded; and put under a test harness
Unit
testing done to show that the unit does not satisfy the functional
specification and/ or its implemented structure does not match the intended
design structure
Integration
Testing:
Integration is a systematic approach to build the complete software
structure specified in the design from unit-tested modules. There are two ways
integration performed. It is called Pre-test and Pro-test.
1.
Pre-test:
the testing performed in Module development area is called Pre-test. The Pre-test is required only if the
development is done in module development area.
2.
Pro-test:
The Integration testing performed in baseline is called pro-test. The
development of a release will be scheduled such that the customer can break
down into smaller internal releases.
Alpha testing:
Testing of an application when development is nearing completion minor
design changes may still be made as a result of such testing. Typically done by
end-users or others, not by programmers or testers.
Beta testing:
Testing when development and testing are
essentially completed and final bugs and problems need to be found before final
release. Typically done by end-users or others, not by programmers or
System Testing:
·
A system
is the big component
·
System
testing is aimed at revealing bugs that cannot be attributed to a component as such,
to inconsistencies between components or planned interactions between
components
·
Concern:
issues, behaviors that can only be exposed by testing the entire integrated
system (e.g., performance, security, recovery).
The purpose of Volume Testing is to find weaknesses
in the system with respect to its handling of large amounts of data during
short time periods. For example, this kind of testing ensures that the system
will process data across physical and logical boundaries such as across servers
and across disk partitions on one server.
Stress
testing:
This refers to testing system functionality while
the system is under unusually heavy or peak load; it's similar to the
validation testing mentioned previously but is carried out in a "high-stress"
environment. This requires that you make some predictions about expected load
levels of your Web site.
Usability
testing:
Usability means that systems are easy and fast to
learn, efficient to use, easy to remember, cause no operating errors and offer
a high degree of satisfaction for the user. Usability means bringing the usage
perspective into focus, the side towards the user.
Security
testing:
If your site requires firewalls, encryption, user authentication,
financial transactions, or access to databases with sensitive data, you may
need to test these and also test your site's overall protection against
unauthorized internal or external access.
Test Plan:
A Test
Plan is a detailed project plan for testing, covering the scope of testing, the
methodology to be used, the tasks to be performed, resources, schedules, risks,
and dependencies. A Test Plan is developed prior to the implementation of a
project to provide a well defined and understood project roadmap.
Test Specification:
A Test Specification
defines exactly what tests will be performed and what their scope and
objectives will be. A Test Specification is produced as the first step in
implementing a Test Plan, prior to the onset of manual testing and/or automated
test suite development. It provides a repeatable, comprehensive definition of a
testing campaign
No comments:
Post a Comment