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)
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
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:
PERT tools, spread sheets and estimation 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
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
File comparators, generators of test data
Interactive debugging systems
Page layout programs, image editors
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: http://en.wikipedia.org/wiki/MySQL_Workbench )
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: http://programmersnotes.info/2009/03/01/mysql-workbench-the-database-modeling-tool-for-mysql/ )
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
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: http://en.wikipedia.org/wiki/NetBeans)
Advantages of using NetBeans:
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.
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 java.net 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: http://staruml.sourceforge.net/en/about.php)
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.
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
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.
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 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 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 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 expresses the dependency between the software components. The elements constituting the software components and those implementing them can all be expressed by Component 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)