Study Focusing On Software Engineering Tools Computer Science Essay

Published: Last Edited:

This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.

"Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines" (Pressman, 2005). It can be seen as the process of creation, implementation and modification of software to get a higher quality of software which is cheaper and easily maintainable. The process of software engineering helps the technical people to identify how the software will be built. It provides solution to the real world problems through the implementation of software (Liu, 2003).

Software engineering is the engineering discipline which covers every aspect of the production of software from the initial stages to the maintenance of the software. It not only deals with the technical side of the software development but also covers activities methods used for development and also the project management field (Sommerville, 2007).

In simpler words software engineering can be seen as the application of principles not only of engineering but also scientific and mathematical to aid in the economic production of good quality software. It is important to use software engineering as it provides a systematic approach to software lifecycle including the development, implementation and maintenance. It basically uses a set of tools and structured methods to produce cost effective and quality software products which can be seen in fig 1. (Sodhi, 1991)




Software engineering

Fig.1. Software Engineering Structure (Sodhi, 1991)

Software Engineering Tools

The process of software engineering is done through the use of specific tools known as the CASE (computer aided software engineering) tools. "CASE tools have generated much interest among researchers and practitioners as potential means of easing the software development and maintenance burden threatening to overwhelm information systems departments." (Orlikowski, 1993)

CASE tools helps in the automation of the methods of software engineering, as seen in fig 2. These tools help the software developers in implementing the software engineering objectives efficiently. They are considered to be a breakthrough in the field of software development as they assist the process of creating low cost software in very little time with good quality (Sodhi, 1991).

Computer aided design

Software engineering

Software development

Engineering disciplines


Fig 2 Computer aided software engineering overview (Sodhi, 1991)

CASE tools are not considered as a replacement for the manual methods of software engineering but are considered to be the supplements for the process which enhance the quality of the software products. It is necessary to use the right tool for the right application to get the desired result therefore the person using the tool should be skilled to get the most efficient output from the tool used (Sodhi, 1991).

According to Sommervile(2007) CASE systems are classified into the following three categories:

Tools help in the individual tasks like program compilation, design consistency and comparison of test results.

Workbenches are components that support various activities of the development process like design, specification etc.

Environments help in the overall process by providing support to all or most of the parts of software development.

There can be various classifications of the CASE tools based on different perspectives. The classification can be on the basis of:

Functionality i.e. the functions they are meant to fulfil.

Process i.e. depending on the activities the tools are supporting.

Integration i.e. the way in which the tools are organised into different units providing support to the processes.

According to Sommerville (2007) the functional classification of the CASE tools can be seen in the table below:

Planning tools

PERT tools, spread sheets and estimation tools

Editing tools

Word processors, diagram editors and text editors

Change management tools

Change control systems, requirement traceability tools

Configuration management tools

System building tools, version management systems

Prototyping tools

User interface generators, high level languages

Method supporting tools

Code generators, data dictionaries and design editors

Language processing tools

Interpreters and compilers

Program analysis tools

Static and dynamic analysers and generators of cross reference

Testing tools

File comparators, generators of test data

Debugging tools

Interactive debugging systems

Documentation tools

Page layout programs, image editors

Reengineering tools

Systems doing cross reference, Systems that restructure programs

Fig 3. Functional classification of CASE tools (Sommerville, 2007)

Database reverse engineering tool

"MySQL Workbench is the visual database design tool that integrates the SQL development, administration, database design, creation and maintenance into a single, seamless environment for the MySQL database system." (Source: )

Features of MySQL Workbench:

One of the main features of MySQL workbench is that is connects to the SQL database and manages the database instantly. It covers all the MySQL features including every type of rindexing to be used. The layout of the tables holding the database queries are similar to that of MS Access. The main advantage with it is that it is an open source tool i.e. it is free to use. There is also an option to set up a default encoding for the database and when the user selects it all the tables are created in that encoding. (Source: )

There are various features in MySQL workbench that allows the tool to create the right database design the very first time. Special features known as the model validation utility helps to find all the errors and report it to the user. Workbench also provides the feature of change management to the developers or the database administrators i.e. with the help of synchronization utility workbench compares the MySQL server with the data model created and provides synchronization between the two. (Sun microsystems, 2008)

NetBeans as an Integrated Development Environment

The NetBeans platform is a reusable framework which simplifies the development process of desktop applications. When an application is run on the NetBeans based platform, the main class of the platform is executed. The modules available are located and then are placed in an in-memory registry. The modules' startup tasks are then executed, a module's code is loaded into memory only when it is required needed.

Features of NetBeans:

NetBeans provides services that are common to desktop applications which allow developers to focus on the logic of their application. Some of the features of the platform are:

User interface management

User settings management

Storage management

Window management

Wizard framework (supports step-by-step dialogs)

