CASE - Software Engineering Notes

advertisement
Everyone has heard the old saying about the
shoemaker's children: The shoemaker is so busy
making shoes for others that his children don't
have shoes of their own. Prior to the 1990s, many
software developers were the "shoemaker's
children." Although these technical professionals
built complex systems and products that
automated the work of others, they used very little
automation themselves.
Today, software engineers have their first new
pair of shoes—computer-aided software
engineering (CASE).
Computer Aided Systems
Engineering (CASE)
CASE is the application of computer technology to
systems development activities, techniques, and
methods.


COMPUTER-AIDED SOFTWARE ENGINEERING
(CASE)
The automation of step-by -step methodologies for
software and systems development
CASE tools automate or support one or more phases
of the SDLC to speed up development and improve
quality.

What Is a CASE Tool?
Since the early days of writing software, there has
been an awareness of the need for automated tools
to help the software developer. Initially the
concentration was on program support tools such as
translators, compilers, assemblers, macro
processors, and linkers and loaders. However, as
computers became more powerful and the software
that ran on them grew larger and more complex, the
range of support tools began to expand. In particular,
the use of interactive time-sharing systems for
software development encouraged the development
of program editors, debuggers, code analyzers.

A CASE tool is a computer-based product
aimed at supporting one or more software
engineering activities within a software
development process.








Computer-aided software engineering (CASE) is
the use of software tools to assist in the development
and maintenance of software. Tools used to assist in
this way are known as CASE Tools.
Some typical CASE tools are:
Code generation tools
Data modeling tools
UML
Refactoring tools
QVT or Model transformation Tools
Configuration management tools including revision
control

All aspects of the software development
lifecycle can be supported by software tools,
and so the use of tools from across the
spectrum can, arguably, be described as
CASE; from project management software
through tools for business and functional
analysis, system design, code storage,
compilers, translation tools, test software,
and so on.
Computer Aided
Systems Engineering
(CASE)


aims to improve quality of systems
focuses on automating structured techniques
– upper CASE tools
– lower CASE tools

relies on rigorous development methods
CASE Framework
Planning
Analysis
Design
Implementation
Support
CASE Tools



upper-CASE
lower-CASE
cross life cycle CASE
Upper CASE Tools

systems planning
– goals, objectives
– business models

systems analysis
– scope, boundaries
– detailed modeling
– prototyping
Lower CASE Tools

systems design
– technology models

systems implementation
– programmer workbench
– code generation

systems support
– reverse engineering
– REVERSE ENGINEERING
– The process of examining an existing application that has
characteristics that are similar to a desired application. Using the
existing application as a guide, the requirements for the new
application are defined, analyzed, and extracted all the way back to
specifications. From this point, the specifications are altered to
comply with any new customer requirements and the new
application is developed.
Existing System
Planning
Planned Project
Support
Analysis
Production
System
Business
Requirements
Implementation




Technical
Design
Design
Cross Life Cycle
CASE Tools
project management
process management
estimation
documentation
Automated process support (CASE)


Computer-aided software engineering
(CASE) is software to support software
development and evolution processes
Activity automation
– Graphical editors for system model development
– Data dictionary to manage design entities
– Graphical UI builder for user interface
construction
– Debuggers to support program fault finding
– Automated translators to generate new versions
of a program
Case technology

Case technology has led to significant
improvements in the software process
though not the order of magnitude
improvements that were once predicted
– Software engineering requires creative thought this is not readily automatable
– Software engineering is a team activity and, for
large projects, much time is spent in team
interactions. CASE technology does not really
support these
CASE classification


Classification helps us understand the different
types of CASE tools and their support for process
activities
Functional perspective
–

Process perspective
–

