Module 2
Module 2
1. Inception: The initial phase where the scope of the project and its stakeholders are
identified.
Inception
Elicitation
Goal: Elicitation involves asking stakeholders (customers, users, etc.) about their
objectives, how the product will be used, and how it fits into their business.
1. Problems of scope:
2. Problems of understanding:
3. Problems of volatility:
Elaboration
Negotiation
Purpose: Customers and users often request more features than can be
implemented due to limited resources. Also, conflicting requirements from different
stakeholders are common.
o Use an iterative approach to balance cost, risk, and internal conflicts, refining
or eliminating some requirements so that all parties reach a mutually
acceptable agreement.
Specification
o Some suggest using a standard template for consistency and clarity, but
flexibility is sometimes required.
Formats:
o For large systems, a detailed document with natural language and diagrams
may be needed.
Validation
Purpose: To assess the quality of the requirements produced during earlier stages of
requirements engineering.
o Ensuring that all software requirements are clearly stated and unambiguous.
Validation Mechanism: The primary method used for validation is the technical
review, which involves a team of software engineers, customers, users, and
stakeholders.
Requirements Management
Key Activities:
o Ensure that all changes are monitored, preventing scope creep and ensuring
that changes are documented and approved.
Relation to SCM: Many of these activities are similar to those used in software
configuration management (SCM), which involves tracking and controlling changes
in software during development.
5.2 Establishing the Groundwork
4. Initial List Creation: Begin with a list of stakeholders who can contribute to
requirements.
5. List Expansion: As stakeholders are contacted, ask them to suggest others who may
also provide valuable input.
o Examples include:
"Is there another source for the solution that you need?"
o A second set of questions aims to clarify the problem and allows stakeholders
to express their expectations and perceptions of a solution.
o Examples include:
"Can you describe the business environment in which the solution will
be used?"
Basic Guidelines:
1. Meetings Involvement:
3. Agenda:
o Suggest a formal agenda that covers important points while allowing for
informal discussions.
4. Facilitator:
5. Definition Mechanism:
o Use tools like worksheets, flip charts, electronic bulletin boards, chat rooms,
or virtual forums to capture information.
1. Inception:
o Initial meetings establish the scope of the problem and perceptions of the
solution.
o Developers and customers create a one- or two-page “product request.”
2. Meeting Preparation:
3. Attendee Preparation:
1. Objects:
o Control panel
o Smoke detectors
o Motion detectors
o Alarm
o Display
o PC
o Telephone numbers
o Telephone calls
2. Services:
Constraints:
Performance Criteria:
1. Normal Requirements:
o Definition: These are objectives and goals explicitly stated by the customer
during meetings.
2. Expected Requirements:
o Definition: These are implicit needs that the customer may not explicitly
mention because they are fundamental to the product.
3. Exciting Requirements:
o Satisfaction Level: Their presence delights users, although they may not have
been anticipated.
Use cases provide detailed descriptions of how the system will be used, outlining
interactions between users and the system.
o A document that outlines the need for the system and assesses its feasibility,
including economic, technical, and operational considerations.
5. Requirements List:
6. Usage Scenarios:
o A set of scenarios that illustrate how the system or product will be used
under different operating conditions, providing insights into user interactions
and workflows.
7. Prototypes:
Use Case Definition: A use case captures a contract that describes the behaviour of a
system in response to requests from one of its stakeholders (e.g., users, devices). It
tells a stylized story about how a user interacts with the system under specific
conditions.
Forms of Use Cases: The story of the use case can take various forms—narrative text,
task outlines, templates, or diagrams.
Actors in Use Cases
Actors Definition: Actors are external entities (people or devices) that interact with
the system and are not part of it.
Roles vs. Actors: A user can take on multiple roles in the system, but an actor
represents just one role.
Identifying Actors
Primary Actors: These actors interact directly with the system and gain the main
benefits from it. They perform the main tasks.
Secondary Actors: These support the primary actors in achieving the system’s goals
but do not engage directly or frequently.
Actors: Who are the primary and secondary actors? What are their goals?
Information Handling: What system information will be affected, and how will the
actor interact with the system in terms of acquiring, producing, or changing data?
External Changes: Will the actor inform the system about external environmental
changes?
Unexpected Changes: Does the actor wish to be notified about unexpected changes?
In developing the SafeHome security system, we define four actors involved in the
interactions: the homeowner (user), setup manager (often the homeowner in a different
role), sensors (devices attached to the system), and the monitoring and response subsystem
(the central monitoring station).
Detailed Use Case Template
For a more comprehensive understanding, we can further elaborate the use case using the
template suggested by Cockburn.
Goal in Context: To set the system to monitor sensors when leaving the house or
remaining inside.
Preconditions:
Trigger: The homeowner decides to "set" the system, turning on the alarm functions.
Scenario Steps:
4. Homeowner: Observes the red alarm light indicating that Safe Home has been
armed.
Exceptions:
o The homeowner checks all sensors to determine which are open and closes
them.
2. Incorrect Password:
o The control panel beeps once; the homeowner renters the correct password.
4. Stay Selected:
o The control panel beeps twice and lights the stay indicator; perimeter sensors
are activated.
5. Away Selected:
o The control panel beeps three times and lights the away indicator; all sensors
are activated.
Additional Information:
Negotiation is crucial for developing a project plan that addresses stakeholder needs while
accounting for real-world constraints such as time, personnel, and budget. Effective
negotiations aim for a “win-win” outcome, where:
Software teams work within realistic and achievable budgets and deadlines.
Achieving this balance requires careful negotiation, understanding that stakeholder needs
may conflict and that compromises are often necessary.
o Recognize who the primary stakeholders are for the system or subsystem.
Understanding who will be affected by or have input into the system is critical
for effective negotiation.
3. Necessity of Requirements:
o Are all requirements clear and free from ambiguity? Each requirement should
be bounded and easily understood to avoid misinterpretation.
5. Attribution of Requirements:
8. Testability:
1. Describe Customer Needs: Clearly outline what the customer requires from the
software.
2. Guide Software Design: Provide a foundation for creating a design for the software.
o Keep your attention on the requirements that are clear and relevant to the
problem or business area. Avoid getting caught up in too many details about
how the system will function.
2. Enhance Understanding:
o Each part of your requirements model should help clarify what the software
needs to do. It should give insights into the information the system will
handle, the functions it must perform, and how it will behave.
4. Minimize Coupling:
o Try to keep the connections between different parts of the system (like
classes and functions) as low as possible. If everything is too interconnected,
it can complicate things.
Business stakeholders can use it to check if their needs are being met.
6. Keep It Simple:
What are Analysis Patterns? Analysis patterns are commonly used solutions or
models that often come up in specific types of businesses or applications (like
banking or healthcare).
Benefits of Using Them: If these patterns are organized and categorized well, they
can be easily recognized and reused across projects. This speeds up the process of
creating the analysis model (a detailed understanding of what the software needs to
do) since you don’t have to start from scratch each time.
Why This Matters: Using these reusable patterns also makes it easier to implement
design patterns and other software components later on, which leads to faster
development and lower costs.
Domain Analysis
What is Domain Analysis? It’s a process that identifies and defines common
requirements for specific fields, such as aviation, video games, or healthcare, so
these requirements can be reused across multiple projects within the same field.
Goal of Domain Analysis: The main goal is to find or create reusable analysis classes
(blueprints for objects) and analysis patterns that work across various projects in the
same industry. This makes development faster and more efficient.
A use case is like a contract or agreement for how the system should behave when used by
an actor to achieve a specific goal. In simpler terms, it’s a detailed story about what happens
when someone uses the system for a particular purpose.
In this example, the SafeHome surveillance system includes these functions for a
homeowner actor:
Here’s a sample of a narrative for the function: Access Camera Surveillance via the Internet.
1. Narrative Version:
o After logging in, they select the "Surveillance" option to view cameras.
o They pick a specific camera or view all camera thumbnails and choose one.
o Use Case Title: Access camera surveillance via the Internet – display camera
views
o Actor: Homeowner
o Steps:
11. The system displays video output within the viewing window at one
frame per second.
An exception describes a situation that may cause the system to respond differently due to
an alternative chosen by the actor or a failure condition.
In this section, we’re looking at formal use cases—a structured, detailed way to define how
a user interacts with a system. While informal use cases (basic descriptions in plain
language) might be enough for simple tasks, formal use cases are helpful when a scenario is
complex or involves critical activities with multiple exceptions or error possibilities.
1. Goal in Context: Defines the purpose and scope of the use case, giving an overview
of what it aims to achieve.
2. Precondition: Specifies conditions that must be true before the use case starts, such
as the user being logged in.
3. Trigger: Identifies the event that starts the use case, like a user action or system
event.
4. Scenario: Details the specific sequence of actions performed by the actor (user) and
the system's responses.
5. Exceptions: Lists possible alternative paths, errors, or situations that could occur and
how the system should handle them.
Diagrammatic Representation
For complex use cases, a graphical use-case diagram can help clarify interactions. In the
Unified Modeling Language (UML), use-case diagrams represent each use case as an oval,
with lines connecting it to the actors involved. This makes it easier to visualize the flow of
actions.
Advantages: Formal use cases provide a clear, structured format for understanding
complex scenarios. They’re effective for modeling functional and behavioral
requirements and are useful in most software engineering contexts.
In requirements modeling, text-based descriptions like use cases can sometimes be limiting
because they don't always provide a quick and easy way to understand complex interactions.
For these cases, UML (Unified Modeling Language) graphical models can visually represent
processes, making them clearer and easier to follow.
Activity Diagrams
An activity diagram is one such UML model. It visually represents the steps within a
scenario, supplementing the information in a use case by showing how interactions flow
from one action to the next. It’s somewhat similar to a flowchart but includes extra UML
features. Here’s what the symbols in an activity diagram represent:
Arrows: Show the direction of flow from one activity to the next.
For instance, in the ACS-DCV (Access Camera Surveillance - Display Camera View) use case,
the activity diagram can add further detail, like indicating that a user has only a limited
number of attempts to enter the correct user ID and password. This restriction is shown by a
decision diamond labeled “Prompt for reentry,” indicating that the user can try a few times
before being locked out or redirected.
6.3.2 Swimlane Diagrams
A swimlane diagram is a variation of the activity diagram in UML that not only shows the
flow of activities but also visually assigns responsibilities across different actors or system
components (referred to as analysis classes). Each actor or component with responsibilities
in the process gets its own "swimlane," which is a vertical column similar to lanes in a
swimming pool. This helps clarify who performs each activity in a sequence, particularly
when multiple actors or classes are involved in a single use case.
1. Swimlanes: Each lane represents an actor or analysis class involved in the activity.
For example, in the SafeHome system use case, the swimlanes could include:
2. Activity Rectangles: These rectangles within each swimlane show actions taken by
that particular actor or class. If an action moves from one actor/class to another, the
flow moves across swimlanes.
3. Flow Arrows: Arrows indicate the direction of activity flow between actions, showing
how control passes between actors or classes. For instance, in SafeHome’s diagram:
o After reentry, the control returns to the Homeowner swimlane where they
perform another action.
4. Decision Points: Just like in activity diagrams, diamonds represent decisions (e.g.,
successful login or choosing to reenter information) and direct the flow to different
outcomes.
Swimlane diagrams clarify which parts of a system are responsible for each action, making it
easier to understand interdependencies between actors and components. They also help
ensure responsibilities are clear, which is especially useful for complex systems with multiple
actors or interfaces.
6.4 Data Modelling Concept
When developing software that requires handling complex data or interfacing with a
database, creating a data model is essential. A data model organizes the information
required by the software, detailing the structure, relationships, and attributes of data
objects within the system. This approach is particularly useful for complex applications
involving significant data processing or storage requirements.
2. Data Attributes: Each data object is characterized by a set of attributes that define its
properties. Attributes serve three main purposes:
o Reference Links: Attributes may also link to instances of other data objects,
forming relationships across the database.
3. relationships define the ways in which data objects interact or relate to each other
within a system. Understanding these connections is essential for building a cohesive
model that accurately represents the data’s real-world structure and behavior.
1. Object-Relationship Pairs: Each relationship connects two or more data objects, with
a specific context or purpose. For example, if we consider the data objects person
and car:
o A person owns a car: This relationship signifies that the person is the owner
of the car.
o A person is insured to drive a car: This relationship indicates that the person
has an insurance association with the car, allowing them to drive it.
Each relationship type adds a specific, contextual meaning to the connection, helping clarify
the roles and constraints on each data object within the application.
o Clarifying Ownership: For example, the arrow from person to car in the
"owns" relationship specifies that person has a stake or claim in the car.
o Reducing Ambiguity: Clearly indicating relationship direction helps avoid
misinterpretations, as it defines which object initiates or holds the
connection.
Classes and Objects: Classes define the blueprint for objects, which are instances of
classes.
Class Responsibility Collaborator (CRC) Models: These models help identify the
responsibilities of classes and their collaborations with other classes.
1. Examine Usage Scenarios: Start with the usage scenarios from the requirements
model. This helps contextualize the system's operation.
3. Create a Table: List the identified nouns in a table, noting synonyms. This
organization helps clarify which classes are essential for the solution.
External Entities: Systems, devices, or people that interact with the software (e.g.,
users, sensors).
Occurrences or Events: Specific actions within the system (e.g., transactions, alarms).
Roles: User roles that interact with the system (e.g., administrator, customer).
Organizational Units: Relevant groups within the context of the application (e.g.,
departments).
Places: Locations that provide context for system operations (e.g., warehouses).
1. Extracting Nouns and Verbs: The narrative describes various entities and actions
involved in the security function. Nouns represent potential classes, while verbs
indicate actions or operations.
2. Classifying Potential Classes: Each identified noun can be classified based on its role
in the system.
Further Evaluation: Each entry in the list is initially considered a potential class.
Further analysis is necessary to determine if it should be finalized as a class in the
system design.
Selection Characteristics
1. Retained Information: The class must retain information that is necessary for the
system's operation.
2. Needed Services: The class should have identifiable operations that can modify its
attributes.
3. Multiple Attributes: The class should have more than one significant attribute to
justify its existence as a separate class.
4. Common Attributes: The class should have a set of attributes that are applicable to
all instances of the class.
5. Common Operations: The class should have operations that apply to all instances of
the class.
6. Essential Requirements: Classes that represent external entities producing or
consuming information vital to the system should be included.
Attributes help clarify what each class represents and ensure that all relevant data is
captured effectively.
Importance of Attributes
Provide the necessary data that operations and interactions will manipulate.
Identifying Attributes
To develop a meaningful set of attributes for a class, you can follow these steps:
1. Study Use Cases: Examine the use cases related to the class to identify which data
items belong to it.
2. Identify Composite and Elementary Data Items: Determine the composite data
items that encapsulate multiple attributes, as well as any elementary attributes that
fully define the class.
3. Ask Key Questions: For each class, consider questions like:
o What data items define this class in the context of the system?
o Are there any nested relationships (e.g., classes containing other classes) that
affect attribute definitions?
For the System class in the SafeHome security function, the attributes can be organized into
categories based on their relevance:
Identification Information
o system ID
o system status
o delay time
o telephone number
Activation/Deactivation Information
o master password
o temporary password
Categories of Operations
3. Inquiry Operations: These operations check or return the current state of an object
without modifying it. Examples include:
1. Study the Processing Narrative or Use Case: Just like with attributes, you can look for
verbs that indicate operations. For instance, from the Safe Home processing
narrative, the verbs “assigned,” “programmed,” “armed,” and “disarmed” hint at
various operations related to the Sensor and System classes.
o From “sensor is assigned a number and type,” you can infer that the assign ()
operation belongs to the Sensor class.
For operations that require more detail, you can further decompose them into
suboperations. For example, the program () operation for the System class might encompass
several specific actions, such as:
Understanding how objects communicate is also vital for defining operations. Objects
interact by passing messages to one another, which can influence how operations are
defined.
1. Message Passing: This is a way for objects to communicate their state or request
actions from other objects.
Class Name: At the top of the card, write the name of the class.
Responsibilities: In the body of the card, list the responsibilities of the class on the
left side. Responsibilities include attributes and operations relevant to the class,
essentially anything the class knows or does.
Collaborators: On the right side, note the collaborators—other classes that provide
the information or functionality needed to fulfill the responsibilities of the class.
Class Categories
1. Entity Classes:
2. Boundary Classes:
o These classes create the user interface (e.g., interactive screens, printed
reports).
o Typically, controller classes are designed during the later stages of the design
activity.
o System intelligence refers to what the system knows and what it can do.
o Related information and behavior should reside within the same class to
achieve encapsulation.
o Encapsulation helps ensure that data and the processes manipulating it are
packaged as a cohesive unit
4. Localize Information:
o Related classes that exhibit the same behavior should share certain
responsibilities.
1. Definition of Collaborations:
o Each collaboration represents a contract between the client and the server,
where the client relies on the server to complete a task.
2. Example of Collaboration:
1. Is-Part-Of Relationship:
2. Has-Knowledge-Of Relationship:
3. Depends-Upon Relationship:
o This implies a dependency between classes that is not covered by the other
two relationships.
Associationss
2. They can have multiplicity constraints to define the number of objects involved in
the relationship:
o Wall uses "1..*" for WallSegment (one or more segments form a wall).
o Wall uses "0..*" for Window and Door (walls may contain zero or more of
each).
Dependencies
1. Dependencies indicate that one class relies on another for specific functionality.
o The <<access>> stereotype here signifies that access to the camera feed is
controlled (e.g., by password).
7.1 Requirements Modeling
1. Structured Analysis
Data and Processes: In structured analysis, data and processes are treated as
separate entities. This approach emphasizes how data objects are created,
manipulated, and transformed throughout the system.
Data Modeling: Data objects are modeled to define their attributes (properties or
characteristics) and relationships with other data objects.
Process Modeling: Processes that manipulate data objects are represented in a way
that illustrates how they transform data as it flows through the system. This might
involve data flow diagrams (DFDs).
Key Elements:
o Data Flow Models: Illustrate how data moves through the system and how
various processes affect that data.
o Control Flow Models: Show the sequence of operations that are performed
on data objects.
2. Object-Oriented Analysis
Class Modeling: Each class is defined with its attributes and behaviors (methods).
This model provides a clear view of the components of the system and how they
relate to each other.
Key Elements:
o Behavioral Models: Represent how objects behave and interact over time,
often using state diagrams and sequence diagrams to illustrate object
interactions.
Combining Approaches
While structured analysis and object-oriented analysis are distinct, the most effective
requirements modeling often involves a combination of both approaches.
Despite being considered somewhat outdated by some software engineers, data flow-
oriented modelling remains a widely utilized technique in requirements analysis. The data
flow diagram (DFD) is particularly effective for visualizing the flow of information and
processes within a system.
7.2.1. Creating a Data Flow Model
1. Level 0 DFD: Start with a high-level overview, representing the system as a single
bubble.
2. Identify Inputs/Outputs: Clearly denote primary inputs and outputs associated with
the system.
3. Refine Processes and Data: Begin isolating candidate processes, data objects, and
data stores for further detail in subsequent levels.
4. Meaningful Labels: Ensure all arrows (representing data flow) and bubbles
(representing processes) are labelled descriptively.
5. Maintain Flow Continuity: Keep the information flow consistent across different
levels of detail.
To illustrate the DFD's application, consider the Safe Home security system. The Level 0 DFD
represents the entire security function with primary external entities interacting with the
system.
Level 1 DFD:
The Level 0 DFD is refined into a Level 1 DFD, where the main processes are
identified through a “grammatical parse” of the use case narrative:
o Verbs in the narrative represent processes and become bubbles in the DFD.
Level 2 DFD:
Subsequent Levels: Each level dives deeper into the details, with each process
bubble being refined.
7.2.2 Creating a Control Flow Model
Control flow modeling is concerned with how events trigger actions within the system. To
identify potential candidate events for control flow modeling, consider the following
guidelines:
Interrupt Conditions: Document all interrupt conditions that may affect system
behavior.
Data Conditions: Recognize data conditions that might influence system operations.
Control Items from Parsing: Utilize the noun/verb parse from the processing
narrative to identify control items that could serve as inputs or outputs in the control
specification.
State Behavior: Define the states of the system, how each state is reached, and the
transitions between them.
Identify Omissions: Carefully review to ensure all potential pathways into or out of
states are considered.
7.2.3 The Control Specification
A control specification (CSPEC) describes system behavior at the reference level in two
primary ways: through a state diagram and a process activation table (PAT).
State Diagram
The state diagram provides a sequential specification of behavior, illustrating how the system
responds to various events. For example, in the SafeHome system:
The Idle state can transition to other states based on events such as reset, activation,
or power off.
The Monitoring System Status state changes the displayed messages and invokes
specific processes like monitorAndControlSystem.
Transitions out of the Monitoring System Status state may occur when the system is
deactivated (returning to Idle) or when a sensor is triggered (moving to the Acting On
Alarm state).
The PAT provides a complementary representation to the state diagram, focusing on which
processes will be invoked when specific events occur. This table acts as a guide for designers,
outlining the relationships between events and the processes (bubbles) in the flow model.
For instance, a PAT for the SafeHome software level 1 flow model specifies which processes
should be activated in response to specific events, serving as a framework for implementing
control logic.
7.2.4 The Process Specification
Narrative Text: A detailed description of the process, explaining its functionality and
purpose.
Program Design Language (PDL): A structured way to outline the algorithm and logic
of the process, often resembling pseudocode.
Tables: Any data that might assist in the understanding of the process.
UML Activity Diagrams: Visual representations that depict the flow of control or data
through the process.
By associating a PSPEC with each bubble in the flow model, you create a "mini-spec" that
can guide the development of the corresponding software component.
To illustrate how a PSPEC works, consider the process password transform for the SafeHome
security function. The PSPEC for this process might be structured as follows:
Purpose: The process password transform validates user input at the control panel.
Input: Receives a four-digit password from the interact with user function.
Procedure:
1. Evaluate Use Cases: Begin by thoroughly examining all use cases to understand the
sequence of interactions between actors and the system. Each use case should detail
how the system is expected to behave under various scenarios.
2. Identify Events: Determine the events that drive these interactions and understand
their relationships to specific objects in the system. An event is recognized not by the
information exchanged, but by the occurrence of that exchange.
3. Create Sequences: For each use case, develop a sequence that outlines the order of
events and interactions.
4. Build State Diagrams: Create state diagrams that illustrate how the system
transitions between various states in response to events.
5. Review the Behavioral Model: Verify the accuracy and consistency of the behavioral
model to ensure it aligns with the requirements and expectations outlined in the use
cases.
The use case serves as a key tool for identifying events that indicate information exchange
between the system and its actors. Each event marks a moment of interaction, which can
trigger further actions within the system.
Consider a simplified use case scenario for the SafeHome security function:
The system compares this password against the valid password stored.
If the password is incorrect, the control panel emits a beep and resets for another
input.
If the password is correct, the control panel awaits further action.
The underlined phrases in this scenario represent events. For instance, when the
homeowner uses the keypad, we can identify the following:
Actor: Homeowner
Information Exchanged: The four-digit password (though the actual digits are not
crucial for the behavioral model)
Impact of Events
Some events directly affect the flow of control within the use case, while others do not. For
example:
Password Entered: This event does not change the flow of control but indicates that
the homeowner has initiated an action.
Password Compared: This event impacts the control flow as it determines whether
the entered password matches the stored one.
Once events are identified, they must be allocated to the relevant objects. For example:
Generating Events: The Homeowner object generates the Password Entered event
when the password is entered.
In behavioral modeling, understanding how systems and their components change states is
essential. Two characterizations of states are important to consider:
1. State of Each Class: This refers to the status of attributes within individual classes as
the system performs its functions.
2. State of the System: This is the external observation of the system's overall state as it
operates.
Passive and Active States
Passive State: This represents the current values of an object's attributes at any given
moment. For instance, in a video game, the passive state of the Player class might
include attributes like position, orientation, and remaining magic wishes.
Behavioral Representations
1. State Diagrams for Analysis Classes: These UML diagrams represent the active states
of individual classes and the events (triggers) that lead to changes in those states.
Each arrow in the diagram signifies a transition between active states, with the labels
on the arrows indicating the triggering events.
For example, a state diagram for the ControlPanel object in the SafeHome security function
would show transitions such as:
o Reading State to Comparing State triggered by the event of entering a
password.
o Guard: A Boolean condition that must be met for the transition to occur (e.g.,
checking if the entered password consists of 4 digits).
o Action: Operations that occur concurrently with the transition (e.g., executing
validatePassword() to compare the input password with the stored one).
2. Sequence Diagrams: This type of diagram illustrates how events lead to interactions
between different objects over time. It captures the flow of control as events are
passed from one object to another.
o For instance, an initial event like system ready may trigger the Homeowner
object to enter a password, leading to further events like request lookup for
password verification.
Event 2: password entered → Homeowner passes this to the System for validation.
Event 3: request lookup → the System checks the password in the database and
returns a found or not found response to the ControlPanel.