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 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, 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 fairly good 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 is focusing 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 where accessing any of the software best practice tools would be easier 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.


Lung, C.H., Xu, Z., Franks, G.., Zaman, M., “Towards a performance oriented self-adaptive system”, Proc. of the 6th Int’l Workshop on System and Software Architectures (IWSSA), co-located with the International Conference on Software Engineering Research and Practice (SERP), Las Vegas, NV, June, 2007.

C.-H. Lung, X. Xu, and M. Zaman, “Program Restructure Using Clustering Technique”, Journal of Systems and Software, (Special Issue on Selected Papers from SCAM 2004), vol. 79, issue 9, pp. 1261–1279, 2006

Proc. of the 4th IEEE Int’l Workshop on Source Code Analysis and Manipulation (SCAM) in conjunction with IEEE Int’l Conf on Software Maintenance, Chicago, IL, pp. 75–84, 2004.

C.-H Lung, M. Zaman, and N. Goel, “Reflection on Software Architecture Practices – What Works, What Remains to Be Seen, and What Are the Gaps”, Proc. of the 5th Working IEEE/IFIP Conf. on Software Architecture, Pittsburgh, PA, Nov. 2005.

C.-H. Lung, X. Xu, and M. Zaman, “Attribute Driven Software Decomposition”, Proc. of the17th Int’l Conf. on Software Engineering and Knowledge Engineering (SEKE), Taipei, Taiwan, July 2005.

Lung, C.H. and Zaman, M., “Application of Design Combinatorial Theory to Software Architecture Analysis”, Proc. of the 17th Int’l Conf. on Software Engineering and Knowledge Engineering (SEKE), Taipei, Taiwan, July 2005.

Zaman, M., Bansal, N. and Nayak, A.,“SmartTC – A tool for optimizing and auto-generating test cases”, Canadian Conference on Electrical and Computer Engineering, (CCECE) 2005.

Masud, M., Nayak, A., Zaman, M. and Bansal, N., “A Strategy for Mutation Testing Using Genetic Algorithms”, accepted in Canadian Conference on Electrical and Computer Engineering, (CCECE) 2005.

Lung, C.H. and Zaman, M., “Using Clustering Techniques to Restructure Programs”, Proc. of the Int’l Conf on Software Eng. Research and Practice, pp. 853-858, 2004.

Gupta, V, Patnaik, A.R., El-Emam, K. and Goel, N., “A System for Controlling Software Inspections”, Canadian Conf. on Electrical and Computer Engineering, Montreal, 2003.

Maity, S., Nayak, A., Zaman, M., Bansal, N. and Srivastava, A.,“An Improved Test Generation Algorithm for Pair-wise Testing”, International Symposium on Software Reliability Engineering, Nov 2003.

El-Emam, K., Belnarbi, S., Goel, N. and Rai, S.N., “The Confounding Effect of Class Size on the Validity of Object Oriented Metrics”, IEEE Transactions on Software Engineering, Vol. 27, No. 7, 2001.

Note: Cistel provides R&D support to various research organizations and universities. However, Cistel will not provide support for any overhead costs.

Colin SmithSoftware Engineering