Tools are classified according to their specific function
Tools are classified according to process activities that are
supported
Integration perspective
–
Tools are classified according to their organisation into
integrated units
Functional tool classification
Tool type
Planning tools
Editing tools
Change ma nagement tools
Configuration management tools
Prototyping tools
Method-support tools
Language-processing tools
Program analysis tools
Testing tools
Debugging tools
Documentation tools
Re-engineering tools
Examples
PERT tools, estimation tools,
spreadsheets
Text editors, diagram editors, word
processors
Requirements traceability tools, change
control systems
Version management systems , system
building tools
Very high-level languages,
user in terface generators
Design editors, data dictionaries, code
generators
Compilers, interpreters
Cross reference generators, static
analysers, dynamic analysers
Test data generators, file comp arators
Interactive debugging systems
Page layout programs, ima ge editors
Cross-reference systems , program restructuring systems
Reengineering tools
Testing tools
Debugging tools
Program analysis tools
Language-processing
tools
Method support tools
Prototyping tools
Configuration
management tools
Change management tools
Documentation tools
Editing tools
Planning tools
Specification
Design
Implementation
Activity-based classification
Verification
and
Validation
CASE integration

Tools
– Support individual process tasks such as design
consistency checking, text editing, etc.

Workbenches
– Support a process phase such as specification
or design, Normally include a number of
integrated tools

Environments
– Support all or a substantial part of an entire
software process. Normally include several
integrated workbenches
Tools, workbenches, environments
CASE
technology
Tools
Editors
Compilers
Workbenches
File
comparators
Analysis and
design
Multi-method
workbenches
Integrated
environments
Programming
Single-method
workbenches
Environments
Process-centred
environments
Testing
General-purpose
workbenches
Language-specific
workbenches
CASE Repository

a developers database
– stores diagrams, specifications, code
– ensures standardization, consistency
– tracks people, data, process, network, technology

stored
– locally
– in work groups
– centrally
Computer-Aided System Engineering (CASE)
CASE tools: Software tools designed to help system
analyst complete development tasks
The CASE tool contains a database of information
called a repository
Information about models
Descriptions
Data definitions
References that link models together
Case tools can check the models to make sure they
are complete and follow diagramming rules
Also can check if the models are consistent
Adds a number of capabilities around the repository
CASE Approach (cont.)
A CASE tool repository contains all information about the system.
Types of CASE tools
Upper CASE tools
Support analyst during the analysis and design phases
Lower CASE tools
Support for implementation – e.g. generating programs
Tools may be general, or designed for specific
methodology (like for information engineering – TIs’
IEF, CoolTools)
Examples of CASE tools
Visual Analyst for creating traditional models
Called “integrated application development tool”
Rational Rose for object-oriented modeling
Based on UML standard for object orientation
Allows for reverse-engineering and code generation (can be
integrated with other tools like Visual C++ etc.)
“Round trip engineering” – synchronized updating
Types of CASE tools (cont.)
The CASE tool Visual Analyst showing a data flow diagram.
Types of CASE tools (cont.)
The visual modeling tool Rational Rose showing diagrams from the objectoriented approach
Types of CASE tools (cont.)
he round-trip engineering tool Together J showing a class diagram with
synchronized Java source code.
What CASE can do to help
Help to make analysis and design process
more rigorous and complete, to reduce bugs
later
Examples of functions in tools:
Provide support for diagramming (for analysis and design)
Provide support for checking consistency of design
Provide graphing support to help users visualize an existing or
proposed information system (e.g. Data flow diagrams)
Detail the processes of your system in a hierarchical structure
Produce executable applications based on your data flow
diagrams (which can be made from point and click placements
of icons)
Integrate specific methodologies into windowing environments
Evolution of Software Tools
sophistication
CASECode generators
CASEAnalysis +
Design
Debuggers
Compilers
Assemblers
Current Status of CASE
A number of commercial products
Some aspects (e.g. diagramming support)
are widely applicable and useful
Other features such as code generation are
more specific
CASE tools not so successful for generic code
generation
However, specific code generation is now being
used for things such as user interface design (e.g.
Visual C++ allows you to “draw” the interface and
it generates the code)
As ideas become successful often no longer
called CASE
Causes of failure (and symptoms) in software development
Requirements Analysis
No written requirements
Incompletely specified requirements
No user interface mock-up
No end –user involvement (can happen – may have
talked to clients BUT not users!)
Design
Lack of, or insufficient, design documents
Poorly specified data structures and file formats
Infrequent or no design reviews
Causes of failure (and symptoms) in software development
(cont.)
Implementation
Lack of, or insufficient coding standards
Infrequent or no code reviews
Poor in-line code documentation
Unit test and Integration
Insufficient module testing
Lack of proper or complete testing
Lack of an independent quality assurance group
Causes of failure (and symptoms) in software development
(cont.)
Beta Test Release
Complete lack of a beta test
Insufficient duration for beta test
Insufficient number of beta testers
Wrong beta testers selected
Maintenance
Too many bug reports
Fixing one bug introduces new bugs
Stats on Software Errors (large systems)
Most software errors originate in the Analysis
and
Design phases (65%)
Unfortunately, less than one-third of these
errors are caught before acceptance testing
begins
About 35% of errors occur during coding
Cost of fixing an error goes up the later it is
caught!
This is basis for emphasis in CASE on
Analysis and Design
CASE Facilities and Functions






