<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Learn Software Development &#187; Coding</title>
	<atom:link href="http://learnsoftwareprocesses.com/category/coding/feed/" rel="self" type="application/rss+xml" />
	<link>http://learnsoftwareprocesses.com</link>
	<description>All about the processes involved in software development</description>
	<lastBuildDate>Sun, 20 May 2012 19:17:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Construction Practice &#8211; Type of Software Egineering practice</title>
		<link>http://learnsoftwareprocesses.com/2009/10/20/construction-practice-type-of-software-egineering-practice/</link>
		<comments>http://learnsoftwareprocesses.com/2009/10/20/construction-practice-type-of-software-egineering-practice/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 19:34:42 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Construction Practice]]></category>
		<category><![CDATA[software engineering]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=426</guid>
		<description><![CDATA[<p>The construction activity encompasses a set of coding and testing tasks that lead to operational software that is ready for delivery to the customer or end-user. A set of fundamental principles and concepts are applicable to coding and testing. 1. Coding principles : A number of fundamental principles that can be stated are : - [...]]]></description>
			<content:encoded><![CDATA[<p>The construction activity encompasses a set of coding and testing tasks that lead to operational software that is ready for delivery to the customer or end-user. A set of  fundamental principles and concepts are applicable to coding and testing.<br />
1. Coding principles : A number of fundamental principles that can be stated are :<br />
- Preparation principles<br />
* Understand the problem you are trying to solve.<br />
* Understand the basic design principles and concepts.<br />
* Pick an appropriate programming language.<br />
* Select a programming environment.<br />
* Create a set of unit tests that will be applied once the component you code is completed.<br />
- Coding Principles<br />
* Constrain your algorithms by following structured programming practice.<br />
* Select data structures.<br />
* Understand the software architecture and create interfaces.<br />
* Keep conditional logic as simple as possible.<br />
* Create nested loops in a way that makes them easily testable.<br />
* Select meaningful variable names and follow other local coding standards.<br />
* Write code that is self-documenting.<br />
* Create a visual layout.<br />
- Validation principles<br />
* Conduct a code walk through when appropriate.<br />
* Perform unit tests.<br />
* Refactor the code.<br />
2. Testing Principles : It is a process of executing a program with the intent of finding an error. A set of testing principles that have been adapted are :<br />
- All tests should be traceable to customer requirements.<br />
- Tests should be planned long before testing begins.<br />
- The Pareto principle states that 80% of all errors uncovered during testing will likely be traceable to 20% of all program components applies to software testing.<br />
- Testing should begin &#8220;in the small&#8221; and progress toward testing &#8220;in the large&#8221;.<br />
- Exhaustive testing is not possible.    </p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2009/10/20/construction-practice-type-of-software-egineering-practice/' addthis:title='Construction Practice &#8211; Type of Software Egineering practice '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/10/20/construction-practice-type-of-software-egineering-practice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing details during the SDLC phases</title>
		<link>http://learnsoftwareprocesses.com/2008/04/06/testing-details-during-the-sdlc-phases/</link>
		<comments>http://learnsoftwareprocesses.com/2008/04/06/testing-details-during-the-sdlc-phases/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 18:06:30 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/2008/04/06/testing-details-during-the-sdlc-phases/</guid>
		<description><![CDATA[<p>Details of testing requirements during broad phases of the SDLC:</p> <p>REQUIREMENTS ANALYSIS</p> <p>Test activities that should be performed during this stage are:</p> <p>• Have a clear, concise and formal statement of the requirements; this means that the requirements statement should record the information as 1. What the program must do? 2. The input and data [...]]]></description>
			<content:encoded><![CDATA[<p>Details of testing requirements during broad phases of the SDLC:</p>
<p>REQUIREMENTS ANALYSIS</p>
<p>Test activities that should be performed during this stage are:</p>
<p>•	Have a clear, concise and formal statement of the requirements; this means that the requirements statement should record the information as<br />
1.	What the program must do?<br />
2.	The input and data formats?<br />
3.	The output data formats?<br />
4.	How exceptions, errors and deviations are to be handled?<br />
5.	Hardware &#038; Software required?</p>
<p>•	Start developing the test set at the requirements analysis phase – data should be generated that can be used to determine whether the requirements have been met. To do this, the input domain should be partitioned into classes of values that the program will treat and for each class a representative element should be included along with the boundary values and any non extreme input values that requires special handling. The output domain should be treated in a similar fashion.</p>
<p>•	The correctness, consistency and completeness of the requirements should also be analyzed – whether the problem is being solved, check for conflicts and inconsistencies among the requirements and consider the possibility of missing cases.</p>
<p>DESIGN</p>
<p>The design document should contain:<br />
•	Principal data structures<br />
•	Functional algos, heuristics/special techniques used for processing.<br />
•	How the program is organized?</p>
<p>Testing activities should consist of:<br />
•	Analysis of design to check its completeness and consistency – no steps or special cases should be overlooked. Internal interfaces, i/o handling and data structures should be checked for inconsistencies.<br />
•	Analysis of design to check whether it satisfies the requirements – both the requirements and design document contain the same form, format, units. All the functions listed in requirement document should be included in design document. Also, the design should yield the expected values.<br />
•	Generation of test data based on the design – the tests generated should cover the structure as well as the internal functions of the design. Standard extreme and special values should be recorded.<br />
•	Reexamination and refinement of the test data set generated at the requirements analysis phase.</p>
<p>PROGRAMMING/CONSTRUCTION</p>
<p>The main testing points are:<br />
•	Check the code for consistency with design – areas to check include modular structure, module interfaces, data structures, functions, algorithms and I/O handling.<br />
•	Perform the testing process in an organized and systematic manner with test runs dated, automated and saved.<br />
•	Ask some colleague for assistance – the programmer should explain the product to the party who will then question the logic and search for errors with a checklist to guide the search.<br />
•	Use available tools like various compilers and interpreters that are available on the system for the implementation language being used because they differ in their error analysis and code generation capabilities.<br />
•	Apply stress to the program – testing should exercise and stress the program structure, data structure, internal functions and the extremely visible functions or functionality.<br />
•	Test one at a time – Pieces of code, individual modules and small collections of modules should be exercised separately before they are integrated into a complete program because errors are easier to isolate when the number of potential interactions are kept small.<br />
•	Measure testing coverage/When should testing stop? – the metrics used to measure testing thoroughness include statement testing(whether each statement has been executed at least once), branch testing(whether each exit from each branch has been executed at least once) and path testing(whether all logical paths have been executed at least once).</p>
<p>OPERATIONS &#038; MAINTENANCE</p>
<p>Testing during maintenance is termed regression testing. The test set, the test plan, and the test results for the original program should exist. Modifications must be made to accommodate the program changes, and then all the portions of the program affected by the modifications must be retested. After regression testing is completed, the program and test document should be updated to reflect changes. </p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2008/04/06/testing-details-during-the-sdlc-phases/' addthis:title='Testing details during the SDLC phases '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2008/04/06/testing-details-during-the-sdlc-phases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is branching ?</title>
		<link>http://learnsoftwareprocesses.com/2007/12/27/what-is-branching/</link>
		<comments>http://learnsoftwareprocesses.com/2007/12/27/what-is-branching/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 14:36:20 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Terms]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/2007/12/27/what-is-branching/</guid>
		<description><![CDATA[<p>Branching, in revision control and software configuration management, is the duplication of an object under revision control (such as a source code file, or a directory tree) in such a way that the newly created object has initially the same contents as the version branched off from, and (more importantly) development (creation of new versions) [...]]]></description>
			<content:encoded><![CDATA[<p>Branching, in revision control and software configuration management, is the duplication of an object under revision control (such as a source code file, or a directory tree) in such a way that the newly created object has initially the same contents as the version branched off from, and (more importantly) development (creation of new versions) can happen in parallel along both branches. A branch is an agreed split in path of an item [item, product, or system] into 2 paths. Each path can maintain independent changes to the configuration item(s).<br />
Branching is integral to version management, software build correctness, and release management. It enables parallel development of a new system and provides concurrent support of multiple releases by labeling each instance of a branched configuration item and establishing a mapping between the label and the module revisions. Some revision control systems have specific jargon for the main development branch &#8211; for example, in CVS, it is called the &#8220;MAIN&#8221;. A more generic term is &#8220;mainline&#8221;.<br />
The basic concept of a branch: A line of development that exists independently of another line, yet still shares a common history. A branch always begins life as a copy of something, and moves on from there, generating its own history. Software branching is commonly seen when adapting one software product to different environments or targeting customers in software industry. Branching also generally implies the ability to later merge the differences accrued to an object on a branch back onto its parent branch. Often the changes are merged back to the trunk (even if this is not the parent branch).</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2007/12/27/what-is-branching/' addthis:title='What is branching ? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2007/12/27/what-is-branching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problems in trying to implement coding standards</title>
		<link>http://learnsoftwareprocesses.com/2007/10/13/problems-in-trying-to-implement-coding-standards/</link>
		<comments>http://learnsoftwareprocesses.com/2007/10/13/problems-in-trying-to-implement-coding-standards/#comments</comments>
		<pubDate>Sat, 13 Oct 2007 16:50:11 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Document]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/2007/10/13/problems-in-trying-to-implement-coding-standards/</guid>
		<description><![CDATA[<p>Coding standards sound like the best thing possible; they help in getting uniformity, they enable easy transition, they promote easy code review and preparation of documents such as SDK&#8217;s, and so on. So why would you not be able to get coding standards implemented across development teams ? Mostly it is due to individuality. Most [...]]]></description>
			<content:encoded><![CDATA[<p>Coding standards sound like the best thing possible; they help in getting uniformity, they enable easy transition, they promote easy code review and preparation of documents such as SDK&#8217;s, and so on. So why would you not be able to get coding standards implemented across development teams ?<br />
Mostly it is due to individuality. Most developers are used to writing code as they are most comfortable, and having to modify this approach to write to a common standard is hard.<br />
A lot of developers start work in smaller places where there is less pressure to follow standards, and only then move to places that encourage standards. But by the time they are in a position to follow standards, they have already got a set style.<br />
Trying to enforce a coding standard without explaining the reasons is bound to cause a lot of resentment and lead to a feeling that a &#8216;process&#8217; decision has been taken by a manager. In fact, given the number of reasons in favor of having coding standards, it is far more effective to get the senior coders bought in first, and they will be easily able to drive adoption.<br />
Trying to take an external style and enforcing it for the entire team may fail. It is better to let the team develop a standard that works for the entire team and use that standard.<br />
In many cases, such as developers writing in Perl <img src='http://learnsoftwareprocesses.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , there is a feeling that trying to enforce a standard crimps their style.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2007/10/13/problems-in-trying-to-implement-coding-standards/' addthis:title='Problems in trying to implement coding standards '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2007/10/13/problems-in-trying-to-implement-coding-standards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coding standards for different languages</title>
		<link>http://learnsoftwareprocesses.com/2007/10/13/coding-standards-for-different-languages/</link>
		<comments>http://learnsoftwareprocesses.com/2007/10/13/coding-standards-for-different-languages/#comments</comments>
		<pubDate>Sat, 13 Oct 2007 16:25:48 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Document]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/2007/10/13/coding-standards-for-different-languages/</guid>
		<description><![CDATA[<p>Nowadays code can be written in a number of different platforms and architectures. For example, earlier, you would have primarily C and C++ as the different languages in which code was written for a majority of applications, but now there are so many different languages and platforms that the same coding standards cannot be used [...]]]></description>
			<content:encoded><![CDATA[<p>Nowadays code can be written in a number of different platforms and architectures. For example, earlier, you would have primarily C and C++ as the different languages in which code was written for a majority of applications, but now there are so many different languages and platforms that the same coding standards cannot be used for all of them. So, here is a compilation of possible coding standards for these varies languages and platforms:</p>
<p>1. C (<a href="http://www.lrdev.com/lr/c/ccgl.html" target="_blank">link</a>)</p>
<p>2. C/C++ for embedded development (<a href="http://www.shift-right.com/openrepo/codingstandard.htm" target="_blank">link</a>)</p>
<p>3. Visual Basic 6 (<a href="http://www.visibleprogress.com/vb_coding_standards.htm" target="_blank">link</a>)</p>
<p>4. Visual Basic .Net (<a href="http://addressof.com/blog/articles/codingguidelines.aspx" target="_blank">link</a>)</p>
<p>5. .Net Conventions (C#, VB .Net, J# .Net) (<a href="http://www.irritatedvowel.com/Programming/Standards.aspx" target="_blank">link</a>, <a href="http://submain.com/?nav=products.guidelines" target="_blank">link2</a>)</p>
<p>6. Java (<a href="http://www.ontko.com/java/java_coding_standards.html" target="_blank">link</a>, <a href="http://collaboratory.emsl.pnl.gov/docs/collab/sam/CodeStandards.html" target="_blank">link2</a>)</p>
<p>7. HTML (<a href="http://www.cs.niu.edu/html_coding/niu.html.standards.html" target="_blank">link</a>, <a href="http://web.ics.purdue.edu/~cs180/Fall2006cs177/hstandards.html" target="_blank">link2</a>)</p>
<p>8. Perl (<a href="http://www.textrush.com/coding-standard-perl.htm" target="_blank">link</a>, <a href="http://www.wellho.net/resources/perlstandards.html" target="_blank">link2</a>, <a href="http://www.well.ox.ac.uk/~valdar/software/perlconventions.html" target="_blank">link3</a>)</p>
<p>9. Python (<a href="http://www.python.org/dev/peps/pep-0008/" target="_blank">link</a>, <a href="http://lists.osafoundation.org/pipermail/dev/2003-March/000479.html" target="_blank">link2</a>, <a href="http://jaynes.colorado.edu/PythonGuidelines.html" target="_blank">link3</a>)</p>
<p>10. PHP (<a href="http://www.dagbladet.no/development/phpcodingstandard/" target="_blank">link</a>, <a href="http://framework.zend.com/manual/en/coding-standard.html" target="_blank">link2</a>, <a href="http://godbit.com/article/introduction-to-php-coding-standards" target="_blank">link3</a>)</p>
<p>11. Ruby (<a href="http://www.caliban.org/ruby/rubyguide.shtml" target="_blank">link</a>, <a href="http://craigrandall.net/archives/2006/09/ruby-coding-stds-etc/" target="_blank">link2</a>)</p>
<p>12. JavaScript (<a href="http://javascript.crockford.com/code.html" target="_blank">link</a>, <a href="http://www.builderau.com.au/webdev/scripting/soa/Take-advantage-of-JavaScript-coding-guidelines/0,339024692,320281588,00.htm" target="_blank">link2</a>, <a href="http://c2.com/cgi/wiki?JavaScriptCodingStandard" target="_blank">link3</a>)</p>
<p>13. CSS (<a href="http://www.phpied.com/css-coding-conventions/" target="_blank">link</a>, <a href="http://www.w3.org/Style/CSS/" target="_blank">link2</a>, <a href="http://bitworking.org/news/CSS_Coding_Style" target="_blank">link3</a>)</p>
<p>14. ActionScript (Flash) (<a href="http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&#038;file=00001640.html" target="_blank">link</a>, <a href="http://www.adobe.com/devnet/flash/whitepapers/actionscript_standards.pdf" target="_blank">link2 (PDF)</a>)</p>
<p>15. C++ (<a href="http://www.possibility.com/Cpp/CppCodingStandard.html" target="_blank">link</a>, <a href="http://www.chris-lott.org/resources/cstyle/CppCodingStandard.html" target="_blank">link2</a>, <a href="http://pst.web.cern.ch/PST/HandBookWorkBook/Handbook/Programming/CodingStandard/c++standard.pdf" target="_blank">link3</a>)</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2007/10/13/coding-standards-for-different-languages/' addthis:title='Coding standards for different languages '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2007/10/13/coding-standards-for-different-languages/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

