0% found this document useful (0 votes)
6 views

SE Notes

The document outlines the Cleanroom software engineering methodology, focusing on box structure specifications, which include Black Box, State Box, and Clear Box to model software functionality. It emphasizes the importance of the four Ps—people, product, process, and project—in managing software development effectively, as well as factors affecting project scheduling and unit test considerations. Additionally, it covers white-box testing techniques, including statement, branch, and condition coverage, to ensure thorough testing of software applications.

Uploaded by

nubdope069
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

SE Notes

The document outlines the Cleanroom software engineering methodology, focusing on box structure specifications, which include Black Box, State Box, and Clear Box to model software functionality. It emphasizes the importance of the four Ps—people, product, process, and project—in managing software development effectively, as well as factors affecting project scheduling and unit test considerations. Additionally, it covers white-box testing techniques, including statement, branch, and condition coverage, to ensure thorough testing of software applications.

Uploaded by

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

SE

Box structure specification is a technique used in the Cleanroom software


engineering methodology to describe and model the functionality of a software
system. It helps to understand, design, and verify the system by focusing on
different levels of abstraction. The box structure specification is based on
three types of boxes: Black Box, State Box, and Clear Box. Each of these boxes
represent specific software system's behavior and functionality.

Types of Boxes
1. Black Box: A Black Box focuses on the software system input-output
relationship without considering the internal workings or implementation
details. This abstraction focuses on what the component does, not how it does
it, making it ideal for specifying interfaces and high-level system requirements.
The function 'f' is applied to a sequence of inputs (stimuli) 'S' and transforms
them into an output (response) 'R'.

