Uploaded by Sabah Daabash

se

advertisement
Ch.4 – Risk Management
1. What is risk management?
Risk Management is concerned with identifying
risks affecting project schedule or the quality of
the software and creating plans to avoid or
minimize their effect on a project.
2. What are the types of risks (in terms of what
is affected by them)?
• Project risks (affect schedule or resources e.g.
loss of an experienced programmer)
• Product risks (affect quality or performance of
the software e.g. failure of a purchased
component)
• Business risks (affect the organization
developing the software e.g. a competitor
launching a new product)
3. What are the stages of the Risk Management
Process?
• Risk Identification – identify project, product,
and business risks
• Risk Analysis – assess the likelihood and
consequences of the risks
• Risk Planning – draw up plans to avoid or
minimize the effects of the risks
• Risk Monitoring – regularly assess the risk and
the plans for risk mitigation and revise them
as you learn more about the risk
4. What are the strategies of Risk Planning?
• Avoidance Strategies – reduce the probability
that the risk will arise (e.g. dealing with
defective components)
• Minimization Strategies – reduce the impact
of the risk on the project or product (e.g.
strategy for staff illness)
• Contingency Plans – plans to deal with a risk if
it arises
Ch. 5 – Requirements Engineering
1. What are the activities of the Requirements
Engineering Process?
•
•
•
•
Requirements Elicitation
Requirements Analysis
Requirements Validation
Requirements Management
2. What is the output of the RE process?
A system requirements document.
3. Describe the requirements elicitation process.
It is a process in which software engineers work
with the stakeholders of the system to be
developed to find out about the application
domain, work activities, the services and system
features stakeholders want, and hardware
constraints.
4. What are the stages/process activities of
requirements elicitation?
• Requirements Discovery – involves interacting
with stakeholders to discover their
requirements
• Requirements Classification & Organization –
involves grouping related requirements and
organizing them into coherent clusters
• Requirements Prioritization & Negotiation –
involves prioritizing requirements and
resolving requirements conflicts
• Requirements Specification – involves
documenting requirements and inputting
them into the next round of the RE process
spiral
5. What is ethnography?
Ethnography is an observational requirements
elicitation technique in which an ethnographer
immerses himself in the working environment
where the new system will be used in order to
understand the social and organizational
requirements of the software being developed.
6. What is requirements specification?
It is the process of documenting the user and
system requirements of a system into a
requirements document.
7. What are the ways of writing system
requirements specification?
• Natural language
• Structured natural language
• Design description languages
• Graphical notations
• Mathematical specifications
8. What is the software requirements
document?
It is the official statement of what is required of
the system developers, which includes a definition
of user requirements and a specification of the
system requirements.
9. What are the requirements validation
techniques?
• Requirements Reviews – systematic manual
analysis of the requirements
• Prototyping – using an executable model of
the system to check requirements
• Test Case Generation – developing tests for
requirements to check testability
10. What is requirements management?
It is the process of managing changing
requirements during the requirements
engineering process and system development.
CH. 6 – Software Design
1. List and describe the 4 design models.
• Data/Class Design – transforms analysis
classes into design/implementation classes
along with the data structures required to
implement the software
• Architectural Design – defines the relationship
between major structural elements of the
software
• Interface Design – defines how software
elements, hardware elements, and end users
communicate
• Component-Level Design – transforms
structural elements of the software
architecture into a procedural description of
software components
2. What are some design quality guidelines?
- A design should be modular; the software
should be logically partitioned into elements or
subsystems
- A design should lead to components that exhibit
independent functional characteristics
- A design should lead to interfaces that reduce
the complexity of connections between
components with the external environment
- A design should be represented using a notation
that effectively communicates its meaning
3. What are some of the design principles?
- The design should be traceable to the analysis
model
- The design should exhibit uniformity and
integration
- The design should be structured to
accommodate change
- The design should be assessed for quality as it is
being created, not after it is completed
- Testing should be involved from the initial
stages of the design
4. What is information hiding?
Information hiding involves separating design
decisions that are most likely to change from the
rest of the system in order to protect other parts
of the program from extensive modification if a
design decision is changed.
5. What are the benefits of information hiding?
• Reduces the likelihood of side effects on a
program
• Limits the global impact of local design
decisions
• Leads to encapsulation, which is an element
of high quality design
• Results in higher quality software
6. What is stepwise refinement?
It is a top-down design strategy used for
decomposing a system from a high level of
abstraction into a more detailed level.
7. What are the 2 qualitative criteria that assess
component independence?
• Cohesion – an indication of the relative
functional strength of a module; a natural
extension of the information hiding concept; a
cohesive module should ideally just perform a
single task; an intra-module concept; strive
for high cohesion
• Coupling – an indication of the relative
interdependence among modules; depends
on interface complexity between modules,
the pint at which entry or reference is made
to a module, and what data passes across the
interface; an inter-module concept; strive for
lowest possible coupling
8. What is an architectural pattern?
It is a stylized description of good design practice,
which has been tried and tested in different
environments.
9. What is a user interface?
It is the front end application to which a user
interacts in order to use the software
functionalities. The two categories of UI are
Command Line Interface and Graphical User
Interface.
CH. 8 – Software Testing
1. What are failures and faults?
• Failure: when there is a deviation of a
system’s behavior from its specification (a
program/system does not behave as it’s
supposed to according to its specification)
• Fault/defect: an incorrect step, process, or
data definition (faults can lead to failure)
2. Why is software testing important? *
It is important because software bugs could be
expensive and dangerous as they can cause
monetary and human losses, so software testing is
important in order to discover bugs early and get
rid of them. It also helps identify errors, gaps, or
missing requirements in contrary to the actual
requirements.
3. What is Verification and Validation (V&V)?
V&V is a process of software testing. Verification
aims to check that the software meets its stated
functional and nonfunctional requirements, and
validation is a more general process that aims to
ensure that the software meets the customer’s
expectations.
4. What is black box testing?
It is a testing technique in which the features of the AUT
are tested without looking at the internal code
structure, implementation details, or knowledge of
internal paths of the software. Black box testing is based
entirely on requirements and specification as it only
focuses on the inputs and outputs of a software system.
5. What are the types of black box testing?
• Functional Testing – related to the functional
requirements of a system and is done by
software testers
• Nonfunctional Testing – does not test specific
functionality, but rather nonfunctional
requirements such as performance,
scalability, and usability
• Regression Testing – done after code fixes,
upgrades, or any other system maintenance
to check that the new code has not affected
the existing code
6. What is white box testing?
It is a testing method in which test cases are
derived directly from the internal specification or
actual code for the program.
7. What is basis path testing?
It is a white box testing method that involves using
the source code of a program in order to find
every possible executable path. Basis path testing
achieves maximum path coverage with the least
number of test cases.
8. Why is basis path testing used?
Software programs include multiple entry and exit
points, so rather than testing each individual
point, basis path testing is used in order to reduce
redundant tests and achieve maximum test
coverage.
9. What is cyclomatic complexity?
It is a software metric used to measure the
complexity of a program by measuring the number
of independent paths in the source code of a
program.
10. What are the main differences between black
box and white box testing?
• Black box testing focuses on the validation of
the functional requirements of a program,
whereas white box testing validates the
internal structure and working of the software
code
• Black box testing gives an abstraction from
the code and focuses on testing the software
system behavior, whereas white box testing
requires knowledge of the underlying
programming language of the software
• Black box testing facilitates testing
communication amongst modules, whereas
white box testing does not facilitate
communication amongst modules
11. What are the levels of software testing?
•
•
•
•
Unit Testing
Integration Testing
System Testing
Acceptance Testing
12. What is unit testing and why is it important?
It is a type of software testing in which individual
components of a software are tested in order to
validate that each unit of the software code
performs as expected. Proper unit tests can help
fix bugs early in the development cycle while
saving both time and money. Unit tests also help
with code re-use.
13. What is integration testing and why is it
important?
It is a type of software testing in which software
modules are integrated logically and tested as a
group in order to expose defects in the interaction
between these modules when they are integrated.
Integration testing is necessary to verify that
software modules work in unity.
14. What are the types of integration testing?
• Big-Bang Approach
• Incremental Approach (consists of the Top
Down Approach and Bottom Down Approach)
15. Describe the types of integration testing.
In the Big Bang Approach, all components of a
software are integrated together at once and then
tested as whole. In the Incremental Approach,
testing is done by joining two or more modules
that are logically related, and then incrementally
adding other related modules and testing for
proper functioning until all modules are joined and
tested successfully.
16. What are the Stub and Driver?
• Stub: a special purpose program used in
top-down incremental approach to
stimulate the activity of the missing
component in order to test its
functionality. It is called by the module
under test. Stubs are used when the
major module of a program is ready to
test, but the sub modules are still not
ready.
• Driver: a routine used in bottom-up
incremental approach that calls a
particular component and passes a test
case to it. It calls the module to be tested.
Drivers are used when the sub modules of
a program are ready to test, but the main
module is still not ready.
17. What is system testing?
It is a level of testing that validates the complete
and fully integrated software product in order to
evaluate the end-to-end system specifications of
the software.
18. What are the types of system testing?
• System Function Test: tests the entire system
against the functional requirements of the
software
• System Performance Test: tests the nonfunction requirements of the system, such as
the response time.
19. What is acceptance testing?
It is a beta testing of a software product
performed by the actual end users of the product.
It is a type of black box testing. Its purpose is to
validate that the requirements of a specification or
contract are met as per its delivery.
20. What is regression testing?
Regression testing is a type of software testing
that re-executes a subset of tests that have
already been conducted to ensure that new code
changes have not produced unwanted side effects
on the existing functionalities.
Ch.24 – Quality Management
1. What is software measurement?
Software measurement involves deriving a
numeric value for an attribute of a software
product or process.
2. What is a software metric?
It is any type of measurement which relates to a
software system, process, or related
documentation.
3. What are some uses/purposes of software
metrics?
• Allow the software and software process to
be quantified
• Can be used to predict product attributes or
to control the software process
• Can be used to identify abnormal components
4. What are the types of process metrics?
• The time taken for a particular process to be
completed (ex. Total time devoted to the
process)
• The resources required for a particular
process (ex. Travel costs)
• The number of occurrences of a particular
event (ex. The number of defects discovered
during code inspection)
5. What are the types/classes of product
metrics?
• Dynamic Metrics (closely related to software
quality attributes): collected by
measurements made of a program in
execution (help assess efficiency and
reliability)
• Static Metrics (have an indirect relationship
with quality attributes): collected by
measurements made of the system
representations (help assess complexity,
understandability, and maintainability)
Download