Chapter 3: Critical Systems
Chapter 3: Critical Systems
MODULE 2
Chapter 3: Critical Systems: A simple safety- critical system; System dependability; Availability
and reliability, safety, security.
Chapter 4 : Software Processes Models, Process iteration, Process activities, The Rational Unified
Process, Computer Aided Software Engineering.
NOTE: Please Refer To Text Book, This Is Only For Reference Purpose
Critical systems
• Systems on which people or businesses depend, where failure can lead to significant
economic losses, physical damage, or threats to human life.
1. Safety-Critical Systems:
o Failure may result in injury, loss of life, or serious environmental damage.
o Example: Control system for a chemical manufacturing plant.
2. Mission-Critical Systems:
o Failure may result in the failure of a goal-directed activity.
o Example: Navigational system for a spacecraft.
3. Business-Critical Systems:
o Failure may result in very high costs for the business.
o Example: Customer accounting system in a bank.
• Dependability:
• Critical systems use well-tried techniques due to their reliability and known strengths and
weaknesses.
• Expensive methods like formal mathematical techniques may be used to reduce testing
requirements and manage high verification costs (more than 50% of total development
costs).
• Socio-Technical Systems: Most critical systems involve human operators who monitor
and control the system.
• Operator Role: While operators can help recover from failures, they can also cause
problems if they make mistakes.
• There are three ‘system components’ where critical systems failures may occur
1. System Hardware:
o Failures due to design mistakes, manufacturing errors, or component life.
2. System Software:
o Failures due to specification, design, or implementation mistakes.
3. Human Operators:
o Human error is often the largest single cause of system failures.
• Interrelation of Failures: Hardware failures can lead to increased stress and mistakes
by operators, which may cause further software failures.
• Designers should consider the entire system, including hardware, software, and
operational processes.
• Designing components separately without considering interactions can lead to errors at
the interfaces between system parts.
• Ranges from control systems for devices and machinery to information and e-
commerce systems.
• Advanced software engineering techniques are often used in their development.
• Medical systems are relevant and illustrate why safety and reliability are crucial.
• To help people with diabetes by simulating the operation of the pancreas.
• Diabetes Overview:
• System Operation:
• Components:
o Micro-Sensor: Measures a blood parameter proportional to sugar levels.
o Pump Controller: Computes sugar levels and required insulin dosage.
o Miniaturized Pump: Delivers insulin via a permanently attached needle.
• Below Figure shows how it transforms blood sugar level input into pump control
commands
Figure 3.1 shows the components and organisation of the insulin pump and
Figure 3.2 is a data-flow model that illustrates how an input blood sugar level is
transformed to a sequence of pump control commands.
• Critical Consideration:
• Failure Risk: System failure could result in excessive insulin doses, potentially
threatening the user's life.
• Safety Focus: Preventing overdoses of insulin is crucial.
Users often do not fully trust personal computers due to these issues.
• Dependability:
1. Availability:
o Probability that the system will be up and running and able to deliver services
at any given time.
2. Reliability:
o Probability that the system will correctly deliver services as expected over a
given period.
3. Safety:
o Likelihood that the system will not cause damage to people or its environment.
4. Security:
o Likelihood that the system can resist accidental or deliberate intrusions.
• Ex:
• Security:
o Includes integrity (ensuring that the systems program and data are not
damaged) and confidentiality (ensuring that information can only be accessed
by people who are authorised).
• Reliability:
o Includes correctness (ensuring the system services are as specified), precision
(ensuring information is delivered at an appropriate level of detail), and
timeliness (ensuring that information is delivered when it is required).
• Other system properties can also be considered under the heading of dependability:
1. Repairability:
o Ability to repair the system quickly after failure.
o Diagnostic capability, access to failed components, and source code access
enhance repairability.
2. Maintainability:
o Ability to adapt software economically to new requirements with minimal risk
of introducing new errors.
3. Survivability:
o Ability to continue service while under attack or part of the system is disabled.
o Resistance to attack, attack recognition, and recovery from damage.
4. Error Tolerance:
o Extent to which the system is designed to handle user input errors.
o Detection and automatic correction of errors or user prompts for re-input.
• Trade-offs:
• Cost of Dependability:
• Reliability:
The probability of failure-free operation over a specified time in a given environment
for a specific purpose.
• Availability:
Probability that the system will be operational and able to deliver requested services
at a given time.
• Definitions:
1. Reliability:
o Probability of failure-free operation over a specified time in a given
environment for a specific purpose.
2. Availability:
o Probability that a system will be operational and able to deliver requested
services at a specific time.
• Human Perception:
o Example: A faulty car wiper system may be seen as unreliable in a wet
climate but not in a dry one. Driver in Seattle(wet climate) will probably be
more affected by this failure than a driver in Las Vegas (dry climate). The
Seattle driver’s perception will be that the system is unreliable, whereas the
driver in Las Vegas may never notice the problem
• Severity of Failure:
o More severe failures impact perceived reliability more than minor ones.
o For example, say a failure of initialisation in the engine management software
causes a car engine to cut out immediately after starting, but it operates
correctly after a restart that corrects the initialisation problem. This does not
affect the normal operation of the car, and many drivers would not think that a
repair was needed.
On contrast: Engine cutting out at high speed is more concerning than a start-
up issue fixed by a restart.
• Failure Types:
o Failure to provide a service, failure to meet specifications, or delivering
unsafe/insecure services.
• Faults vs. Errors vs. Failures:
o Fault: Characteristic in the system that can lead to errors (e.g., uninitialized
variable).
o Error: Erroneous system state leading to unexpected behavior.
o Failure: System does not deliver the service as expected.
• Figure 3.5 helps us identify three complementary approaches that are used to improve the
reliability of a system:
1. Fault Avoidance:
o Development techniques to minimize or trap mistakes before they lead to
system faults.
o Examples: Avoiding error-prone constructs such as pointers and the use of
static analysis to detect program anomalies
2. Fault Detection and Removal:
o Verification and validation techniques that increase the chances that faults will
be detected and removed before the system is used.
o Examples: Systematic testing and debugging.
3. Fault Tolerance:
o Ensuring faults do not lead to system errors or failures.
o Examples: Self-checking facilities, redundant modules.
• Faults in the code lead to failures when executed with certain inputs.
• Faults affecting frequently used code impact reliability more than those in rarely used
code.
• Users might avoid inputs that cause problems or work around known faults.
• Example: Avoiding features known to cause issues, like automatic numbering in
word processing.
• Removing faults in rarely used parts of software has minimal impact on overall
reliability.
• Many defects only cause issues after extensive usage.
• Users may adapt their behavior to avoid problems with known faults.
• Certain inputs or input combinations, depicted in the shaded ellipse in Figure 3.6, generate
erroneous outputs.
• The probability that, in a particular execution of the program, the system input will be a
member of the set of inputs that cause erroneous output.
3.4 Safety
• Safety-critical systems are systems where it is essential that operation is always safe. They
should never cause harm to people or the environment, even if the system fails.
• Examples:
• Hardware Control:
o Simpler to implement and analyze.
• Software Control:
o Essential for managing large numbers of sensors and actuators with complex
control laws.
o Example: Advanced, aerodynamically unstable military aircraft require
continual software-controlled adjustment of flight surfaces to avoid crashing.
• System reliability and system safety are related but separate dependability attributes.
• A safety-critical system should be reliable, meaning it conforms to its specification
and operates without failures. It may include fault-tolerant features to ensure
continuous service even if faults occur.
• However, fault-tolerant systems are not necessarily safe; the software might still
malfunction and lead to accidents.
1. Incomplete Specifications:
o Specifications may lack details on required behavior in critical situations.
o A high percentage of system malfunctions are due to specification errors
rather than design errors.
o Example: A study by Lutz (1993) found that difficulties with requirements are
a key cause of safety-related software errors persisting into integration and
testing.
2. Hardware Malfunctions:
• Specialised Vocabulary:
• key to assuring safety is to ensure either that accidents do not occur or that the
consequences of an accident are minimal. This can be achieved in three complementary
ways:
1. Hazard Avoidance:
o Design the system to avoid hazards.
o Example: A cutting system that requires pressing two separate buttons
simultaneously avoids the hazard of the operator’s hands being in the blade
pathway.
• Serious accidents often result from a combination of malfunctions, not single failures
(Perrow, 1984).
• Unanticipated combinations lead to interactions causing system failures.
• It is impossible to foresee all possible malfunction combinations in complex systems.
• Accidents are considered inevitable in complex systems.
• Software increases system complexity, potentially raising the probability of accidents.
• Monitors a wider range of conditions compared to electro-mechanical systems.
• Easier to adapt and update.
• Uses highly reliable and lightweight computer hardware.
• Provides sophisticated safety interlocks.
• Supports control strategies to minimize human exposure to hazardous environments.
• It's impossible to make a system completely safe.
• Society must weigh the benefits of advanced technologies against the risks of occasional
accidents.
• Decisions about safety involve social and political considerations regarding the allocation
of resources to reduce overall risk.
3.5 Security
• Definition of Security:
Security is the system's ability to protect itself from external attacks, whether accidental or
deliberate.
• Importance of Security:
• Internet Connectivity:
o Increased importance due to more systems being connected to the Internet.
• Examples of Attacks:
• Viruses
• Unauthorized use of system services
• Unauthorized modification of the system or its data
• Internet Worms:
o Original Internet worm (Spafford, 1989).
o Code Red worm (Berghel, 2001).
• Both exploited the lack of array bound checking in C programs.
• Attackers overwrote memory with code, allowing unauthorized access.
There are three types of damage that may be caused through external attack:
1. Denial of Service:
o The system is forced into a state where its normal services become
unavailable.
o Affects the system's availability.
2. Corruption of Programs or Data:
o Software components may be altered in an unauthorized way.
o Affects the system’s behavior, reliability, and safety.
o Severe damage may also impact system availability.
3. Disclosure of Confidential Information:
o Confidential information managed by the system may be exposed to
unauthorized people.
o This can affect the system's safety and may lead to further attacks impacting
availability or reliability
Terms related to security are discussed by Pfleeger (1997) and defined in Figure 3.9.
There are comparable approaches that may be used to assure the security of a system:
1. Vulnerability Avoidance:
o The system is designed so that vulnerabilities do not occur.
o Example: A system not connected to an external public network avoids
potential attacks.
2. Attack Detection and Neutralisation:
oThe system is designed to detect vulnerabilities and remove them before they
result in an exposure.
o Example: Using a virus checker to analyze and remove viruses from incoming
files.
3. Exposure Limitation:
o The consequences of a successful attack are minimized.
o Examples: Regular system backups and a configuration management policy to
recreate damaged software.
Software Processes
• A software process is a set of activities that leads to the production of a software
product.
Activities Involved
• Complexity: Software processes are complex and rely on human decision-making and
creativity.
• Limited Automation: Attempts to automate software processes have had limited
success.
• CASE Tools: Computer-aided software engineering (CASE) tools can support some
process activities but cannot fully automate creative design.
1. Software Specification:
o Define the functionality and constraints of the software.
2. Software Design and Implementation:
o Produce software to meet the specification.
3. Software Validation:
o Ensure the software does what the customer wants.
4. Software Evolution:
o Evolve the software to meet changing customer needs.
These three generic process models are widely used in current software engineering
practice:
• Formal approaches are particularly suited to domains with high safety, reliability, or
security requirements.
• Formal processes are not widely used outside of these specialised domains.
• They require specialized expertise and often do not offer significant cost or quality
advantages for most systems compared to other development approaches.
• The first published model derived from general system engineering processes (Royce,
1970).
• Known as the waterfall model or software life cycle.
• Principal Stages:
• Process Flow:
• Challenges:
• Advantages:
• Disadvantages:
• Usage:
1. Exploratory Development:
o Work with the customer to explore requirements and deliver a final system.
o Starts with understood parts of the system.
o Evolves by adding new features proposed by the customer.
2. Throwaway Prototyping:
o Understand the customer's requirements to develop a better requirements
definition.
o Focuses on experimenting with poorly understood customer requirements.
• Advantages:
• Often more effective than the waterfall approach for meeting immediate customer
needs.
• Specification develops incrementally, reflecting users' better understanding of their
problems.
• Use a mixed process incorporating features of both waterfall and evolutionary models.
o Develop a throwaway prototype using evolutionary approach to resolve
uncertainties in system specification.
o Reimplement the system using a more structured approach.
o Waterfall-based process for well-understood parts of the system.
o Exploratory programming approach for parts difficult to specify in advance,
such as the user interface.
• While the initial requirements specification stage and the validation stage are comparable
with other processes, the intermediate stages in a reuse-oriented process are different. These
stages are:
1. Component Analysis:
o Search for components that match the requirements specification.
o Components may not provide exact matches but offer partial functionality.
2. Requirements Modification:
o Analyze requirements with available component information.
o Modify requirements to fit the components.
o If modifications are not possible, re-enter component analysis for alternative
solutions.
3. System Design with Reuse:
o Design or reuse an existing framework for the system.
o Consider reusable components in the design.
o Design new software if required components are unavailable.
4. Development and Integration:
o Develop software that cannot be externally procured.
o Integrate reusable components and COTS systems to create the new system.
o Integration may be part of the development process rather than a separate
phase.
• Advantages:
• Disadvantages:
• Requirements Compromises: May lead to a system that does not fully meet user
needs.
• Control Over Evolution: Limited control over system evolution since new versions
of reusable components are not managed by the organization using them.
• Iterative Development:
• Incremental Delivery:
o Software is broken down into increments that are developed sequentially.
• Spiral Development:
o Development progresses in spirals from an initial outline to the final system.
• Waterfall Model:
o Requires customer commitment to a set of requirements before design.
o Changes require rework of requirements, design, and implementation.
o Separates design and implementation, leading to well-documented systems.
• Evolutionary Approach:
o Allows requirements and design decisions to be delayed.
o May result in poorly structured and difficult-to-maintain software.
• Incremental Delivery:
1. Customers do not have to wait until the entire system is delivered before they can gain
value from it. The first increment satisfies their most critical requirements so they can
use the software immediately.
2. Customers can use the early increments as prototypes and gain experience that
informs their requirements for later system increments.
3. There is a lower risk of overall project failure. Although problems may be
encountered in some increments, it is likely that some will be successfully delivered
to the customer.
4. As the highest priority services are delivered first, and later increments are integrated
with them, it is inevitable that the most important system services receive the most
testing. This means that customers are less likely to encounter software failures in the
most important parts of the system.
1. Objective Setting:
o Define specific objectives for the phase.
o Identify constraints and draw up a detailed management plan.
o Identify project risks and plan alternative strategies.
2. Risk Assessment and Reduction:
o Analyze identified project risks.
o Take steps to reduce risk, such as developing a prototype if requirements are
uncertain.
3. Development and Validation:
o Choose an appropriate development model based on risk evaluation.
o Options include evolutionary prototyping for user interface risks or formal
transformations for safety risks.
o The waterfall model may be used if integration is a major risk.
4. Planning:
o Review the project and decide whether to continue with another loop of the
spiral.
o If continuing, plan for the next phase.
• The main difference between the spiral model and other software process models is:
• Spiral Cycle:
Figure 4.5 Boehm’s spiral model of the software process (©IEEE, 1988)
• Specification
• Development
• Validation
• Evolution
• Waterfall Model:
• Evolutionary Development:
• Type of Software
• People Involved
• Organizational Structures
• The main goal is to provide an introduction to different ways of organizing these activities.
• Understanding and defining what services are required from the system and
identifying constraints on its operation and development.
• Critical stage of the software process; errors here lead to problems in system design
and implementation.
• Requirements Document:
1. Feasibility Study:
o Estimate whether user needs can be met with current technology.
o Assess cost-effectiveness and budget constraints.
o Should be relatively cheap and quick; informs the decision to proceed.
2. Requirements Elicitation and Analysis:
o Derive system requirements through observation, discussions, and task
analysis.
o May involve developing system models and prototypes.
3. Requirements Specification:
o Translate gathered information into a requirements document.
o Includes:
▪ User Requirements: Abstract statements for customers and end-users.
▪ System Requirements: Detailed description of functionality.
4. Requirements Validation:
o Check for realism, consistency, and completeness.
o Identify and correct errors in the requirements document.
Software Design:
• Design process may involve developing several models of the system at different
levels of abstraction. As a design is decomposed, errors and omissions in earlier
stages are discovered.
• These feedbacks allow earlier design models to be improved.
• Outputs of each design activity, becoming more detailed over time.
o Abstract or formal, clarifying requirements.
o includes detailed algorithms and data structures.
1. Architectural Design:
o Identify and document sub-systems and their relationships.
2. Abstract Specification:
o Abstract specifications of its services and the constraints for each sub-system
to operate are produced.
3. Interface Design:
o Design and document the interfaces between sub-systems.
o Ensure interfaces are unambiguous, using formal specification methods if
needed .
4. Component Design:
o Allocate services to components.
o Interfaces of these components are designed.
5. Data Structure Design:
o The data structures used in the system implementation are designed in detail
and specified.
6. Algorithm Design:
o Design and specify algorithms used to provide services in detail.
→ The design process is iterative and involves feedback and refinement. Starting with
abstract specifications and progressing to detailed designs, it includes architectural,
interface, component, data structure, and algorithm design activities.
A general model of the design process and real, practical processes may adapt it in different
ways. Possible adaptations are:
1. The last two stages of design—data structure and algorithm design—may be delayed until
the implementation process.
2. If an exploratory approach to design is used, the system interfaces may be designed after
the data structures have been specified.
3. The abstract specification stage may be skipped, although it is usually an essential part of
critical systems design.
Agile Methods:
o Outputs of the design process are represented in the program code rather than
separate specification documents.
o After designing the system architecture, later stages of design are incremental
and represented as program code.
Structured Methods:
• Includes: Design process model, notations, report formats, rules, and design
guidelines.
Supported Models:
1. Object Model: Shows the object classes used in the system and their dependencies.
2. Sequence Model: Shows how objects interact during system execution.
3. State Transition Model: Shows system states and triggers for transitions between
states.
4. Structural Model: Documents the system components and their aggregations.
5. Data Flow Model: Models the system using data transformations. This is less
common in object-oriented methods but still used in real-time and business system
design.
Program Development:
• The development of a program to implement the system follows naturally from the
system design processes.
• For safety-critical systems, detailed design usually precedes implementation.
• More commonly, later stages of design and program development are interleaved.
• CASE tools may be used to generate a skeleton program from a design. This includes
code to define and implement interfaces; developers often only need to add details of
the operation of each program component.
Programming Practices:
• Programmers normally carry out some testing of the code they have developed,
revealing program defects that must be removed is called debugging.
• Defect Testing: Establishes the existence of defects.
• Debugging: Concerned with locating and correcting these defects.
• Defects in the code must be located, and the program must be modified to meet its
requirements.
• Testing must be repeated to ensure that changes have been made correctly.
• Debugging is part of both software development and software testing.
• Generate hypotheses about the observable behavior of the program and test these
hypotheses to find the fault causing the output anomaly.
• Testing hypotheses may involve:
o Tracing the program code manually.
o Writing new test cases to localize the problem.
o Using interactive debugging tools that show intermediate values of program
variables and a trace of the statements executed to aid in the debugging
process.
• To show that a system conforms to its specification and meets the expectations of the
customer.
• Involves: Checking processes such as inspections and reviews at each stage of the
software process from user requirements definition to program development.
• Costs: The majority of validation costs are incurred after implementation when the
operational system is tested.
Testing Process:
• Not Monolithic: Except for small programs, systems should not be tested as a single,
monolithic unit.
• As defects are discovered, the program must be debugged, which may require repeating
other stages in the testing process.
• Errors in program components may come to light during system testing.
• The process is iterative with feedback from later stages affecting earlier parts of the
process.
• Normally, component development and testing are interleaved.
• Programmers create their own test data and incrementally test the code as it is developed.
• This is economically sensible as the programmer knows the component best and is
therefore the best person to generate test cases.
• If an incremental approach is used, each increment should be tested as it is developed.
• Tests should be based on the requirements for that increment.
• In extreme programming, tests are developed along with the requirements before
development starts.
• This approach helps testers and developers understand the requirements and ensure no
delays in creating test cases.
Acceptance Testing:
• Alpha Testing:
o Acceptance testing is sometimes called alpha testing.
o Custom systems are developed for a single client.
o The alpha testing process continues until the system developer and the client
agree that the delivered system is an acceptable implementation of the system
requirements.
o After this feedback, the system is modified and released either for further beta
testing or for general sale.
o The flexibility of software systems is one of the main reasons why more and
more software is being incorporated into large, complex systems.
o Once a decision has been made to procure hardware, it is very expensive to
make changes to the hardware design.
o However, changes can be made to software at any time during or after the
system development.
o Even extensive changes are still much cheaper than corresponding changes to
system hardware.
• Historical Split:
o Historically, there has always been a split between the process of software
development and the process of software evolution (software maintenance).
o Software development is seen as a creative activity where a software system is
developed from an initial concept through to a working system.
o Software maintenance is sometimes thought of as dull and uninteresting.
o Although the costs of 'maintenance' are often several times the initial
development costs, maintenance processes are sometimes considered less
challenging than original software development.
• Continuum of Development and Maintenance:
o The distinction between development and maintenance is becoming
increasingly irrelevant.
o Few software systems are now completely new systems, making it more
sensible to see development and maintenance as a continuum.
o It is more realistic to think of software engineering as an evolutionary process
(Figure 4.11) where software is continually changed over its lifetime in
response to changing requirements and customer needs.
• The Rational Unified Process (RUP) is a modern process model derived from work on
the UML and the Unified Software Development Process (Rumbaugh, et al., 1999b).
• RUP is a hybrid process model that combines elements from all generic process
models, supports iteration, and illustrates good practice in specification and design.
The RUP recognizes that conventional process models present a single view of the
process. In contrast, the RUP is normally described from three perspectives:
1. Dynamic Perspective:
o Shows the phases of the model over time.
2. Static Perspective:
o Shows the process activities that are enacted.
3. Practice Perspective:
o Suggests good practices to be used during the process.
• Most descriptions of RUP combine the static and dynamic perspectives in a single
diagram, which can make the process harder to understand. Therefore, separate
descriptions of each perspective are used.
Phases of RUP:
1. Inception:
o Goal: Establish a business case for the system.
o Identify all external entities (people and systems) that will interact with the
system and define these interactions.
o Assess the contribution of the system to the business. If this contribution is
minor, the project may be cancelled after this phase.
2. Elaboration:
o Goals:
▪ Develop an understanding of the problem domain.
▪ Establish an architectural framework for the system.
▪ Develop the project plan and identify key project risks.
o Completion:
▪ Requirements model for the system (UML use cases specified).
▪ Architectural description.
▪ Development plan for the software.
3. Construction:
o Concerned with: System design, programming, and testing.
o Parts of the system are developed in parallel and integrated during this phase.
o Completion:
▪ A working software system and associated documentation that is ready
for delivery to users.
4. Transition:
o Focus: Moving the system from the development community to the user
community and making it work in a real environment.
o This phase is often ignored in other software process models but is expensive
and sometimes problematic.
o Completion:
▪ A documented software system that is working correctly in its
operational environment.
• Each phase may be enacted in an iterative way with results developed incrementally.
• The entire set of phases may also be enacted incrementally, with a looping arrow from
Transition to Inception indicating this iterative nature (ref Figure 4.12)
• Focus: The activities that take place during the development process, called
workflows in the RUP description.
• Core Process Workflows:
o Six core process workflows are identified.
o Three core supporting workflows.
• The workflow description is oriented around associated UML models as RUP was
designed in conjunction with the UML—an object-oriented modelling language.
• Core Engineering and Support Workflows: Described in Figure 4.13.
• Advantage:
o Phases of the development process are not associated with specific workflows.
o In principle, all RUP workflows may be active at all stages of the process.
o Most effort will likely be spent on workflows such as business modelling and
requirements in the early phases, and on testing and deployment in the later
phases.
• The practice perspective on the RUP describes good software engineering practices
that are recommended for use in systems development.
RUP usually is :
• Improvements:
o CASE technology is available for most routine activities in the software
process.
o It has led to some improvements in software quality and productivity, though
less than early predictions suggested.
o Early advocates predicted orders of magnitude improvement with integrated
CASE environments.
o Actual improvements achieved are of the order of 40% (Huff, 1992).
• The improvements from the use of CASE are limited by two factors:
• CASE technology is now mature, with CASE tools and workbenches available from a
wide range of suppliers.
• Rather than focusing on specific tools, an overview of tools is provided, with further
discussion on specific support in other chapters.
• Links to additional material on CASE and CASE tool suppliers are available on the web
pages.
Classification Perspectives:
1. Functional Perspective:
o CASE tools are classified according to their specific function.
2. Process Perspective:
o Tools are classified according to the process activities that they support.
3. Integration Perspective:
o CASE tools are classified according to how they are organised into integrated
units that provide support for one or more process activities.
• Figure 4.14:
o Classifies CASE tools according to function.
• Figure 4.15:
o Presents an alternative classification of CASE tools.
o Shows the process phases supported by various types of CASE tools.
• Tools for planning and estimating, text editing, document preparation and configuration
management may be used throughout the software process.
Figure 4.16:
Note:
• Boundaries between classes can be blurred. Tools may offer support for different
activities or embed multiple functions.
o Example: Word processors may include diagram editors.
o CASE workbenches for design may also support programming and testing,
resembling environments rather than specialized workbenches.
• Classification helps understand the extent of process support a tool provides, although
positioning a product within a classification can be challenging.