Software Engineering

The first business model for Cistel was based on consulting services in various software engineering areas spanning from software design to software testing. Since the inception of the company, Cistel has been active in developing and following best-in-class practices for quality software development. Cistel’s research in various software engineering areas have resulted in the development of multiple computer aided software engineering tools that are used in-house and for consulting service in large-scale software development projects.  Cistel has been collaborating with universities and other research organizations in developing new software engineering technologies and tools. The areas of Cistel research in software engineering are:

Software Measurement

Most new software development projects depend heavily on object-oriented technology. While many benefits have been claimed for the object-oriented paradigm, it has proven a difficult challenge to manage the quality of large OO applications in practice. Cistel has done extensive research for both structural and object oriented metrics for large software projects. The focus of the R&D in this area is on the use of software metrics in decision-making and practical measurement frameworks.

Software Inspection

Cistel has developed novel techniques and tools for software inspection that can help in making decisions as to whether or not a particular software is ready to be released based on the defect type and frequency of the defect identification. Advanced techniques such as Monte Carlo simulation and Capture-Recapture method have been used in developing the core module of the in-house software inspection tool.

Software Clustering and Restructuring

Software maintenance is one of the most challenging activities in developing large software. It has been reported that software maintenance and testing expenses can go as high as 60% of the total software lifecycle cost. Software maintainability highly depends on the modularity of the software.  A modular software is not always easy to achieve. Due to time to market pressures as well as frequent churn in product requirements, design erosion often happens which makes the overall system tightly coupled and hard to enhance and/or maintain. Sometimes, there is no choice but to partly or entirely restructure a software system. Restructuring software is by no means an easy task. It requires a fairly strong understanding of the legacy software. Cistel has done research and experimental development to provide a systematic process to analyze a software system, cluster functionalities, and aid in semi-automated restructuring of a software system.

Efficient and Effective Software Testing

How can we reduce the testing cost and still find all the faults before the software is released? One way of improving testing effectiveness is by automating the testing activity so that a single software program tests another program and collects the results. Another way is to wisely determine which tests should be run. This research project focuses on developing methods and techniques to support the generation of a minimal number of test patterns. A tool called SmartTC was developed based on a novel pair-wise combinatorial technique. Tools using a similar technology have been developed and found extremely useful by others such as AETG by Telcordia and ACTS by NIST.

Software Clone Detection

Clones are similar or near similar software pieces that are usually present in the code as a result of “cut & paste” activities while developing software. Large software systems are often more prone to code cloning as they have more chances of having similar functionalities in different segments of the code. Although it is fairly easy for an experienced software engineer to identify clones by manually inspecting the code, it is not an efficient method as it is quite time consuming. Detecting cloning using Computer Aided Software Engineering tools are also not always effective as it is very difficult to assume and develop generic software to detect clones automatically. Cistel is working on a semi-automated clone-detection strategy based on our practical experience in manually detecting code for a large Web application.  A software tool is envisioned which would use human-machine interaction in detecting cloning and provide recommendation by identifying areas for reusable pieces for the software system.

Software Engineering Framework

Cistel has been also actively working on an integrated framework which would allow for easy access to any of the software best practice tools for the software developer, tester, or manager. The framework would allow building applications with an intuitive graphical user interface and easy access to any in-house tools or other third-party software engineering tools. An easy to use application based on this framework would promote the software engineering best practices in the software industry.


Colin SmithSoftware Engineering