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 a systematic approach to the design, implementation, testing and maintenance of the software. Software engineering tools speed up the development process and produce high quality maintainable software.
Choosing Software Engineering Tools
Software development consists of several stages each demands careful selection of tools which are suitable for the requirements and easy to be integrated into the development process. The support for the chosen development method offered by the tools is as important as the support for development process. The support for application domain and software reuse was discussed in the selection process. Availability of code generators and system architecture design compatibility were some of the main priorities in this phase.
As some of the team members were familiar with Netbeans and PHP we decided to choose those tools as the programming environment.
Database Reverse Engineering Tools
Reverse engineering is the process of deriving design decisions and technological principles from a product through structural and functional analysis. It helps to gain in depth knowledge about the product to help improve its performance or develop a better system based on the original prototype.
The SQL script we have been given was used to produce the tables but to understand the relationships between the tables it was necessary to produce an entity relationship diagram through reverse engineering. The ER diagram helped us to write the code more efficiently and minimised the risk of errors. We used SQL Workbench to produce ER diagram as the installation and usage of MySQL was straight forward.
MySQL Workbench 5.2.30
MySQL workbench is an open source visual database design tool to mange MySQL database. Its features include data modelling, database administration and SQL Editor. The data modelling feature can forward and reverse engineer SQL script and database.
Modelling tools are used to express information about a system in a structured manner based on a set of rules. It helps to understand the requirements and components in a system without tied to any specific programming language. It helps the stakeholders to understand the system that is being modelled.
StarUML is an open source UML modelling tool running on win32 platform and supports model driven architecture. It provides customization variables like UML profile, MDA code, Model Framework, Approach, Notation Extension, and Document Template. It has a plug-in architecture and provides many user friendly features.
SarUML is no longer maintained which makes it less popular as it does not offer support for the latest improvements in software modelling.
Database Management Tool
Databse management tools help database administrator to maintain the relational database efficiently and easily without the hardship of executing queries in a commands prompt.
We chose phpMyAdmin as the database management tool as it is quick to install and easy to operate. Also it is open source which contributes to its state as one of the most popular database management tool in the current market.
It is written in php and supports MySQL database management. Its user interface supports most database operations and has an SQL command window to execute SQL commands. It also features import and export of database in various formats, multiple server administration, Query by example.
Version Control Tool
Version control is the process of managing changes to programs, documents and any related files of a system during software development. It helps to identify and track changes by storing details about the timestamp and the person responsible for the change.
Concurrent Versions System(CVS)
We used CVS as version control tool because it is integrated with the Netbeans IDE and most suitable in our development environment. This open source software helps efficient collaboration of developers work. CVS has a client server architecture where the server stores the latest version and clients connect to the server to check out the latest project copy and check in with the updated version. If the check in version is accepted CVS updates the project creating a timestamp in the logfile with the user and auto increments version number.
CVC allows anonymous read access, update option, branch project operation running different versions, delta compression for efficient storage.
CVS lacks the atomic commit feature which notifies the control that the user wants to make a group of changes and make it available to others. Some of the disadvantages of CVS are expensive branch operations, no revision for file update and modify revision for per file not for the collection, textual file default, no distributed revision control support.
Bulletin boards help developers communicate over the internet. Our main communication mediums were Kingston mail system and Skype. We tried to meet regularly and more often near the deadline to finalise our project.
A WIKI account has been created but we found other options suitable for our communication.
Issue tracking systems are used to help developers manage issues and bugs relating to the system. It helps to prioritise the development request based on the pending items for next release.
We chose phpBugTracker, a web based bug tracker to manage issues in our development. Some of the benefits of phpBugTracker are track bugs by multiple users on multiple projects, Bug history, access restriction, CSS and HTML, bug search Localization, anonymous bugs, bug dependencies.
WampServer is windows based web development environment that comes with Apache, PHP, phpMyAdmin and MySQL database. It is easy to install and configure the servers. Wamp components can be managed using effective GUI tools and has a tray icon for easy access.
Our application server was Zend as it is integrated with the Netbeans IDE. Some of its features are debugger interface, page caching and application monitoring.
Code build and deployment Tools
Apache Maven 3.0
For project management and build automation, we chose Apache Maven as Netbenas IDE features Maven plug in option. A construct, Project Object Model (POM) is used in Maven to describe the project, its dependencies and the build order. It comes with pre-defined targets for performing compilation of code and its packaging. Maven requires the structure and operations of a project to be defined in POM file on which Maven relies extensively to function, which is one of its downsides.
Testing is the process of validating and verifying software so to help developers improve the software performance and inform stake holders about product quality.
Unit testing is done by testing a unit; the smallest testable part of an application, to determine whether it is free of errors. Netbeans IDE offers support for PHPUnit and Selenium testing.
PhpUnit is a unit testing framework which we thought would be useful in conducting unit testing. It helps to determine whether the code serves the intended purpose.
Integration testing verifies the interface between components against the software systemâ€™s functional and reliability requirements. Here individual modules are combined and tested as a group.
After installing the Testing_Selenium package, the test directory has to be configured in order to write testcases. It offers auto complete, save as HTML, debugging, intelligent field selection etc.
Static Code Analysis
Static code analysis is a way of analysing the software dynamically without executing the actual code from the software. It is performed on object code or on some versions of the source code.
Yasca is a command line tool used to find security vulnerabilities, performance, and quality during software development. It generates reports in various formats.
Code refactoring is a process of improving the source code to satisfy non functional requirements without affecting functional requirements. This improves usability, readability and maintainability of the software.
RefactoringNG, a Netbeans module
This is a powerful and flexible Java refactoring tool, written as NetBeans module.
User Interface Design and Prototype
The design of software as user friendly as possible is the main priority in user interface design.
This GUI design-tool integrated in Netbeans enables developers to prototype and design Swing GUIs by dragging and positioning GUI components.
Object Persistence Framework
Integrated Development Environment
NetBeans IDE 6.9.1
Iterative development support
modular development approach
An Ant-based project system,
Version control (supporting CVS, Subversion, Mercurial and Clearcase).
Excludes individual directories in properties for faster code scanning
Zend and Symfony Framework support
PHP Source Code Editor with features such as code completion, pop-up documentation, syntactic and semantic code highlighting, marking of occurrences and exit points, code formatting and folding. PHP editor understands marking of occurrences and exit points.
Easy Code Navigation, a tasks window lists all warnings in the project, warns about code problems by flagging them and giving hint in a pop-up.
Generates report for code coverage for php files to examine test cases
PHP Unit Testing with PHPUnit and Selenium with option to define a custom XML configuration file, a bootstrap file for command line options, or a custom test suite, or let the IDE generate skeleton code.
PHP Debugging using Xdebug with command-line debugging and remote debugging features.
Remote and Local Project Development
Options to set watches and breakpoints, live code evaluation, local variables inspection, easy navigation to files, declarations and types using hypertext links and Go To shortcuts.
Use of global PHP include path
MySQL Integration: Database explorer
Support for multiple Kenai-based team servers
Plugin browser which allows you to find plugins easily
Project Planning and Control
Configuration and resolving issues
Choosing Software Engineering Tools
The MySQL script of the database design had to be reverse engineered to understand the database relationships. MySQL workbench is one of the tools available to generate an entity relationship diagram from the MySQL script and we used it as it was quick producing a self explanatory diagram.