Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 18

Imp Computer Aided Software Engineering

(CASE) Tools:
Computer Aided Software Engineering (CASE) tool refer to
automated tools that are used for software development activities. CASE
helps in development, verification, maintenance and generation of
processes and artifacts.

These tools have great importance when complexity of processes and


artifacts become high.

Computer Aided Software Engineering (CASE) tools (software programs)


support human programmers with the difficulty of processes and artifacts
of software engineering. They help in synthesis, analysis, modeling,
documentation, coding etc.

Characteristics of Computer Aided Software Engineering


Tools 
1) Standard Methodology : 
A CASE tool should support standard software development methodologies
and modelling techniques. Presently, CASE tools use UML.

2) Flexibility : 
A CASE tool must provide flexibility and options to the user for editors
and other tools.

3) Strong Integration : 
CASE tools must be integrated with all stages of software development.
This means that if a change is made in a model, it must reflect in the code
documentation and all related design. Hence, this offers an organised
environment for software generation.

4) Integration with Testing Software : 


CASE tools should provide interfaces for automatic testing tools. This helps
in regression and other testing software's under changing conditions.

5) Support for Reverse Engineering :


CASE tools should be as that it can create complex models from existing
code.

6) Online Help :
CASE tools offer online tutorials.

Architecture of Computer Aided Software Engineering


(CASE) Environment

The below mentioned architectural components are part of a CASE tool :


1. A database for storing information.
2. An object management system for managing variations made to the
information.
3. A tools control mechanism for coordinating the use of the CASE tools.
4. A user interface for establishing a consistent pathway between the
tools and user actions.

1) User Interface Layer : 


It is made up of an interface toolkit that is standardized. It implements a
common protocol which is used for presentation. The components of the
interface are a library which contains display objects and software that
facilitates management of interface between human and computer. With
the help of these two components the individual CASE tools and
components can communicate with each other consistently. The tool access
mechanism, use of mouse and keyboard, menu names, object names, icons
and screen layout are described in the presentation tool.

2) Tools Layer : 
Along with the CASE tools a set of services to manage the tools are also
included The behavior of the tools within the environment is controlled by
the Tools Management Services (TMS). TMS carries out multitask
communication and synchronization in case multitasking is performed by
executing multiple tools at a time. This is done by gathering metrics on the
usage of the tools, coordinating the information flow between the
repository and management system to the tools. The auditing and security
functions are also completed by it.

3) Object Management Layer (OML) : 


The configuration management tasks are performed by it. A mechanism
that enables in tool incorporation is the essence of the software that is
present in this layer of the framework architecture. Each case tool has been
plugged into the object management layer. The OML and the CASE
repository works in unison to provide integration services. The tools are
coupled with the repository by this set of standard modules. Apart from all
these functions, the OML also support change control, status accounting
and audits. Configuration management services such as the task of
classifying those configuration objects that perform version control are also
executed by it.

4) Shared Repository Layer : 


It is made up of those access control functions with the help of which the
object management layer interacts with the CASE database that is present
in this layer. Shared repository layers and object management helps in
attaining data integration.
Advantages of Computer Aided Software Engineering Tools

Though it is possible to achieve benefits if CASE tools are isolated, a great


number of benefits can be obtained from the CASE environment. Following
are the advantages of CASE tool :
 The process system has an effective and longer operational life.
 The produced system fulfills the user's requirements more efficiently.
 The documentation of the produced system is tremendous.
 Requirement of the support in the produced system is very low.
 More flexible systems are produced.

Disadvantages of Computer Aided Software Engineering Tools

CASE Tools has the following disadvantages : 


 The systems that are produced primarily require great cost to maintain and
build.
 It requires more perfect and extensive definition of the user's needs.
 Customization is difficult.
 Trained maintenance staffs are needed. 
 Difficulty is encountered while using with present systems.
Components of CASE Tools
CASE tools can be broadly divided into the following parts based on their use at a
particular SDLC stage:

 Central Repository - CASE tools require a central repository, which can


serve as a source of common, integrated and consistent information. Central
repository is a central place of storage where product specifications,
requirement documents, related reports and diagrams, other useful
information regarding management is stored. Central repository also serves as
data dictionary.
 Upper Case Tools - Upper CASE tools are used in planning, analysis and
