<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.1" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Özgür Macit</title>
	<link>http://www.ozgurmacit.com</link>
	<description></description>
	<pubDate>Thu, 10 Jul 2008 08:00:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1</generator>
	<language>en</language>
			<item>
		<title>Learning Python programming</title>
		<link>http://www.ozgurmacit.com/2007/learning-python-programming/</link>
		<comments>http://www.ozgurmacit.com/2007/learning-python-programming/#comments</comments>
		<pubDate>Fri, 30 Mar 2007 06:52:05 +0000</pubDate>
		<dc:creator>Özgür Macit</dc:creator>
		
		<category><![CDATA[programming languages]]></category>

		<guid isPermaLink="false">http://www.ozgurmacit.com/2007/learning-python-programming/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.ozgurmacit.com/2007/learning-python-programming/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Is C a vitamin?</title>
		<link>http://www.ozgurmacit.com/2007/is-c-a-vitamin/</link>
		<comments>http://www.ozgurmacit.com/2007/is-c-a-vitamin/#comments</comments>
		<pubDate>Wed, 14 Feb 2007 21:07:24 +0000</pubDate>
		<dc:creator>Özgür Macit</dc:creator>
		
		<category><![CDATA[C]]></category>

		<category><![CDATA[programming languages]]></category>

		<guid isPermaLink="false">http://www.ozgurmacit.com/2007/is-c-a-vitamin/</guid>
		<description><![CDATA[&#8230; or Problems of C Programming Language
In my university, students are thought C as the first programming language - not only computer engineering program&#8217;s students, but also some of other engineering programs&#8217; students. Although I had always liked writing code in C programming language, there are some reasons that why I think it is not [...]]]></description>
			<content:encoded><![CDATA[<p><em>&#8230; or Problems of C Programming Language</em></p>
<p>In <a href="http://www.itu.edu.tr/" title="İstanbul Technical University" target="_blank">my university</a>, students are thought C as the first programming language - not only computer engineering program&#8217;s students, but also some of other engineering programs&#8217; students. Although I had always liked writing code in C programming language, there are some reasons that why I think it is not a proper language to teach the concept of programming or even it is not a proper language to write most of the programs.<br />
According to Wikipedia, <em>C is a general-purpose, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system</em> <a href="http://en.wikipedia.org/wiki/C_%28programming_language%29" title="C (programming language)" target="_blank">[5]</a>. Sure it is procedural and imperative, but talking about <em>purpose</em> of language, though we must categorize C as a general-purpose language, who can advocate correctness of implementing every problem in C? C was originally designed to be a portable assembly language for easier implementation of UNIX <a href="http://www.kuro5hin.org/story/2004/2/7/144019/8872" title="Why C Is Not My Favourite Programming Language" target="_blank">[2]</a>. Thus, it is a low-level programming language to use when hardware-intended or performance-critical software is needed.<br />
I will mention about some problems or <em>pseudo-problem</em>s of C programming language in this article. A very wide criticism of C programming language may be found at <a href="http://en.wikipedia.org/wiki/Criticism_of_the_C_programming_language" title="Criticism of the C programming language" target="_blank">[6]</a>.</p>
<p><strong>Readability</strong></p>
<p>We do not need to say a lot about C and readability: C is not readable at all - don&#8217;t forget it&#8217;s a kind of enhancement to assembly language. Let us look at an example (example is taken from <a href="http://www.ce.itu.edu.tr/undergraduate/courses/blg437e/presentations/introduction.pdf" title="Programming Languages - Introduction" target="_blank">[1]</a>). Have a look at code listings <a href="http://www.ozgurmacit.com/files/Is-C-a-vitamin-01.c" title="Code listing 1" target="_blank">1</a> and <a href="http://www.ozgurmacit.com/files/Is-C-a-vitamin-02.py_" target="_blank" title="Code listing 2">2</a>. First one is an implementation of a list of integers in C and second is Python equivalent of same code. We are not interested in how much readable Python code is, but we are interested in how much hard to read C code.<br />
While writing code in C, you have to help compiler a lot. For favor of compiler you put braces (<code>{</code> and <code>}</code>) to represent blocks. Stars here and stars there confuses the programmer (and then after <em>code-reader</em>). When you want to use some memory you have to allocate it and make sure all pointers are set to <code>NULL</code> initially. Also when you want to update the list, you must take care of all pointers again. Code becomes a whole mess full with <em>statements those are not related with real problem</em> and anyone who want to read and understand code finds (her/him)self inside this mess. (S)he has to fight with all these stars and braces and allocation statements and etc.<br />
Have a look at table under <em>Expressiveness</em> section of <a href="http://en.wikipedia.org/wiki/Comparison_of_programming_languages" title="Comparison of programming languages" target="_blank">[4]</a>. According to this table you have to write 6 lines of C code to do same job with a single line of Python or Perl code. Also, lines of code needed to implement a problem in C is 2.5 times of lines of code to implement same problem in Java or Fortran. Thus, we can say C is not an efficient language for either writing or reading code.</p>
<p><strong>Orthogonality </strong></p>
<p>Have a look at two function definitions in code listing <a href="http://www.ozgurmacit.com/files/Is-C-a-vitamin-03.c" title="Code listing 3" target="_blank">3</a> (example is taken from <a href="http://www.ce.itu.edu.tr/undergraduate/courses/blg437e/presentations/introduction.pdf" title="Programming Languages - Introduction" target="_blank">[1]</a>). The first function (<code>double_int</code>) takes an integer parameter and doubles its value and saves inside a local variable. After that value of local variable is returned. Second function (<code>double_str</code>) takes a character pointer as a parameter and doubles its value inside a local variable using some library functions. Like the first function, at last, value of local variable is returned back. But, second function cannot be even compiled because we are trying to return a local pointer variable.<br />
Programmer occasionally does not have chance to write a similar code for two similar instances of same problem in C. For this reason, C is said to be not orthogonal.</p>
<p><strong>Safety</strong></p>
<p>C code tends to need more maintenance because of its unsafe properties. Some of these properties are:</p>
<ul>
<li>Though type checking is done by compiler, programmer is free to make type casting.</li>
<li>C never and never makes index range checking. It is claimed that C encourages buffer overflows with this property in <a href="http://www.kuro5hin.org/story/2004/2/7/144019/8872" title="Why C Is Not My Favourite Programming Language" target="_blank">[2]</a>. Same source gives a list of functions that may cause buffer overflow <em>accidentally</em>.</li>
<li>Programmer has the memory! No safety check is done about memory allocation.</li>
<li>You must not free same pointer twice - again <em>accidentally</em>, if you do you are in trouble. There is no internal mechanisms to avoid this. Programmer must always check the pointer while allocating and freeing memory.</li>
</ul>
<p><strong>Redundancy</strong></p>
<p><a href="http://java.sun.com/docs/white/langenv/Simple.doc2.html" title="The Java Language Environment" target="_blank">[3]</a> says &#8220;<em>In many ways, the C language evolved into a collection of overlapping features, providing too many ways to say the same thing, while in many cases not providing needed features.</em>&#8221; <a href="http://www.kuro5hin.org/story/2004/2/7/144019/8872" title="Why C Is Not My Favourite Programming Language" target="_blank">[2]</a> has a lot of examples about that, I will not rewrite all of them. Just consider <code>gets</code> and <code>fgets</code> functions. They both do same job (OK, they don&#8217;t, but <code>fgets</code> does what <code>gets</code> can do) one is not encouraged due to some safety issues. But like a lot of similar things it cannot be fully thrown out of language, because backward compatibility is needed.</p>
<p><strong>String type</strong></p>
<p>In <a href="http://www.kuro5hin.org/story/2004/2/7/144019/8872" title="Why C Is Not My Favourite Programming Language" target="_blank">[2]</a>, James A. C. Joyce wrote about strings in C:</p>
<blockquote><p>Most sane programming languages have a string type  which allows one to just say &#8220;this is a string&#8221; and let the compiler take care of the rest. Not so with C. It&#8217;s so stubborn and dumb that it only has three types of variable; everything is either a number, a bigger number, a pointer or a combination of those three. Thus, we don&#8217;t have proper strings but &#8220;arrays of unsigned integers&#8221;. &#8220;char&#8221; is basically only a really small number. And now we have to start using unsigned ints to represent multibyte characters.</p></blockquote>
<p>Since C has no string type you cannot do a string copying or string concetenation operation via its own syntax and you have to do this with help of functions.  Hence, string operations are not a part of language, they are library functions and you must include appropriate header file to use them (<code>string.h</code> in ANSI C). Assignment of array variables is also not allowed inside C code, bacause an array is nothing but just a pointer. Also number to string or string to number conversion can be only done via functions. Look at those two syntax types - no comments.<br />
C style:</p>
<p><code>strncpy(source + 2, target, 5);</code></p>
<p>Python style:</p>
<p><code>target = source[2:7]</code></p>
<p>Besides all, C is a low-level programming language. It is <em>not</em> a string manipulation language. Expecting high-level string manipulation operations from it is not reasonable.</p>
<p><strong>Reaching elements</strong></p>
<p>Another complaint about C is why do we have both <code>.</code> and <code>-&gt;</code> to use for the same purpose. Firstly, they are not for the same purpose. <code>.</code> is structure offset and <code>-&gt;</code> is used for dereferencing. Sure we should expect from compiler to take care of this difference or we can simply do not want to help the compiler to ease its job. But in my opinion understandability of code increases with this small difference. Looking at the code we can easily see what is a pointer and we are dereferencing its indigrents and what is a name of a real structure. Let me say <em>I never liked Java way of avoiding pointers</em>.</p>
<p><strong><code>goto</code> statement</strong></p>
<p>James A. C. Joyce claims that using a <code>goto</code> statement is the only way of breaking out of nested <code>for</code> or <code>while</code> loops in <a href="http://www.kuro5hin.org/story/2004/2/7/144019/8872" title="Why C Is Not My Favourite Programming Language" target="_blank">[2]</a>. I am not sure his claim is true but I don&#8217;t know a more <em>efficient</em> way of doing this either. <a href="http://java.sun.com/docs/white/langenv/Simple.doc2.html" title="The Java Language Environment" target="_blank">[3]</a> says 90% of <code>goto</code> statements used to break out of nested loops by investigated 100,000 lines of code.  A number of other languages uses multi-level breaking to avoid this.<br />
Perhaps <code>goto</code> statement is the worst feature of C language. You can go somewhere in a loop / nested loops using it. You can make your code ten times hard to read using a single <code>goto</code> statement inside a loop.</p>
<p><strong><code>enum</code>s</strong></p>
<p>C&#8217;s <code>enum</code> structure has a very significant and important problem which may be easily solved with object-oriented programming. If you use a name in an <code>enum</code>, you cannot use this name in another <code>enum</code>. If you use an object-oriented programming language like Java, you may put the same constant name inside different classes.</p>
<p><strong>Error handling</strong></p>
<p>Error handling may be done (is done by library functions) in the following ways (complete list is taken from <a href="http://www.kuro5hin.org/story/2004/2/7/144019/8872" title="Why C Is Not My Favourite Programming Language" target="_blank">[2]</a>):</p>
<ul>
<li>Returning zero</li>
<li>Returning nonzero</li>
<li>Returning a <code>NULL</code> pointer</li>
<li>Setting <code>errno</code></li>
<li>Requiring a call to another function</li>
<li>Outputting a diagnostic message to the user</li>
</ul>
<p>There is no exception handling mechanism in C. This results in two critical problems: First is what we know already: C is not appropriate for high-level programming. Secondly, since there is no single error code convension programmer gets confused when writing code.</p>
<p><strong>What C doesn&#8217;t have</strong></p>
<ul>
<li>Exception handling mechanism</li>
<li>Specialized data types</li>
<li>Function overloading</li>
<li>Garbage collection</li>
</ul>
<p><strong>A nice joke :) <a href="http://www.kuro5hin.org/story/2004/2/7/144019/8872" title="Why C Is Not My Favourite Programming Language" target="_blank">[2]</a><br />
</strong></p>
<blockquote><p>&#8220;Hey, Thompson, how can I make C&#8217;s syntax even more obfuscated and difficult to understand?&#8221;<br />
&#8220;How about you allow <code>5[var]</code> to mean the same as <code>var[5]</code>?&#8221;<br />
&#8220;Wow; unnecessary and confusing syntactic idiocy! Thanks!&#8221;<br />
&#8220;You&#8217;re welcome, Dennis.&#8221;</p></blockquote>
<p><strong>Conclusion</strong></p>
<p>C is not <em>the</em> evil in this story, I think. Just, it is not really proper for high-level programming. It must be used for what it is designed for.<br />
Some <em>bloody</em> properties cannot be abandoned due to backward compatibility. Newbies always discouraged using these features by experienced programmers.<br />
While coding in C, I feel myself in the middle of 70s while memory was so important and that I shouldn&#8217;t use a <em>single</em> byte if I really don&#8217;t need it. This makes me sick about C :)<br />
I think it is something related with comfort and habits. For example Fortran programmers have complaints about ability to change the loop variable inside the loop, but I cannot even dream about a world where I cannot change it :) Java programmers find pointers confusing, I am confused when I don&#8217;t see those stars inside code :)<br />
To sum up, C or its features are not real problem, problem is using it where not to use. Never forget: C is not a vitamin that is useful in every condition, it <em>is</em> a low-level language!</p>
<p><strong>References</strong></p>
<p>[1] <a href="http://www.ce.itu.edu.tr/undergraduate/courses/blg437e/presentations/introduction.pdf" title="Programming Languages - Introduction" target="_blank">http://www.ce.itu.edu.tr/undergraduate/courses/blg437e/presentations/introduction.pdf</a> : <em>Programming Languages - Introduction</em> by H. Turgut Uyar<br />
[2] <a href="http://www.kuro5hin.org/story/2004/2/7/144019/8872" title="Why C Is Not My Favourite Programming Language" target="_blank">http://www.kuro5hin.org/story/2004/2/7/144019/8872</a> : <em>Why C Is Not My Favourite Programming Language</em> by James A. C. Joyce<br />
[3] <a href="http://java.sun.com/docs/white/langenv/Simple.doc2.html" title="The Java Language Environment" target="_blank">http://java.sun.com/docs/white/langenv/Simple.doc2.html</a> : <em>The Java Language Environment</em><br />
[4] <a href="http://en.wikipedia.org/wiki/Comparison_of_programming_languages" title="Comparison of programming languages" target="_blank">http://en.wikipedia.org/wiki/Comparison_of_programming_languages</a> : <em>Comparison of programming languages</em><br />
[5] <a href="http://en.wikipedia.org/wiki/C_%28programming_language%29" title="C (programming language)" target="_blank">http://en.wikipedia.org/wiki/C_%28programming_language%29</a> : <em>C (programming language)</em><br />
[6] <a href="http://en.wikipedia.org/wiki/Criticism_of_the_C_programming_language" title="Criticism of the C programming language" target="_blank">http://en.wikipedia.org/wiki/Criticism_of_the_C_programming_language</a> : <em>Criticism of the C programming language</em></p>
<p><strong>Code listings</strong></p>
<p>[1] <a href="http://www.ozgurmacit.com/files/Is-C-a-vitamin-01.c" title="Code listing 1" target="_blank">http://www.ozgurmacit.com/files/Is-C-a-vitamin-01.c</a><br />
[2] <a href="http://www.ozgurmacit.com/files/Is-C-a-vitamin-02.py_" title="Code listing 2" target="_blank">http://www.ozgurmacit.com/files/Is-C-a-vitamin-02.py_</a><br />
[3] <a href="http://www.ozgurmacit.com/files/Is-C-a-vitamin-03.c" title="Code listing 3" target="_blank">http://www.ozgurmacit.com/files/Is-C-a-vitamin-03.c</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ozgurmacit.com/2007/is-c-a-vitamin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Unit Testing</title>
		<link>http://www.ozgurmacit.com/2007/unit-testing/</link>
		<comments>http://www.ozgurmacit.com/2007/unit-testing/#comments</comments>
		<pubDate>Sun, 28 Jan 2007 11:21:13 +0000</pubDate>
		<dc:creator>Özgür Macit</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[PL/SQL]]></category>

		<category><![CDATA[testing]]></category>

		<category><![CDATA[programming languages]]></category>

		<guid isPermaLink="false">http://www.ozgurmacit.com/?p=3</guid>
		<description><![CDATA[I have been working on computer software since I had entered university in September 2002. It has been more than four years and no single unit testing experimantation all I have. Of course I test my code, but not having any theoretical or methodological background. I only gave a few suspicious input to my program [...]]]></description>
			<content:encoded><![CDATA[<p>I have been working on computer software since I had entered university in September 2002. It has been more than four years and no single unit testing experimantation all I have. Of course I test my code, but not having any theoretical or methodological background. I only gave a few <em>suspicious</em> input to my program and checked the output, that is all. Thus, big black boxes, all my programs were.</p>
<p><strong>Test Driven Development</strong></p>
<p>On <a href="http://www.apollo-pro.com/help/pl_unit.htm" target="_blank">this site</a> Test Driven Development is summarized in this way:</p>
<blockquote><p>Test Driven Development (TDD) is a software engineering methodology that states that all code should have a set of clear, repeatable unit tests written for it.  Furthermore, it states that these tests should be written before the corresponding code is written, thus driving the development of the code base.</p></blockquote>
<p>That sounds good: While I prepare my test cases before development phase I am able to think about them <em>free</em> of implementation. Moreover, once I have thought of test cases (that is, possible failure cases) I may write my code much more efficient and bug-free. There is no need to discuss how big effect bugs have in software production. Just let me say, software bugs may cause a big money loss, or even human life in some cases. We don&#8217;t love them, we will never love :)</p>
<p><strong>Extreme Programming</strong></p>
<p>Extreme Programming is defined as &#8220;<em>Extreme Programming differs from traditional methodologies primarily in placing a higher value on adaptability than on predictability</em>&#8221; in <a href="http://en.wikipedia.org/wiki/Extreme_Programming" title="Extreme Programming" target="_blank">Wikipedia</a>. The methodology of Extreme Programming is not to predict all requirements of product at the begining of project but make project adaptable to changing requirements. That&#8217;s the way a software project has a chance to be successful in our day. Projects are developed in months or even years occasionally. While software is being developed, customer may change mind or requirements of market may change. This requires a <em>fast-alterible</em> programming methodology like Extreme Programming.</p>
<p><strong>Qute</strong></p>
<p>Unit testing is the corner stone of Extreme Programming (<a href="http://en.wikipedia.org/wiki/Extreme_Programming" title="Extreme Programming" target="_blank">[1]</a>). That&#8217;s why <a href="http://www.stevenfeuerstein.com/" title="Steven Feuersein's website" target="_blank">Steven Feuerstein</a> works on a unit testing tool for PL/SQL :)<br />
Lucas Jellema gives a brief introduction about Qute (Feuerstein&#8217;s unit testing tool) before giving helpful information about how to install the program and a tutorial to explain how the program runs in <a href="http://technology.amis.nl/blog/?p=1041" title="Qute - new Unit Testing Engine for PL/SQL (successor for utPLSQL)" target="_blank">his article</a>. In the same article he quotes from Steven Feuerstein &#8220;<em>Qute is the Quick Unit Test Engine. It is a tool for defining unit tests, generating test code, and running those tests, all within a graphical interface</em>&#8220;.<br />
The thing I found exciting in Qute is it has an easy to use GUI, so you do not need to write even one line of code to create test cases or run them againist your code. With four years in school and six months of work experience with them, I learned that developer is somebody who is lazy as a cat :) This tool is something for them (us?).</p>
<p>You can download Quest Code Tester for Oracle <a href="http://www.toadworld.com/Downloads/ExclusiveToadWorldSoftware/tabid/78/Default.aspx" target="_blank">here</a> (you must be a registered user to download the file - and smile, registration is free for now).<br />
Unfortunately, I have faced a problem while installing this software on my computer. Since a new user does not have some privilages required, installation had failed. I created a user of my own and re-installed the software:</p>
<p><code>DROP USER qute;<br />
CREATE USER qute IDENTIFIED BY qute;<br />
GRANT CONNECT, RESOURCE, DBA TO qute;<br />
GRANT EXECUTE ON utl_file TO qute;</code></p>
<p>(Script is available <a href="http://www.ozgurmacit.com/files/Unit-testing-01.sql" title="Script" target="_blank">here</a>. You must have necessary privileges to execute the script.)</p>
<p>I tested the test tool with a simple package. All I have done is writing this code and compiling it on any schema, say HR, then granting execute on this package to the user <code>qute</code>, or whatever schema Qute is installed. Then I open Qute and generate test cases for this package and simply <em>run</em> the test. That&#8217;s all. I did not write a simple line of code for testing.</p>
<p>What I don&#8217;t like about Qute is:</p>
<ul>
<li>It needs a schema to keep its own tables, etc. This is an obligation, though.</li>
<li>It needs several privilages to be given to that user to run test cases againist objects on other schemas.</li>
</ul>
<p>What I like about Qute is, I can now say &#8220;here is my documentation, if you update my code, your new code should success those cases&#8221;. That&#8217;s enough for me.</p>
<p><strong>Unit testing activities</strong></p>
<p>Following list is completely copied from <a href="http://iteso.mx/~pgutierrez/calidad/Estandares/IEEE%201008.pdf" title="IEEE Standard for Software Unit Testing" target="_blank">[3]</a>.</p>
<ol>
<li>Perform test planning phase
<ol>
<li>Plan the general approach, resources, and schedule</li>
<li>Determine features to be tested</li>
<li>Refine the general plan</li>
</ol>
</li>
<li>Acquire test set phase
<ol>
<li>Design the set of tests</li>
<li>Implement the refined plan and design</li>
</ol>
</li>
<li>Measure test unit phase
<ol>
<li>Execute the test procedures</li>
<li>Check for termination</li>
<li>Evaluate the test effort and unit</li>
</ol>
</li>
</ol>
<p><strong>Benefits of unit testing</strong></p>
<p>In <a href="http://en.wikipedia.org/wiki/Unit_test" title="Unit testing" target="_blank">Wikipedia</a> it is claimed that &#8220;<em>Unit testing is typically done by the developers and not by end-users</em>&#8220;. This fact, however it seems to be expense of unit testing to developer, is actually a benefit of unit testing.<br />
First of all, since unit testing methodology assumes that test cases are prepared before the implementation phase, test cases becomes <em>roadmap</em>s of actual implementation. Programmers just have to be aware of test cases to reduce the cost of maintenance.<br />
Secondly, <em>Unit Testing provides a sort of &#8220;living document&#8221;</em> <a href="http://en.wikipedia.org/wiki/Unit_test" title="Unit testing" target="_blank">[2]</a>. Same article on Wikipedia continues like this:</p>
<blockquote><p>Unit test cases embody characteristics that are critical to the success of the unit. These characteristics can indicate appropriate/inappropriate use of a unit as well as negative behaviors that are to be trapped by the unit.</p></blockquote>
<p><em>Unit testing documentation methodology</em> serves a permanent information about the software. This information is what is expected from the software and this does not change unless expectations are modified. That results in an easily maintained software. Whereas, ordinary documentation is highly related with how the program is implemented and requires to be updated frequently <a href="http://en.wikipedia.org/wiki/Unit_test" title="Unit testing" target="_blank">[2]</a>.</p>
<p><strong>References</strong></p>
<p>[1] <a href="http://en.wikipedia.org/wiki/Extreme_Programming" title="Extreme Programming">http://en.wikipedia.org/wiki/Extreme_Programming</a> : <em>Extreme Programming</em><br />
[2] <a href="http://en.wikipedia.org/wiki/Unit_test" title="Unit testing" target="_blank">http://en.wikipedia.org/wiki/Unit_test</a> : <span style="font-style: italic">Unit testing</span><br />
[3] <a href="http://iteso.mx/~pgutierrez/calidad/Estandares/IEEE%201008.pdf" title="IEEE Standard for Software Unit Testing" target="_blank">http://iteso.mx/~pgutierrez/calidad/Estandares/IEEE%201008.pdf</a> : <em>IEEE Standard for Software Unit Testing</em><br />
[4] <a href="http://technology.amis.nl/blog/?p=1041" title="Qute - new Unit Testing Engine for PL/SQL (successor for utPLSQL)" target="_blank">http://technology.amis.nl/blog/?p=1041</a> : <em>Qute - new Unit Testing Engine for PL/SQL (successor for utPLSQL)</em> by Lucas Jellema<br />
[5] <a href="http://www.apollo-pro.com/help/pl_unit.htm" target="_blank">http://www.apollo-pro.com/help/pl_unit.htm</a></p>
<p><strong>Code listing</strong></p>
<p>[1] <a href="http://www.ozgurmacit.com/files/Unit-testing-01.sql" title="Code listing 1" target="_blank">http://www.ozgurmacit.com/files/Unit-testing-01.sql</a><a href="http://www.ozgurmacit.com/files/Unit-testing-02.sql" title="Code listing 2" target="_blank"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ozgurmacit.com/2007/unit-testing/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