2.State Box: A State Box represents the internal states of the software system
and how they change over time based on inputs. It helps in understanding the
system's dynamic behavior, state transitions, and interactions between
different components of the system.
The Black Box’g’ receives inputs ('S') from external sources and the current
state (T') from the system's internal state to figure out response ’S’ and next
state ’T’.

3. Clear Box: A Clear Box provides a detailed view of the software system's
functionality, including the internal logic, algorithms, and data structures used
to implement the system. It helps in understanding how the system processes
inputs to produce the expected outputs.
A Clear Box that replaces the Black Box 'g' with a sequence of steps that
includes a conditional statement . We can continue to break down these steps
into smaller, more specific Clear Boxes using a process called stepwise
refinement

4p
The four Ps - people, product, process, and project are essential for effective
software project management. Each of these areas is interrelated and must be
managed effectively for successful
outcomes in software development projects.these four Ps helps in managing all
aspects of a software development project effectively and plays a vital role in
balancing resources, quality and project-timeline.

People
– This refers to the team members involved in the software development
process.
– people plays a crucial role as they bring unique skills,expertise and
creativity to development process
– Effective management of people involves organizing them into
effective teams, motivating them to do high-quality software work,
● People are the backbone of any software project. Their skills,

collaboration, and motivation directly determine the project's success.


Product
– This refers to the software product being developed.
● outcome of the project, designed to meet the customer’s requirements
– it involves Designing a robust and scalable software architecture.
– it Delivers a product that satisfies both functional and non-functional
needs.
Process
• This refers to the process used in software development.
• The process provides a structured and systematic approach to creating
software.
– it involves the methodologies, frameworks, and procedures used to
develop the software
● The process outlines how the software is built, ensuring efficiency,
adaptability, and the quality of the final product.
Project
• This refers to managing the overall project in a manner that enables the
software team to succed
Project management ties everything together, ensuring the software is
delivered on time, within budget, and meets its objectives.
this Developa detailed project plan with timelines, milestones, and deliverables.
it Allocate resources and managing financial constraints and identify risk.

Factors Affecting Project Scheduling

There factors that can affect software project scheduling are:


1. Project Scope: The size and complexity of the project can impact the time
required to complete
2. Resource Availability: The availability of team members, hardware, software,
and other resources can impact the schedule.
3. Project Requirements: The specific requirements of the project can impact
the schedule,particularly if they are complex.
Task Dependencies: Delays in interconnected tasks can shift the entire
timeline.
5. Risk Management: Risks that are not identified or managed properly can
cause delays.
6. Communication: Poor communication between team members or
stakeholders can lead to misunderstandings and delays in completing tasks.
7. Changes in Requirements: Changes in project requirements during
development can impact the schedule.
8. Technical Challenges: Technical challenges such as bugs, integration issues,
or performance problems can cause delays in completing tasks.
9. External Factors: External factors such as changes in regulations, market
conditions, or customer needs can impact the schedule.
Team Experience: Inexperienced teams may take longer to complete tasks.

Unit Test Considerations

Unit Test Considerations refer to the important factors that should be taken into
account when conducting unit testing. Unit tests are illustrated schematically in
the below figure.
The important considerations are given below.
Module Interface: The module interface is the way in which a module
communicates with other parts of the program. It ensure that information flows
properly into and out of the program unit under test.
Local Data Structures: Local data structures are temporary data structures
used by a module during its execution. It ensure that data stored temporarily
maintains its integrity during all steps in an algorithm's execution.
Independent Paths: Independent paths refer to all possible paths through a
module's control structure that do not depend on other parts of the program
Boundary Conditions:it refer to limits or restrictions established for processing
within a module. It ensure that the module operates properly without any
unexpected behavior or errors.
Error-Handling Paths: it refers to. how modules handles error and exception
during its execution.

Unit testing is an important step in the software development process and is


usualy done alongside coding.
The steps involved in Unit-Test Procedures are :
1. Design of Unit Tests: The first step in unit testing is to design the tests that
will be used to verify the functionality of the code. This can be done before
coding begins or after source code
has been generated.
Test Cases and Expected Results: Once the tacts have been designed. each
test case should be coupled with a set of expected results. This helps ensure
that the code is tested thoroughly and that any errors or issues are identified
early in the development process.
Development of Drivers and Stubs:A driver is like a simple temporary
program you create just to feed test data into your software unit and see what it
outputs. It acts like a temporary main program. and A stub is like a fake,
simplified version of a software unit that your unit under test depends on.
Unit Test Environment:his is the setup where you can run your tests on your
software unit in isolation, using drivers and stubs as necessary. developers can
ensure that their code works as expected before integrating it into larger
systems.
Testing Process: Once everything has been set up, developers can begin
testing their code using various inputs and scenarios to ensure that it works as
expected.

Cleanroom Process Model


Cleanroom soltware engineering divided the develonment process into smaler
parts scale increments. Each increment goes through a series of tasks to make
sure the software is correct and high quality
– Increment Planning: In this step, the development team determines
the scope, functionality and objectives for the current increment. This
involves considering customer requirements, project constraints, and
overall system goals.it ensures that each increment focuses on
delivering valuable and relevant features to the end-users.
– Requirements Gathering: The team collects and documents the
specific requirementsfor the increment, ensuring they are clear,
complete, and consistent.Proper requirements gathering helps reduce
the risk of miscommunication, misunderstandings, and rework during
development.
– Box Structure Specification:helps the team understand the overall
structure of the software and the relationships between components.
It serves as a foundation for the formal design phase, allowing the
team to visualize how different parts of the software interact and
collaborate.
● Formal Design: The team develops a detailed design for the

increment using precise notation and formal methods. This design


specifies how each component interacts with others and how they
satisfy the requirements.
● Correctness Verification: In this step, the team proves that the

design meets the requirements and is free of errors. it helos the team
catch potential issues early in the development process, which can
save time, effort, and resources.
– Code Generation and Inspection: This step ensures that the code
accurately reflects the design and that potential defects are
minimized. Inspections help catch errors before they propagate
through the system, leading to more reliable and robust software.
– Statistical Testing: The team conducts testing based on usage
scenarios and operational profiles to assess the software's
reliability.identify potential issues, such as performance bottlenecks or
unexpected behavior.
– Certification: The team evaluates the results of statistical testing and
correctness verification to ensure the software meets quality
standards. Certification provides confidence that the software
increment is reliable, correct, and ready for use by end-users.

White-Box Testing
White-box testing is a software testing technique that involves examining the
internal structure of a software application to ensure that it functions correctly.
This type of testing is based on the knowledge of the internal workings of the
software and involves analyzing its code, architecture, and design to identify
potential issues and defects.White Box Testing is considered more technical
than functional testing.
Characteristics of White Box Testing
• it is focused on the internal workings of the software application, including its
code, architecture, and design.
• it is based on how the system carries out the operations instead of how it is
perceived by the users.
• it involves testing all possible paths to ensure that every line of code is
executed at least once during testing.
it deep understanding of the software's internal workings to identify potential
issues and defects.
• White Box Testing can be automated using tools such as unit test frameworks
or code coverage tools
• White Box Testing provides better coverage as it tests the whole code in
detail, ensuring that errors involved can easily be removed.
• White Box Testing is particularly useful for identifying complex defects that
may be difficult to
• White Box Testing can be time-consuming because it involves testing all
possible paths

Techniques
● Statement Coverage: it ensure that every statement in the source
code is executed at least once.
● Branch Coverage: This technique ensures that every branch of
conditional statement is executed at least once during testing.
● Path Coverage: it aims to execute all possible paths through the code
at least once.
● Condition Coverage: it involves testing all possible outcomes of a
Boolean expression or condition within the code are executed at least
once during testing.

Control Flow Graph


• A Control Flow Graph (CFG) is a graphical representation of the control flow
or execution flow of a program. It is used to visualize the paths that a program
can take during its execution.
• The control flow graph consists of a Basic Block or Node and Edge. The node
is the set of statements that are to be executed. The edge of the control flow
graph shows the flow of control throughout.
• The control has one entry point, and after executing all statements the control
gets to exit.
N1, N2, N3, N4 and N5 represents Basic Blocks or Nodes and E1, E2, E3, E4 and
E5 represents Edges. We can also observe that N2, N3, N4 and N5 together
represent an IF ELSE statement.
Node N1 represents the initialization of variables a and b.
Node N2 represents the conditional statement where the program checks if a
too
Node N3 represents the statement to be executed if the condition in Node N2 is
true (ie.if a is greater than b), which prints "a is greater."
Node N4 represents the statement to be executed if the condition in Node N2 is
false (i.e if a is not greater than b), which also prints “b is greater."
Node N5 represents the end of the program.

Statement Coverage
• Statement coverage is a white-box testing technique that aims to ensure that
each line of code in the software is executed at least once during testing.
• The primary objective of statement coverage is to identify any coding errors
that may occur at the individual statement level.
• To achieve statement coverage, testers create test cases that exercise each
line of code in the software. During testing, the software is executed with these
test cases, and each line of code is checked to ensure that it has been
executed at least once.

Branch coverage is a white-box testing technique that aims to ensure that all
posible branches or decision points within the code are executed at least once
during testing.
• The goal of branch coverage is to identify any issues related to the control
flow of the software.
. To achieve branch coverage, testers create test cases that exercise al possible
branches or decision points within the code.

Condition coverage is a white-box testing technique that aims to ensure that al


posible outcomes of a Boolean expression or condition within the code are
executed at least once during testing.
• The goal of condition coverage is to identify any issues related to the logical
flow of the software.
– conditional coverage ensures that every boolean condition is
evaluated to both true and false at least once.
• It aims to test individual conditions with possible diferent combination of
Boolean input for the expression.
During testing, the software is executed with these test cases, and each
outcome of the Boolean expression or condition is checked to ensuren that it
has been executed at least once.

You might also like