design stages of SDLC.
 Lower Case Tools - Lower CASE tools are used in implementation, testing
and maintenance.
 Integrated Case Tools - Integrated CASE tools are helpful in all the stages of
SDLC, from Requirement gathering to Testing and documentation.

Case Tools Types


Now we briefly go through various CASE tools
Diagram tools
These tools are used to represent system components, data and control flow among
various software components and system structure in a graphical form. For example,
Flow Chart Maker tool for creating state-of-the-art flowcharts.
Process Modeling Tools
Process modeling is method to create software process model, which is used to
develop the software. Process modeling tools help the managers to choose a
process model or modify it as per the requirement of software product. For example,
EPF Composer
Project Management Tools
These tools are used for project planning, cost and effort estimation, project
scheduling and resource planning. Managers have to strictly comply project
execution with every mentioned step in software project management. Project
management tools help in storing and sharing project information in real-time
throughout the organization. For example, Creative Pro Office, Trac Project,
Basecamp.
Documentation Tools
Documentation in a software project starts prior to the software process, goes
throughout all phases of SDLC and after the completion of the project.
Documentation tools generate documents for technical users and end users.
Technical users are mostly in-house professionals of the development team who
refer to system manual, reference manual, training manual, installation manuals etc.
The end user documents describe the functioning and how-to of the system such as
user manual. For example, Doxygen, DrExplain, Adobe RoboHelp for
documentation.
Analysis Tools
These tools help to gather requirements, automatically check for any inconsistency,
inaccuracy in the diagrams, data redundancies or erroneous omissions. For
example, Accept 360, Accompa, CaseComplete for requirement analysis, Visible
Analyst for total analysis.
Design Tools
These tools help software designers to design the block structure of the software,
which may further be broken down in smaller modules using refinement techniques.
These tools provides detailing of each module and interconnections among modules.
For example, Animated Software Design
Configuration Management Tools
An instance of software is released under one version. Configuration Management
tools deal with –

 Version and revision management


 Baseline configuration management
 Change control management
CASE tools help in this by automatic tracking, version management and release
management. For example, Fossil, Git, Accu REV.

Change Control Tools


These tools are considered as a part of configuration management tools. They deal
with changes made to the software after its baseline is fixed or when the software is
first released. CASE tools automate change tracking, file management, code
management and more. It also helps in enforcing change policy of the organization.
Programming Tools
These tools consist of programming environments like IDE (Integrated Development
Environment), in-built modules library and simulation tools. These tools provide
comprehensive aid in building software product and include features for simulation
and testing. For example, Cscope to search code in C, Eclipse.
Prototyping Tools
Software prototype is simulated version of the intended software product. Prototype
provides initial look and feel of the product and simulates few aspect of actual
product.
Prototyping CASE tools essentially come with graphical libraries. They can create
hardware independent user interfaces and design. These tools help us to build rapid
prototypes based on existing information. In addition, they provide simulation of
software prototype. For example, Serena prototype composer, Mockup Builder.
Web Development Tools
These tools assist in designing web pages with all allied elements like forms, text,
script, graphic and so on. Web tools also provide live preview of what is being
developed and how will it look after completion. For example, Fontello, Adobe Edge
Inspect, Foundation 3, Brackets.
Quality Assurance Tools
Quality assurance in a software organization is monitoring the engineering process
and methods adopted to develop the software product in order to ensure
conformance of quality as per organization standards. QA tools consist of
configuration and change control tools and software testing tools. For example,
SoapTest, AppsWatch, JMeter.
Maintenance Tools
Software maintenance includes modifications in the software product after it is
delivered. Automatic logging and error reporting techniques, automatic error ticket
generation and root cause Analysis are few CASE tools, which help software
organization in maintenance phase of SDLC. For example, Bugzilla for defect
tracking, HP Quality Center.

Software Engineering | Regression Testing


 
Regression Testing is the process of testing the modified parts of the
code and the parts that might get affected due to the modifications to
ensure that no new errors have been introduced in the software after
the modifications have been made.

When to do regression testing


When a new functionality is added to the system and the code has been
modified to absorb and integrate that functionality with the existing code.