The NetBeans IDE is an open-source integrated development environment which is written entirely in Java using its own platform. NetBeans IDE has the feature to support development of all types of Java applications (Java SE, web, EJB and mobile applications) out of the box. Some of the different are an Ant-based project system, version control and refactoring. Modules are responsible for providing all the features of NetBeans. Every module has a well-defined function like support for the Java language, editing, or support for the CVS versioning system, and SVN. (Source:

Advantages of using NetBeans:

Out-of-the-Box Experience:  

The technologies and features that NetBeans offers cannot be compared to others. It provides all the features without making the user search for plugins seperately.  The latest development daily builds running in NetBeans are very less as compared to Eclipse. It is a good editor but out-of-the-box experience of NetBeans has made the users of eclipse to use it.

NetBeans' Technology Plugin Ecosystem: 

The NetBeans plugin ecosystem provides a healthy ecosystem for RCP technologies to survive. New NetBeans update centers run around the net and bring a large amount of plugins from it. Some examples are the .NET to Java plugin which converts VB.NET and c# sources to Java, the new jMaki plugin that provides a huge amount of AJAX support and also the BeanNetter web start application converting JavaBeans to NetBeans plugins allowing them to be imported into the Matisse GUI Builder palette. Update Centers like nbextras host lots of plugins which has made the creation of plugins simple.

Developer Collaboration.

 The Developer Collaboration modules allow developers at different locations to review and change the code through code-aware instant messaging, remote session sharing, document sharing and the use of collaboration server.


This is an exciting next generation project for code transformation. It is a technology that can safely modify source code with the use of rules and transformation.  It also provides extensions with audit operators, transformation classes and custom rule sets.

Matisse GUI Builder.

This is the best open source GUI builder available in the market. It is so good that the present commercial companies are making use of it and even selling duplicates of it on Eclipse. Use of the builder is like drawing on paper, very easy. It is convenient to use due to easy internationalization, drag-and-drop component support, guidelines about the platform on which work is done and extensible component palettes


StarUML as a tool for modelling functional and structural aspects

StarUML is an open source platform for modelling flexible, fast and freely available MDA (model driven architecture) platform that supports UML. It provides for 11 different types of diagrams to be modelled which can be customized according to the requirement of the users to maximize the productivity. The most critical process in the software development is the software architecture which can take years to complete, so the OMG (object management group) decided to use MDA technology to create models that are platform independent. StarUML follows all the standards of UML 1.4 and creates models that are platform independent and can be easily converted into the user end product with the use of template documents. (Source:

Features of StarUML

Accurate UML standard model

StarUML sticks to the UML standards specified by the OMG (object management group) for modelling the software requirements. It follows the UML 1.4 standard and also allow for the UML 2.0 modelling.

Open software model format

StarUML follows the XML format for the management of the files unlike other products available in the market which follow their own legacy format to produce inefficient results.

True MDA support

It supports UML profile to full extent thus maximising the extensibility of UML. It can also create models in areas like finance, e-business, defence and insurance. PIM (truly platform independent models) as well as PSM (platform specific models) can be created through StarUML and the resultant code can be generated easily.

Applicability and extensibility of platforms

The tool can change the approach concept according to the ease of user thereby creating environments which may be suitable for running on any type of platform. The functionality of the tools is automated according to the Microsoft COM so any language supporting COM can be used to control this platform.

Software model verification function

There is a very high chance of user making mistakes during the modelling. If the errors are left uncorrected then they may result in very high cost maintenance, therefore StarUML verifies the model created by the user automatically so find the errors made in the early stages and hence prevent huge expenditure later on.

Useful add-ins

There are many useful add-ins in StarUML with various functionalities such as it can generate code as well as create models from a code, can import Rational Rose files, can also exchange information regarding modelling with other tools based on XMI. These functionalities result in increased flexibility, reusability, interoperability and productivity for software modelling.

(Gum et al, 2005)

Types of diagrams available

Class diagram

It is a visual expression of different static relations of a class. Class diagram not only consists of classes but also enumerations, packages, interface, instances, various relations and their links.

Use case diagram

It expresses the relation between the external actors and the use case of a specific object or system. The diagram provides the functionality of the system and describes the interaction between system functions and external actors.

Sequence diagram

The diagram describes the interactions between different instances. It expresses direstly the InteractionInstanceSet, the set of the stimuli exchanged between the instances within a CollaborationInstanceSet. It is an instance-oriented expression.

Sequence diagram (Role)

The diagram expresses the direct interactions between the role concepts. It describes a set of the messages that are exchanged between the ClassifierRoles within collaboration. Sequence Role Diagram is a ClassifierRole-oriented expression.

Collaboration diagram

Collaboration diagram shows the collaboration between various instances, giving a direct expression of the collaboration model of the instances within a CollaborationInstanceSet. Collaboration diagram is an Instance-oriented expression.

Collaboration diagram (Role)

Collaboration role diagram shows the collaboration between the role concepts. It is a direct expression of the collaboration model of the ClassifierRoles within a collaboration. It is a ClassifierRole-oriented expression.

Statechart diagram

Statechart diagram displays the static behaviours of a specific object through states and their transitions. Although Statechart Diagram is generally used to express the behaviours for instances of classes, it can also be used to express behaviours of other elements.

Activity diagram

Activity diagram is a special form of Statechart diagram, suitable for expressing the activity execution flow. Activity diagram is commonly used for expressing workflow, and it is frequently used for objects like classes, packages, and operations.

Component diagram

Component diagram expresses the dependency between the software components. The elements constituting the software components and those implementing them can all be expressed by Component diagram.

Deployment diagram

The diagram expresses the hardware components of the computer and various devices and the software processes, objects and components assigned to them.

Composite structure diagram

Composite structure diagram is a diagram that expresses the internal structure of a classifier. It is included in the point where other parts of system interact with each other.

(Gum et al, 2005)