Publication Date



Open access

Embargo Period


Degree Type


Degree Name

Master of Science (MS)


Computer Science (Arts and Sciences)

Date of Defense


First Committee Member

M. Brian Blake

Second Committee Member

Dilip Sarkar

Third Committee Member

Iman Saleh Moustafa


Although frequently viewed as bureaucratic and inefficient, some software engineering processes, in particular unit testing, may prove to be not only useful but indispensable for small projects. Software-related small businesses or “startups” often do not know which software engineering processes and tools are most effective or even those that are absolutely required. In addition, they usually have significant time constraints and limited resources. As a result, it is very common for startup businesses to overlook and omit the use of many vital processes and/or tools, without realizing that such omissions could negatively impact their project, financially, at present and many years into the future. This thesis surveys and evaluates relevant business processes for software engineering in small enterprises including requirements engineering, infrastructure selection, and testing alternatives. Consequently, this work provides important decision support guidelines when selecting software processes that will ultimately result in robust, reliable, scalable, and maintainable software. This thesis is the first step towards developing repeatable techniques for selecting an appropriate set of processes and tools to be used for new, small-scale software projects. Within this work is a focused experiment that demonstrates how to effectively leverage unit testing techniques for small projects. The results of this model are evaluated within a software development experiment where an existing software product (that did not initially consider formal software engineering techniques) is redeveloped to incorporate unit testing paradigms. The outcomes of this experiment include the evaluation and comparison of software quality and an assessment of level of effort to produce the existing product as it relates to the unit testing-enhanced product. From the experimentation it was fount that even though the unit tested code has aproximatelly twise the code lines as the version without unit testing, the total time to develop the unit tested version was only 33% greter than the untested version. In addition the qualitative analysis showed that the tested version was superior in terms of reliability, manteinability, and scalability.


Unit testing; Software Engineering