When some defect has been identified in the software and the code is
debugged to fix it.

When the code is modified to optimize its working.


Process of Regression testing:

Firstly, whenever we make some changes to the source code for any
reasons like adding new functionality, optimization, etc. then our program
when executed fails in the previously designed test suite for obvious
reasons. After the failure, the source code is debugged in order to identify
the bugs in the program. After identification of the bugs in the source code,
appropriate modifications are made. Then appropriate test cases are
selected from the already existing test suite which covers all the modified
and affected parts of the source code. We can add new test cases if
required. In the end regression testing is performed using the selected test
cases.

Tools for regression testing: In regression testing, we generally select the


test cases form the existing test suite itself and hence, we need not to
compute their expected output and it can be easily automated due to this
reason. Automating the process of regression testing will be very much
effective and time saving.
Most commonly used tools for regression testing are:
 Selenium

 WATIR (Web Application Testing In Ruby)
 QTP (Quick Test Professional)
 RFT (Rational Functional Tester)
 Winrunner
 Silktest

Advantages of Regression Testing:


 It ensures that no new bugs has been introduced after adding new
functionalities to the system.
 As most of the test cases used in Regression Testing are selected from
the existing test suite and we already know their expected outputs.
Hence, it can be easily automated by the automated tools.
 It helps to maintain the quality of the source code.

Disadvantages of Regression Testing:


 It can be time and resource consuming if automated tools are not used.
 It is required even after very small changes in the code.
What is Risk
"Tomorrow problems are today's risk." Hence, a clear definition of a "risk" is a
problem that could cause some loss or threaten the progress of the project, but
which has not happened yet.

Risk Management
A software project can be concerned with a large variety of risks. In order to be adept
to systematically identify the significant risks which might affect a software project, it
is essential to classify risks into different classes. The project manager can then check
which risks from each class are relevant to the project.

There are three main classifications of risks which can affect a software project:

1. Project risks
2. Technical risks
3. Business risks

1. Project risks: Project risks concern differ forms of budgetary, schedule, personnel,


resource, and customer-related problems. A vital project risk is schedule slippage.
Since the software is intangible, it is very tough to monitor and control a software
project. It is very tough to control something which cannot be identified. For any
manufacturing program, such as the manufacturing of cars, the plan executive can
recognize the product taking shape.

2. Technical risks: Technical risks concern potential method, implementation,


interfacing, testing, and maintenance issue. It also consists of an ambiguous
specification, incomplete specification, changing specification, technical uncertainty,
and technical obsolescence. Most technical risks appear due to the development
team's insufficient knowledge about the project.

3. Business risks: This type of risks contain risks of building an excellent product that
no one need, losing budgetary or personnel commitments, etc.

Software Metrics
A software metric is a measure of software characteristics which are measurable or
countable.

Software metrics are valuable for many reasons, including measuring software performance,
planning work items, measuring productivity, and many other uses.

Within the software development process, many metrics are that are all connected. Software
metrics are similar to the four functions of management: Planning, Organization, Control, or
Improvement.

Software metrics can be classified into two types as follows:

1-Product Metrics: These are the measures of various characteristics of the software


product. The two important software characteristics are:

1. Size and complexity of software.


2. Quality and reliability of software.

These metrics can be computed for different stages of SDLC.

2-Process Metrics: These are the measures of various characteristics of the software


development process. For example, the efficiency of fault detection. They are used to
measure the characteristics of methods, techniques, and tools that are used for
developing software.
Types of Metrics
Internal metrics: Internal metrics are the metrics used for measuring properties that
are viewed to be of greater importance to a software developer. For example, Lines
of Code (LOC) measure.

External metrics: External metrics are the metrics used for measuring properties that
are viewed to be of greater importance to the user, e.g., portability, reliability,
functionality, usability, etc.

Hybrid metrics: Hybrid metrics are the metrics that combine product, process, and
resource metrics. For example, cost per FP where FP stands for Function Point Metric.

