<?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>ansiko®</title>
	<atom:link href="http://www.ansiko.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ansiko.com</link>
	<description>software &#38; web development, IT consulting</description>
	<lastBuildDate>Sat, 21 Nov 2009 23:02:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Software Development</title>
		<link>http://www.ansiko.com/2009/11/software-development/</link>
		<comments>http://www.ansiko.com/2009/11/software-development/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 23:02:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.ansiko.com/?p=346</guid>
		<description><![CDATA[Software development is the set of activities that results in software products. Software development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in software products. Especially the first phase in the software development process may involve many departments, including marketing, engineering, research and development and general management.
The term [...]]]></description>
			<content:encoded><![CDATA[<h3>Software development is the set of activities that results in software products. Software development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in software products. Especially the first phase in the software development process may involve many departments, including marketing, engineering, research and development and general management.</h3>
<p>The term software development may also refer to computer programming, the process of writing and maintaining the source code.</p>
<p>There are several different approaches to software development, much like the various views of political parties toward governing a country. Some take a more structured, engineering-based approach to developing business solutions, whereas others may take a more incremental approach, where software evolves as it is developed piece-by-piece.</p>
<p><span id="more-346"></span></p>
<p>Most methodologies share some combination of the following stages of software development:</p>
<ul>
<li>Market research</li>
<li>Gathering requirements for the proposed business solution</li>
<li>Analyzing the problem</li>
<li>Devising a plan or design for the software-based solution</li>
<li>Implementation (coding) of the software</li>
<li>Testing the software</li>
<li>Deployment</li>
<li>Maintenance and bug fixing</li>
</ul>
<p> These stages are often referred to collectively as the software development lifecycle, or SDLC. Different approaches to software development may carry out these stages in different orders, or devote more or less time to different stages. The level of detail of the documentation produced at each stage of software development may also vary. These stages may also be carried out in turn (a “waterfall” based approach), or they may be repeated over various cycles or iterations (a more &#8220;extreme&#8221; approach). The more extreme approach usually involves less time spent on planning and documentation, and more time spent on coding and development of automated tests. More “extreme” approaches also promote continuous testing throughout the development lifecycle, as well as having a working (or bug-free) product at all times. More structured or “waterfall” based approaches attempt to assess the majority of risks and develop a detailed plan for the software before implementation (coding) begins, and avoid significant design changes and re-coding in later stages of the software development lifecycle.</p>
<p>There are significant advantages and disadvantages to the various methodologies, and the best approach to solving a problem using software will often depend on the type of problem. If the problem is well understood and a solution can be effectively planned out ahead of time, the more &#8220;waterfall&#8221; based approach may work the best. If, on the other hand, the problem is unique (at least to the development team) and the structure of the software solution cannot be easily envisioned, then a more &#8220;extreme&#8221; incremental approach may work best. A software development process is a structure imposed on the development of a software product. Synonyms include software life cycle and software process. There are several models for such processes, each describing approaches to a variety of tasks or activities that take place during the process.</p>
<p>This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article “Software development”.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ansiko.com/2009/11/software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Testing</title>
		<link>http://www.ansiko.com/2009/11/software-testing/</link>
		<comments>http://www.ansiko.com/2009/11/software-testing/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 23:29:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.ansiko.com/?p=172</guid>
		<description><![CDATA[Software testing is an empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test, with respect to the context in which it is intended to operate. Software Testing also provides an objective, independent view of the software to allow the business to appreciate and understand the risks [...]]]></description>
			<content:encoded><![CDATA[<h3>Software testing is an empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test, with respect to the context in which it is intended to operate. Software Testing also provides an objective, independent view of the software to allow the business to appreciate and understand the risks at implementation of the software. Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs.</h3>
<p>Software Testing can also be stated as the process of validating and verifying that a software program/application/product:</p>
<ol>
<li>meets the business and technical requirements that guided its design and development;</li>
<li>works as expected; and</li>
<li>can be implemented with the same characteristics.</li>
</ol>
<p>Software Testing, depending on the testing method employed, can be implemented at any time in the development process. However, most of the test effort occurs after the requirements have been defined and the coding process has been completed. As such, the methodology of the test is governed by the Software Development methodology adopted.</p>
<p><span id="more-172"></span></p>
<p>Different software development models will focus the test effort at different points in the development process. In a more traditional model, most of the test effort occurs after the requirements have been defined and the coding process has been completed. Newer development models, such as Agile or XP, often employ test driven development and place an increased portion of the testing up front in the development process, in the hands of the developer.</p>
<h3>This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article “Software testing”.</h3>
]]></content:encoded>
			<wfw:commentRss>http://www.ansiko.com/2009/11/software-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax Programming</title>
		<link>http://www.ansiko.com/2009/11/ajax-programming/</link>
		<comments>http://www.ansiko.com/2009/11/ajax-programming/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 22:47:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AJAX Development]]></category>

		<guid isPermaLink="false">http://www.ansiko.com/?p=149</guid>
		<description><![CDATA[Ajax (shorthand for asynchronous JavaScript + XML) is a group of interrelated web development techniques used on the client-side to create interactive web applications. With Ajax, web applications can retrieve data from the server asynchronously in the background without interfering with the display and behavior of the existing page.
The use of Ajax techniques has led [...]]]></description>
			<content:encoded><![CDATA[<h3>Ajax (shorthand for asynchronous JavaScript + XML) is a group of interrelated web development techniques used on the client-side to create interactive web applications. With Ajax, web applications can retrieve data from the server asynchronously in the background without interfering with the display and behavior of the existing page.</h3>
<p>The use of Ajax techniques has led to an increase in interactive or dynamic interfaces on web pages. Data is usually retrieved using the XMLHttpRequest object. Despite the name, the use of JavaScript and XML is not actually required, nor do the requests need to be asynchronous.</p>
<p><span id="more-149"></span></p>
<h2>Constituent technologies</h2>
<p>Like DHTML and LAMP, Ajax is not a technology in itself, but a group of technologies. Ajax uses a combination of:</p>
<ul>
<li>HTML and CSS for marking up and styling information.</li>
<li>The DOM accessed with JavaScript to dynamically display and interact with the information presented.</li>
<li>A method for exchanging data asynchronously between browser and server, thereby avoiding page reloads. The XMLHttpRequest (XHR) object is usually used, but sometimes an IFrame object or a dynamically added &lt;script&gt; tag is used instead.</li>
<li>A format for the data sent to the browser. Common formats include XML, pre-formatted HTML, plain text, and JavaScript Object Notation (JSON). This data could be created dynamically by some form of server-side scripting.</li>
</ul>
<h2>Rationale</h2>
<ul>
<li>In many cases, related pages on a website consist of much content that is common between them. Using traditional methods, that content would have to be reloaded on every request. However, using Ajax, a web application can request only the content that needs to be updated, thus drastically reducing bandwidth usage and load time.</li>
<li>The use of asynchronous requests allows the client&#8217;s Web browser UI to be more interactive and to respond quickly to inputs, and sections of pages can also be reloaded individually. Users may perceive the application to be faster or more responsive, even if the application has not changed on the server side.</li>
<li>The use of Ajax can reduce connections to the server, since scripts and style sheets only have to be requested once.</li>
<li>State can be maintained throughout a Web site. JavaScript variables will persist because the main container page need not be reloaded.</li>
</ul>
<h2>Drawbacks</h2>
<ul>
<li>Ajax interfaces are substantially harder to develop properly than static pages.</li>
<li>Pages dynamically created using successive Ajax requests do not automatically register themselves with the browser&#8217;s history engine, so clicking the browser&#8217;s &#8220;back&#8221; button may not return the user to an earlier state of the Ajax-enabled page, but may instead return them to the last full page visited before it. Workarounds include the use of invisible IFrames to trigger changes in the browser&#8217;s history and changing the anchor portion of the URL (following a #) when Ajax is run and monitoring it for changes.</li>
<li>Dynamic web page updates also make it difficult for a user to bookmark a particular state of the application. Solutions to this problem exist, many of which use the URL fragment identifier (the portion of a URL after the &#8216;#&#8217;) to keep track of, and allow users to return to, the application in a given state.</li>
<li>Because most web crawlers do not execute JavaScript code, publicly indexable web applications should provide an alternative means of accessing the content that would normally be retrieved with Ajax, to allow search engines to index it.</li>
<li>Any user whose browser does not support JavaScript or XMLHttpRequest, or simply has this functionality disabled, will not be able to properly use pages which depend on Ajax. Similarly, devices such as mobile phones, PDAs, and screen readers may not have support for the required technologies. Screen readers that are able to use Ajax may still not be able to properly read the dynamically generated content. The only way to let the user carry out functionality is to fall back to non-JavaScript methods. This can be achieved by making sure links and forms can be resolved properly and do not rely solely on Ajax. In JavaScript, form submission could then be halted with &#8220;return false&#8221;.</li>
<li>The same origin policy prevents some Ajax techniques from being used across domains, although the W3C has a draft of the XMLHttpRequest object that would enable this functionality.</li>
<li>Ajax opens up another attack vector for malicious code that web developers might not fully test for.</li>
<li>Ajax-powered interfaces may dramatically increase the number of user-generated requests to web servers and their back-ends (databases, or other). This can lead to longer response times and/or additional hardware needs.</li>
<li>User interfaces can be confusing or behave inconsistently when normal web patterns are not followed.</li>
</ul>
<h3>This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article “Ajax (programming)”.</h3>
]]></content:encoded>
			<wfw:commentRss>http://www.ansiko.com/2009/11/ajax-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Information Technology Consulting</title>
		<link>http://www.ansiko.com/2009/11/information-technology-consulting/</link>
		<comments>http://www.ansiko.com/2009/11/information-technology-consulting/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 18:45:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IT Consulting]]></category>

		<guid isPermaLink="false">http://www.ansiko.com/?p=114</guid>
		<description><![CDATA[Information technology consulting (IT consulting, Computer consultancy, Computing consultancy, technology consulting or business and technology services) is a field that focuses on advising businesses on how best to use information technology to meet their business objectives. In addition to providing advice, IT consultancies often implement, deploy, and administer IT systems on businesses&#8217; behalf.
The IT consulting [...]]]></description>
			<content:encoded><![CDATA[<h3>Information technology consulting (IT consulting, Computer consultancy, Computing consultancy, technology consulting or business and technology services) is a field that focuses on advising businesses on how best to use information technology to meet their business objectives. In addition to providing advice, IT consultancies often implement, deploy, and administer IT systems on businesses&#8217; behalf.</h3>
<p>The IT consulting industry can be viewed as a three-tier system:</p>
<ul>
<li>Professional services firms which maintain large professional workforces and command high bill rates.</li>
<li>Staffing firms, which place technologists with businesses on a temporary basis, typically in response to employee absences, temporary skill shortages and technical projects.</li>
<li>Independent consultants, who function as employees of staffing firms (for US tax purposes, employed on &#8220;W-2&#8243;), or as independent contractors in their own right (for US tax purposes, on &#8220;1099&#8243;).</li>
</ul>
<p><span id="more-114"></span></p>
<p>There is a relatively unclear line between management consulting and IT consulting. There are sometimes overlaps between the two fields, but IT consultants often have degrees in computer science, electronics, technology, or management information systems while management consultants often have degrees in accounting, economics, Industrial Engineering, finance, or a generalized MBA (Masters in Business Administration).</p>
<p>According to the Institute for Partner Education &amp; Development, IT consultants&#8217; revenues come predominantly from design and planning based consulting with a mixture of IT and Business Consulting. This is different from a Systems Integrator in that you do not normally take title to product. Their value comes from their ability to integrate and support technologies as well as determining product and brands.</p>
<h3>This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article &#8220;Information technology consulting&#8221;.</h3>
]]></content:encoded>
			<wfw:commentRss>http://www.ansiko.com/2009/11/information-technology-consulting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reasons for Outsourcing</title>
		<link>http://www.ansiko.com/2009/10/reasons-for-outsourcing/</link>
		<comments>http://www.ansiko.com/2009/10/reasons-for-outsourcing/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 21:06:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Outsourcing]]></category>

		<guid isPermaLink="false">http://www.ansiko.com/?p=269</guid>
		<description><![CDATA[Organizations that outsource are seeking to realize benefits or address the following issues:

Cost savings. The lowering of the overall cost of the service to the business. This will involve reducing the scope, defining quality levels, re-pricing, re-negotiation, cost re-structuring. Access to lower cost economies through offshoring called &#8220;labor arbitrage&#8221; generated by the wage gap between [...]]]></description>
			<content:encoded><![CDATA[<h3>Organizations that outsource are seeking to realize benefits or address the following issues:</h3>
<ul>
<li><strong>Cost savings</strong>. The lowering of the overall cost of the service to the business. This will involve reducing the scope, defining quality levels, re-pricing, re-negotiation, cost re-structuring. Access to lower cost economies through offshoring called &#8220;labor arbitrage&#8221; generated by the wage gap between industrialized and developing nations.</li>
<li><strong>Focus on Core Business</strong>. Resources (for example investment, people, infrastructure) are focused on developing the core business. For example often organizations outsource their IT support to specialised IT services companies.</li>
<li><strong>Cost restructuring</strong>. Operating leverage is a measure that compares fixed costs to variable costs. Outsourcing changes the balance of this ratio by offering a move from fixed to variable cost and also by making variable costs more predictable.</li>
<li><strong>Improve quality</strong>. Achieve a step change in quality through contracting out the service with a new service level agreement.</li>
<li><strong>Knowledge</strong>. Access to intellectual property and wider experience and knowledge.<br />
Contract. Services will be provided to a legally binding contract with financial penalties and legal redress. This is not the case with internal services.</li>
<li><strong>Operational expertise</strong>. Access to operational best practice that would be too difficult or time consuming to develop in-house.</li>
<li><strong>Access to talent</strong>. Access to a larger talent pool and a sustainable source of skills, in particular in science and engineering.</li>
<li><strong>Capacity management</strong>. An improved method of capacity management of services and technology where the risk in providing the excess capacity is borne by the supplier.</li>
<li><strong>Catalyst for change</strong>. An organization can use an outsourcing agreement as a catalyst for major step change that can not be achieved alone. The outsourcer becomes a Change agent in the process.</li>
<li><strong>Enhance capacity for innovation</strong>. Companies increasingly use external knowledge service providers to supplement limited in-house capacity for product innovation.</li>
<li><strong>Reduce time to market</strong>. The acceleration of the development or production of a product through the additional capability brought by the supplier.</li>
<li><strong>Commodification</strong>. The trend of standardizing business processes, IT Services, and application services which enable to buy at the right price, allows businesses access to services which were only available to large corporations.</li>
<li><strong>Risk management</strong>. An approach to risk management for some types of risks is to partner with an outsourcer who is better able to provide the mitigation.</li>
<li><strong>Venture Capital</strong>. Some countries match government funds venture capital with private venture capital for startups that start businesses in their country.</li>
<li>Tax Benefit. Countries offer tax incentives to move manufacturing operations to counter high corporate taxes within another country.</li>
</ul>
<h3>This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article “Outsourcing”.</h3>
]]></content:encoded>
			<wfw:commentRss>http://www.ansiko.com/2009/10/reasons-for-outsourcing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing Methods</title>
		<link>http://www.ansiko.com/2009/09/testing-methods/</link>
		<comments>http://www.ansiko.com/2009/09/testing-methods/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 23:44:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.ansiko.com/?p=180</guid>
		<description><![CDATA[Software testing methods are traditionally divided into black box testing and white box testing. These two approaches are used to describe the point of view that a test engineer takes when designing test cases.
Black box testing
Black box testing treats the software as a &#8220;black box&#8221;—without any knowledge of internal implementation. Black box testing methods include: [...]]]></description>
			<content:encoded><![CDATA[<h3>Software testing methods are traditionally divided into black box testing and white box testing. These two approaches are used to describe the point of view that a test engineer takes when designing test cases.</h3>
<h2>Black box testing</h2>
<p>Black box testing treats the software as a &#8220;black box&#8221;—without any knowledge of internal implementation. Black box testing methods include: equivalence partitioning, boundary value analysis, all-pairs testing, fuzz testing, model-based testing, traceability matrix, exploratory testing and specification-based testing.</p>
<p><span id="more-180"></span></p>
<p>Specification-based testing: Specification-based testing aims to test the functionality of software according to the applicable requirements. Thus, the tester inputs data into, and only sees the output from, the test object. This level of testing usually requires thorough test cases to be provided to the tester, who then can simply verify that for a given input, the output value (or behavior), either &#8220;is&#8221; or &#8220;is not&#8221; the same as the expected value specified in the test case.</p>
<p>Specification-based testing is necessary, but it is insufficient to guard against certain risks.</p>
<p>Advantages and disadvantages: The black box tester has no &#8220;bonds&#8221; with the code, and a tester&#8217;s perception is very simple: a code must have bugs. Using the principle, &#8220;Ask and you shall receive,&#8221; black box testers find bugs where programmers do not. But, on the other hand, black box testing has been said to be &#8220;like a walk in a dark labyrinth without a flashlight,&#8221; because the tester doesn&#8217;t know how the software being tested was actually constructed. As a result, there are situations when (1) a tester writes many test cases to check something that could have been tested by only one test case, and/or (2) some parts of the back-end are not tested at all.</p>
<p>Therefore, black box testing has the advantage of &#8220;an unaffiliated opinion,&#8221; on the one hand, and the disadvantage of &#8220;blind exploring,&#8221; on the other.</p>
<h2>White box testing</h2>
<p>White box testing is when the tester has access to the internal data structures and algorithms including the code that implement these.</p>
<h3>Types of white box testing</h3>
<p>The following types of white box testing exist:</p>
<ol>
<li>API testing (application programming interface) &#8211; Testing of the application using Public and Private APIs</li>
<li>Code coverage &#8211; creating tests to satisfy some criteria of code coverage (e.g., the test designer can create tests to cause all statements in the program to be executed at least once)</li>
<li>Fault injection methods &#8211; improving the coverage of a test by introducing faults to test code paths</li>
<li>Mutation testing methods</li>
<li>Static testing &#8211; White box testing includes all static testing</li>
</ol>
<h3>Test coverage</h3>
<p>White box testing methods can also be used to evaluate the completeness of a test suite that was created with black box testing methods. This allows the software team to examine parts of a system that are rarely tested and ensures that the most important function points have been tested.</p>
<p>Two common forms of code coverage are:</p>
<ol>
<li>Function coverage, which reports on functions executed</li>
<li>Statement coverage, which reports on the number of lines executed to complete the test</li>
</ol>
<p>They both return a code coverage metric, measured as a percentage.</p>
<h2>Grey Box Testing</h2>
<p>Grey box testing involves having access to internal data structures and algorithms for purposes of designing the test cases, but testing at the user, or black-box level. Manipulating input data and formatting output do not qualify as grey box, because the input and output are clearly outside of the &#8220;black-box&#8221; that we are calling the system under test. This distinction is particularly important when conducting integration testing between two modules of code written by two different developers, where only the interfaces are exposed for test. However, modifying a data repository does qualify as grey box, as the user would not normally be able to change the data outside of the system under test. Grey box testing may also include reverse engineering to determine, for instance, boundary values or error messages. </p>
<h3>This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article “Software testing”.</h3>
]]></content:encoded>
			<wfw:commentRss>http://www.ansiko.com/2009/09/testing-methods/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Database Design</title>
		<link>http://www.ansiko.com/2009/08/database-design/</link>
		<comments>http://www.ansiko.com/2009/08/database-design/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 22:55:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Database Design]]></category>

		<guid isPermaLink="false">http://www.ansiko.com/?p=153</guid>
		<description><![CDATA[Database design is the process of producing a detailed data model of a database. This logical data model contains all the needed logical and physical design choices and physical storage parameters needed to generate a design in a Data Definition Language, which can then be used to create a database. A fully attributed data model [...]]]></description>
			<content:encoded><![CDATA[<h3>Database design is the process of producing a detailed data model of a database. This logical data model contains all the needed logical and physical design choices and physical storage parameters needed to generate a design in a Data Definition Language, which can then be used to create a database. A fully attributed data model contains detailed attributes for each entity.</h3>
<p>The term database design can be used to describe many different parts of the design of an overall database system. Principally, and most correctly, it can be thought of as the logical design of the base data structures used to store the data. In the relational model these are the tables and views. In an object database the entities and relationships map directly to object classes and named relationships. However, the term database design could also be used to apply to the overall process of designing, not just the base data structures, but also the forms and queries used as part of the overall database application within the database management system (DBMS).</p>
<p><span id="more-153"></span></p>
<h2>Design process</h2>
<p>The process of doing database design generally consists of a number of steps which will be carried out by the database designer. Not all of these steps will be necessary in all cases. Usually, the designer must:</p>
<ul>
<li>Determine the relationships between the different data elements.</li>
<li>Superimpose a logical structure upon the data on the basis of these relationships.</li>
</ul>
<p>Within the relational model the final step can generally be broken down into two further steps, that of determining the grouping of information within the system, generally determining what are the basic objects about which information is being stored, and then determining the relationships between these groups of information, or objects. This step is not necessary with an Object database.</p>
<p>The tree structure of data may enforce a hierarchical model organization, with a parent-child relationship table. An Object database will simply use a one-to-many relationship between instances of an object class. It also introduces the concept of a hierarchical relationship between object classes, termed inheritance.</p>
<h2>Determining data to be stored</h2>
<p>In a majority of cases, a person who is doing the design of a database is a person with expertise in the area of database design, rather than expertise in the domain from which the data to be stored is drawn e.g. financial information, biological information etc. Therefore the data to be stored in the database must be determined in cooperation with a person who does have expertise in that domain, and who is aware of what data must be stored within the system.</p>
<p>This process is one which is generally considered part of requirements analysis, and requires skill on the part of the database designer to elicit the needed information from those with the domain knowledge. This is because those with the necessary domain knowledge frequently cannot express clearly what their system requirements for the database are as they are unaccustomed to thinking in terms of the discrete data elements which must be stored. Data to be stored can be determined by Requirement Specification.</p>
<h2>Conceptual schema</h2>
<p>Once a database designer is aware of the data which is to be stored within the database, they must then determine where dependancy is within the data. Sometimes when data is changed you can be changing other data that is not visible. For example, in a list of names and addresses, assuming a situation where multiple people can have the same address, but one person cannot have more than one addresses, the name is dependent upon the address, because if the address is different then the associated name is different too. However, the other way around is different. One attribute can change and not another.</p>
<p>(NOTE: A common misconception is that the relational model is so called because of the stating of relationships between data elements therein. This is not true. The relational model is so named such because it is based upon the mathematical structures known as relations.)</p>
<h2>Logically structuring data</h2>
<p>Once the relationships and dependencies amongst the various pieces of information have been determined, it is possible to arrange the data into a logical structure which can then be mapped into the storage objects supported by the database management system. In the case of relational databases the storage objects are tables which store data in rows and columns.</p>
<p>Each table may represent an implementation of either a logical object or a relationship joining one or more instances of one or more logical objects. Relationships between tables may then be stored as links connecting child tables with parents. Since complex logical relationships are themselves tables they will probably have links to more than one parent.</p>
<p>In an Object database the storage objects correspond directly to the objects used by the Object-oriented programming language used to write the applications that will manage and access the data. The relationships may be defined as attributes of the object classes involved or as methods that operate on the object classes.</p>
<h2>Physical database design</h2>
<p>The physical design of the database specifies the physical configuration of the database on the storage media. This includes detailed specification of data elements, data types, indexing options and other parameters residing in the DBMS data dictionary. It is the detailed design of a system that includes modules &amp; the database&#8217;s hardware &amp; software specifications of the system.</p>
<h3>This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article “Database design”.</h3>
]]></content:encoded>
			<wfw:commentRss>http://www.ansiko.com/2009/08/database-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Software Platform</title>
		<link>http://www.ansiko.com/2009/07/java-software-platform/</link>
		<comments>http://www.ansiko.com/2009/07/java-software-platform/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 23:53:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java Development]]></category>

		<guid isPermaLink="false">http://www.ansiko.com/?p=185</guid>
		<description><![CDATA[Java refers to a number of computer software products and specifications from Sun Microsystems that together provide a system for developing application software and deploying it in a cross-platform environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones on the low end, to enterprise servers and supercomputers [...]]]></description>
			<content:encoded><![CDATA[<h3>Java refers to a number of computer software products and specifications from Sun Microsystems that together provide a system for developing application software and deploying it in a cross-platform environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones on the low end, to enterprise servers and supercomputers on the high end. Java is nearly ubiquitous in mobile phones, Web servers and enterprise applications, and while less common on desktop computers, Java applets are often used to provide improved and secure functionalities while browsing the World Wide Web.</h3>
<p>Writing in the Java programming language is the primary way to produce code that will be deployed as Java bytecode, though there are bytecode compilers available for other languages such as JavaScript, Python, Ruby and Scala, and a native Java scripting language called Groovy. Java syntax borrows heavily from C and C++ but it eliminates certain low-level constructs such as pointers and has a very simple memory model where every object is allocated on the heap and all variables of object types are references. Memory management is handled through integrated automatic garbage collection performed by the Java Virtual Machine (JVM).</p>
<p><span id="more-185"></span></p>
<p>On November 13, 2006, Sun Microsystems made the bulk of its implementation of Java available under the GNU General Public License, although there are still a few parts distributed as precompiled binaries due to copyright issues with Sun-licensed (not owned) code.</p>
<h2>History</h2>
<p>The Java platform and language began as an internal project at Sun Microsystems in December 1990, providing an alternative to the C++/C programming languages. Engineer Patrick Naughton had become increasingly frustrated with the state of Sun&#8217;s C++ and C APIs (application programming interfaces) and tools. While considering moving to NeXT, Naughton was offered a chance to work on new technology and thus the Stealth Project was started.</p>
<p>The Stealth Project was soon renamed to the Green Project with James Gosling and Mike Sheridan joining Naughton. Together with other engineers, they began work in a small office on Sand Hill Road in Menlo Park, California. They were attempting to develop a new technology for programming next generation smart appliances, which Sun expected to be a major new opportunity.</p>
<p>The team originally considered using C++, but it was rejected for several reasons. Because they were developing an embedded system with limited resources, they decided that C++ demanded too large a footprint and that its complexity led to developer errors. The language&#8217;s lack of garbage collection meant that programmers had to manually manage system memory, a challenging and error-prone task. The team was also troubled by the language&#8217;s lack of portable facilities for security, distributed programming, and threading. Finally, they wanted a platform that could be easily ported to all types of devices.</p>
<p>Bill Joy had envisioned a new language combining the best of Mesa and C. In a paper called Further, he proposed to Sun that its engineers should produce an object-oriented environment based on C++. Initially, Gosling attempted to modify and extend C++ (which he referred to as &#8220;C++ ++ &#8211;&#8221;) but soon abandoned that in favor of creating an entirely new language, which he called Oak, after the tree that stood just outside his office.</p>
<p>By the summer of 1992, they were able to demonstrate portions of the new platform including the Green OS, the Oak language, the libraries, and the hardware. Their first attempt, demonstrated on September 3, 1992, focused on building a PDA device named Star7 which had a graphical interface and a smart agent called &#8220;Duke&#8221; to assist the user. In November of that year, the Green Project was spun off to become firstperson, a wholly owned subsidiary of Sun Microsystems, and the team relocated to Palo Alto, California. The firstperson team was interested in building highly interactive devices, and when Time Warner issued an RFP for a set-top box, firstperson changed their target and responded with a proposal for a set-top box platform. However, the cable industry felt that their platform gave too much control to the user and firstperson lost their bid to SGI. An additional deal with The 3DO Company for a set-top box also failed to materialize. Unable to generate interest within the TV industry, the company was rolled back into Sun.</p>
<h2>Java meets the Internet</h2>
<p>Java Web Start allows provisioning applications over the WebIn June and July 1994, after three days of brainstorming with John Gage, the Director of Science for Sun, Gosling, Joy, Naughton, Wayne Rosing, and Eric Schmidt, the team re-targeted the platform for the World Wide Web. They felt that with the advent of the first graphical web browser, Mosaic, the Internet was on its way to evolving into the same highly interactive medium that they had envisioned for cable TV. As a prototype, Naughton wrote a small browser, WebRunner (named after the movie Blade Runner), later renamed HotJava.</p>
<p>That year, the language was renamed Java after a trademark search revealed that Oak was used by Oak Technology. A load was released in 1994, but the first public release of Java and the HotJava browser was on May 23, 1995, announced by Gage at the SunWorld conference. His announcement was accompanied by a surprise announcement by Marc Andreessen, Executive Vice President of Netscape Communications Corporation, that Netscape browsers would be including Java support. On January 9, 1996, the JavaSoft group was formed by Sun Microsystems in order to develop the technology.</p>
<h3>This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article “Java (software platform)”.</h3>
]]></content:encoded>
			<wfw:commentRss>http://www.ansiko.com/2009/07/java-software-platform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NET Framework</title>
		<link>http://www.ansiko.com/2009/06/net-framework/</link>
		<comments>http://www.ansiko.com/2009/06/net-framework/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 21:12:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Microsoft.NET Development]]></category>

		<guid isPermaLink="false">http://www.ansiko.com/?p=272</guid>
		<description><![CDATA[The Microsoft .NET Framework is a software framework that can be installed on computers running Microsoft Windows operating systems. It includes a large library of coded solutions to common programming problems and a virtual machine that manages the execution of programs written specifically for the framework. The .NET Framework is a Microsoft offering and is [...]]]></description>
			<content:encoded><![CDATA[<h3>The Microsoft .NET Framework is a software framework that can be installed on computers running Microsoft Windows operating systems. It includes a large library of coded solutions to common programming problems and a virtual machine that manages the execution of programs written specifically for the framework. The .NET Framework is a Microsoft offering and is intended to be used by most new applications created for the Windows platform.</h3>
<p>The framework&#8217;s Base Class Library provides a large range of features including user interface, data and data access, database connectivity, cryptography, web application development, numeric algorithms, and network communications. The class library is used by programmers, who combine it with their own code to produce applications.</p>
<p><span id="more-272"></span></p>
<p>Programs written for the .NET Framework execute in a software environment that manages the program&#8217;s runtime requirements. Also part of the .NET Framework, this runtime environment is known as the Common Language Runtime (CLR). The CLR provides the appearance of an application virtual machine so that programmers need not consider the capabilities of the specific CPU that will execute the program. The CLR also provides other important services such as security, memory management, and exception handling. The class library and the CLR together constitute the .NET Framework.</p>
<p>Version 3.0 of the .NET Framework is included with Windows Server 2008 and Windows Vista. The current version of the framework can also be installed on Windows XP and the Windows Server 2003 family of operating systems. A reduced version of the .NET Framework, the .NET Compact Framework, is also available on Windows Mobile platforms, including smartphones. Version 4.0 of the framework was released as a public Beta on 20 May 2009. Additionally, the .Net Framework includes the .Net Micro Framework targetted at severely resource constrained devices.</p>
<h3>This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article “.NET Framework”.</h3>
]]></content:encoded>
			<wfw:commentRss>http://www.ansiko.com/2009/06/net-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Testing Topics</title>
		<link>http://www.ansiko.com/2009/06/software-testing-topics/</link>
		<comments>http://www.ansiko.com/2009/06/software-testing-topics/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 23:35:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.ansiko.com/?p=176</guid>
		<description><![CDATA[Testing can never completely identify all the defects within software. Instead, it furnishes a criticism or comparison that compares the state and behavior of the product against oracles—principles or mechanisms by which someone might recognize a problem. These oracles may include (but are not limited to) specifications, contracts, comparable products, past versions of the same [...]]]></description>
			<content:encoded><![CDATA[<h3>Testing can never completely identify all the defects within software. Instead, it furnishes a criticism or comparison that compares the state and behavior of the product against oracles—principles or mechanisms by which someone might recognize a problem. These oracles may include (but are not limited to) specifications, contracts, comparable products, past versions of the same product, inferences about intended or expected purpose, user or customer expectations, relevant standards, applicable laws, or other criteria.</h3>
<p>Every software product has a target audience. For example, the audience for video game software is completely different from banking software. Therefore, when an organization develops or otherwise invests in a software product, it can assess whether the software product will be acceptable to its end users, its target audience, its purchasers, and other stakeholders. Software testing is the process of attempting to make this assessment.</p>
<p>A study conducted by NIST in 2002 reports that software bugs cost the U.S. economy $59.5 billion annually. More than a third of this cost could be avoided if better software testing was performed.</p>
<p><span id="more-176"></span></p>
<h2>Scope</h2>
<p>A primary purpose for testing is to detect software failures so that defects may be uncovered and corrected. This is a non-trivial pursuit. Testing cannot establish that a product functions properly under all conditions but can only establish that it does not function properly under specific conditions.[12] The scope of software testing often includes examination of code as well as execution of that code in various environments and conditions as well as examining the aspects of code: does it do what it is supposed to do and do what it needs to do. In the current culture of software development, a testing organization may be separate from the development team. There are various roles for testing team members. Information derived from software testing may be used to correct the process by which software is developed.</p>
<h2>Functional vs non-functional testing</h2>
<p>Functional testing refers to tests that verify a specific action or function of the code. These are usually found in the code requirements documentation, although some development methodologies work from use cases or user stories. Functional tests tend to answer the question of &#8220;can the user do this&#8221; or &#8220;does this particular feature work&#8221;.</p>
<p>Non-functional testing refers to aspects of the software that may not be related to a specific function or user action, such as scalability or security. Non-functional testing tends to answer such questions as &#8220;how many people can log in at once&#8221;, or &#8220;how easy is it to hack this software&#8221;.</p>
<h2>Defects and failures</h2>
<p>Not all software defects are caused by coding errors. One common source of expensive defects is caused by requirement gaps, e.g., unrecognized requirements, that result in errors of omission by the program designer. A common source of requirements gaps is non-functional requirements such as testability, scalability, maintainability, usability, performance, and security.</p>
<p>Software faults occur through the following processes. A programmer makes an error (mistake), which results in a defect (fault, bug) in the software source code. If this defect is executed, in certain situations the system will produce wrong results, causing a failure. Not all defects will necessarily result in failures. For example, defects in dead code will never result in failures. A defect can turn into a failure when the environment is changed. Examples of these changes in environment include the software being run on a new hardware platform, alterations in source data or interacting with different software. A single defect may result in a wide range of failure symptoms.</p>
<h2>Compatibility</h2>
<p>A frequent cause of software failure is compatibility with another application, a new operating system, or, increasingly, web browser version. In the case of lack of backward compatibility, this can occur (for example&#8230;) because the programmers have only considered coding their programs for, or testing the software upon, &#8220;the latest version of&#8221; this-or-that operating system. The unintended consequence of this fact is that: their latest work might not be fully compatible with earlier mixtures of software/hardware, or it might not be fully compatible with another important operating system. In any case, these differences, whatever they might be, may have resulted in (unintended&#8230;) software failures, as witnessed by some significant population of computer users.</p>
<p>This could be considered a &#8220;prevention oriented strategy&#8221; that fits well with the latest testing phase suggested by Dave Gelperin and William C. Hetzel, as cited below .</p>
<h2>Input combinations and preconditions</h2>
<p>A very fundamental problem with software testing is that testing under all combinations of inputs and preconditions (initial state) is not feasible, even with a simple product.[12][18] This means that the number of defects in a software product can be very large and defects that occur infrequently are difficult to find in testing. More significantly, non-functional dimensions of quality (how it is supposed to be versus what it is supposed to do)—usability, scalability, performance, compatibility, reliability—can be highly subjective; something that constitutes sufficient value to one person may be intolerable to another.</p>
<h2>Static vs. dynamic testing</h2>
<p>There are many approaches to software testing. Reviews, walkthroughs, or inspections are considered as static testing, whereas actually executing programmed code with a given set of test cases is referred to as dynamic testing. Static testing can be (and unfortunately in practice often is) omitted. Dynamic testing takes place when the program itself is used for the first time (which is generally considered the beginning of the testing stage). Dynamic testing may begin before the program is 100% complete in order to test particular sections of code (modules or discrete functions). Typical techniques for this are either using stubs/drivers or execution from a debugger environment. For example, Spreadsheet programs are, by their very nature, tested to a large extent interactively (&#8221;on the fly&#8221;), with results displayed immediately after each calculation or text manipulation.</p>
<h3>This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article “Software testing”.</h3>
<h3>This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article “Software testing”.</h3>
]]></content:encoded>
			<wfw:commentRss>http://www.ansiko.com/2009/06/software-testing-topics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