graphics facilities
description facilities
prototyping
inquiry and reporting
quality assurance
decision support





documentation
transform
generators
data sharing
security, version control
housekeeping
Existing System
Planning
Planned Project
Support
Analysis
Production
System
Business
Requirements
Implementation

Technical
Design
Design
CASE Tool Integration
data integration
– file transfer, linkage, or central interface

presentation integration
– Windows, Motif, etc.

tool integration
– interoperation
CASE Workbench
Planning
Analysis
Design
Implementation
Support
Benefits of CASE





Increased Productivity
Improved Quality
Better Documentation
Reduced Lifetime Maintenance
Methods that really work
Costs of CASE




hardware and systems
software
training and consulting
justification for CASE
Implementation
Recommendations







get your methods in order
select right people
develop reasonable expectations
choose appropriate pilot
create support mechanism
learn from others
continually improve
CASE tools
1980s…
Upper CASE tools: support for the analysis and design
Lower CASE tools: support for construction and maintenance
Nowadays…
Integrated CASE tools:
Offer extensive life cycle coverage
CASE tools: Automated Diagram
Support
 Checks for syntactic correctness
 Data dictionary support
 Checks for consistency and completeness
 Navigation to linked diagrams
 Layering
 Requirements traceability
 Automatic report generation
 System simulation
 Performance analysis
CASE tools: Software construction
and maintenance
 Code generators
…Generate code from the design model…
Think of the advantages!
…may also generate database schemata…
 Maintenance tools
 Reverse Engineering
 Analysis of program code
CASE tools: Advantages
 Help standardization of notations and diagrams
 Help communication between development team members
 Automatically check the quality of the A&D models
 Reduction of time and effort
 Enhance reuse of models or models’ components
CASE tools: Disadvantages
• Limitations in flexibility of documentation
• May lead to restriction to the tool’s capabilities
• Major danger: completeness and syntactic correctness
does NOT mean compliance with requirements
• Costs associated with the use of the tool: purchase +
training
UML: History and
Brief Summary
Adoption of the OO paradigm … problematic
Emergence of UML as a methods’ unification approach
UML: An OMG standard since 1997…
Under way to become an ISO standard!
UML notation: a melding of graphical notations
from various sources.
+ other concepts…
UML: History and
Brief Summary
UML: A method or a notation?
Modeling method: techniques + guidelines + notations 
roadmap for the development of a model
Primarily a notation
However, there are attempts to describe OO methods
or methodological frameworks that would be able to employ UML.
•
•
The Rational Unified Process
The Object-oriented Process, Environment and Notation (OPEN)
Download