Project metrics: Project metrics are the metrics used by the project manager to
check the project's progress. Data from the past projects are used to collect various
metrics, like time and cost; these estimates are used as a base of new software. Note
that as the project proceeds, the project manager will check its progress from time-
to-time and will compare the effort, cost, and time with the original effort, cost and
time. Also understand that these metrics are used to decrease the development
costs, time efforts and risks. The project quality can also be improved. As quality
improves, the number of errors and time, as well as cost required, is also reduced.

Advantage of Software Metrics


Comparative study of various design methodology of software systems.

For analysis, comparison, and critical study of different programming language


concerning their characteristics.

In comparing and evaluating the capabilities and productivity of people involved in


software development.

In the preparation of software quality specifications.

In the verification of compliance of software systems requirements and specifications.

In making inference about the effort to be put in the design and development of the
software systems.

In getting an idea about the complexity of the code.

In taking decisions regarding further division of a complex module is to be done or


not.

In guiding resource manager for their proper utilization.

In comparison and making design tradeoffs between software development and


maintenance cost.

In providing feedback to software managers about the progress and quality during
various phases of the software development life cycle.

In the allocation of testing resources for testing the code.

Disadvantage of Software Metrics


The application of software metrics is not always easy, and in some cases, it is
difficult and costly.

The verification and justification of software metrics are based on historical/empirical


data whose validity is difficult to verify.
These are useful for managing software products but not for evaluating the
performance of the technical staff.

The definition and derivation of Software metrics are usually based on assuming
which are not standardized and may depend upon tools available and working
environment.

Modularization

Modularization is a technique to divide a software system into multiple


discrete and independent modules, which are expected to be capable of
carrying out task(s) independently. These modules may work as basic
constructs for the entire software.

Advantage of modularization:
 Smaller components are easier to maintain
 Program can be divided based on functional aspects
 Desired level of abstraction can be brought in the program
 Components with high cohesion can be re-used again
 Concurrent execution can be made possible
 Desired from security aspect
Cohesion
Cohesion is a measure of the degree to which the elements of the module are functionally
related. It is the degree to which all elements directed towards performing a single task are
contained in the component. Basically, cohesion is the internal glue that keeps the module
together. A good software design will have high cohesion.
The degree in which elements of a module are functionally related to each other.
Cohesion is a glue that holds a module together.
In the module High cohesion is desired.
Higher cohesion => lower Coupling
There are seven types of cohesion
1. Functional cohesion
If two operations present within a module perform the same functionality task or
they are part of the same purpose.
2.Sequential cohesion
An element outputs some data that becomes the input for other element, i.e.,
data flow between the parts.
3.Communicational cohesion
Two elements operate on the same input data or contribute towards the same
output data.
Each element effect each other.
4.Procedural cohesion
When elements of module are grouped together, which are executed
sequentially in order to perform a task,
5.Temporal Cohesion
The elements are related by their timing involved.
6.Logical cohesion
The elements are logically related and not functionally. Ex- A component reads
inputs from tape, disk, and network.
7.Co-incidental cohesion
The elements are not related(unrelated). The elements have no conceptual
relationship other than location in source code.

Coupling
Coupling is the measure of the degree of interdependence between the modules. A good
software will have low coupling.

There are five levels of coupling


 Content coupling - When a module can directly access or modify or refer to
the content of another module, it is called content level coupling.
 Common coupling- When multiple modules have read and write access to
some global data, it is called common or global coupling.
 Control coupling- Two modules are called control-coupled if one of them
decides the function of the other module or changes its flow of execution.
 Stamp coupling- When multiple modules share common data structure and
work on different part of it, it is called stamp coupling.
 Data coupling- Data coupling is when two modules interact with each other
by means of passing data (as parameter). If a module passes data structure
as parameter, then the receiving module should use all its components.
Requirements Elicitation:
Requirements elicitation is the process of gathering and defining the
requirements for a software system. 
It is also know as Requirement gathering .
Requirements elicitation Methods:

1. Interviews
2. Brainstorming Sessions
3. Facilitated Application Specification Technique (FAST)
4. Quality Function Deployment (QFD)
5. Use Case Approach

1. Interviews: 
Objective of conducting an interview is to understand the customer’s
expectations from the software. 
It is impossible to interview every stakeholder hence representatives from
groups are selected based on their expertise and credibility. 
Interviews maybe be open-ended or structured. 
1. In open-ended interviews there is no pre-set agenda. Context free
questions may be asked to understand the problem.
2. In structured interview, agenda of fairly open questions is prepared.
Sometimes a proper questionnaire is designed for the interview.
2. Brainstorming Sessions: 
 It is a group technique
 It is intended to generate lots of new ideas hence providing a platform to
share views
 A highly trained facilitator is required to handle group bias and group
conflicts.
 Every idea is documented so that everyone can see it.
 Finally, a document is prepared which consists of the list of requirements
and their priority if possible.

3. Facilitated Application Specification Technique: 


It’s objective is to bridge the expectation gap – difference between what the
developers think they are supposed to build and what customers think they
are going to get. 
A team oriented approach is developed for requirements gathering. 
Each attendee is asked to make a list of objects that are- 
1. Part of the environment that surrounds the system
2. Produced by the system
3. Used by the system
Each participant prepares his/her list, different lists are then combined,
redundant entries are eliminated, team is divided into smaller sub-teams to
develop mini-specifications and finally a draft of specifications is written
down using all the inputs from the meeting. 

4. Quality Function Deployment: 


In this technique customer satisfaction is of prime concern, hence it
emphasizes on the requirements which are valuable to the customer. 
3 types of requirements are identified – 
 Normal requirements – 
In this the objective and goals of the proposed software are discussed
with the customer. Example – normal requirements for a result
management system may be entry of marks, calculation of results, etc
 Expected requirements – 
These requirements are so obvious that the customer need not explicitly
state them. Example – protection from unauthorized access.
 Exciting requirements – 
It includes features that are beyond customer’s expectations and prove to
be very satisfying when present. Example – when unauthorized access is
detected, it should backup and shutdown all processes.
The major steps involved in this procedure are –  
1. Identify all the stakeholders, eg. Users, developers, customers etc
2. List out all requirements from customer.
3. A value indicating degree of importance is assigned to each requirement.
4. In the end the final list of requirements is categorized as – 
 It is possible to achieve
 It should be deferred and the reason for it
 It is impossible to achieve and should be dropped off
5. Use Case Approach: 
This technique combines text and pictures to provide a better understanding
of the requirements. 
The use cases describe the ‘what’, of a system and not ‘how’. Hence, they
only give a functional view of the system. 
The components of the use case design includes three major things – Actor,
Use cases, use case diagram. 
1. Actor – 
It is the external agent that lies outside the system but interacts with it in
some way. An actor maybe a person, machine etc. It is represented as a
stick figure. Actors can be primary actors or secondary actors. 
 Primary actors – It requires assistance from the system to achieve a
goal.
 Secondary actor – It is an actor from which the system needs
assistance.
2. Use cases – 
They describe the sequence of interactions between actors and the
system. They capture who(actors) do what(interaction) with the system. A
complete set of use cases specifies all possible ways to use the system.
3. Use case diagram – 
A use case diagram graphically represents what happens when an actor
interacts with a system. It captures the functional aspect of the system. 
 A stick figure is used to represent an actor.
 An oval is used to represent a use case.
 A line is used to represent a relationship between an actor and a use
case.

ADVANTAGES OR DISADVANTAGES:

Advantages of Requirements Elicitation:

 Helps to clarify and refine the customer requirements.


 Improves communication and collaboration between stakeholders.
 Increases the chances of developing a software system that meets the
customer needs.
 Avoids misunderstandings and helps to manage expectations.
 Supports the identification of potential risks and problems early in the
development cycle.
 Facilitates the development of a comprehensive and accurate project
plan.
 Increases user and stakeholder confidence in the software development
process.
 Supports the identification of new business opportunities and revenue
streams.

Disadvantages of Requirements Elicitation:

 Can be time-consuming and expensive.


 Requires specialized skills and expertise.
 May be impacted by changing business needs and requirements.
 Can be impacted by political and organizational factors.
 Can result in a lack of buy-in and commitment from stakeholders.
 Can be impacted by conflicting priorities and competing interests.
 May result in incomplete or inaccurate requirements if not properly
managed.
 Can lead to increased development costs and decreased efficiency if
requirements are not well-defined.

You might also like