<?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> &#187; Uncategorized</title>
	<atom:link href="http://blog.mapleworks.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mapleworks.com</link>
	<description></description>
	<lastBuildDate>Thu, 29 Jul 2010 19:33:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Agile Blog: My first experience using the Agile methods</title>
		<link>http://blog.mapleworks.com/2009/08/agile-blog-my-first-experience-using-the-agile-methods/</link>
		<comments>http://blog.mapleworks.com/2009/08/agile-blog-my-first-experience-using-the-agile-methods/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 21:55:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mapleworks.com/?p=3</guid>
		<description><![CDATA[After wrapping up a VOIP project using a conventional waterfall process, I joined a group of very talented web designers on a web portal project using the Agile process. Both projects are quite large in terms of the size of the code base. Each release for the previous VOIP project lasted anywhere from 8 to [...]]]></description>
			<content:encoded><![CDATA[<p>After wrapping up a VOIP project using a conventional waterfall process, I joined a group of very talented web designers on a web portal project using the Agile process. Both projects are quite large in terms of the size of the code base. Each release for the previous VOIP project lasted anywhere from 8 to 12 months. On this current project, a release normally takes around 2 to 3 months, which typically includes 3 to 4 development iterations, 1 regression testing iteration and 1 hardening iteration.</p>
<p>My first impression of the Agile process is that it is very progressive. I can easily see the progress made by each developer as well as the entire team on a daily basis. This was rarely the case in the previous waterfall development environment. The several initial releases of this project have confirmed my observation that being able to deliver early results, with much sooner return on investment if you will, is one of the Agile method&#8217;s greatest strengths.</p>
<p>The Agile process is light-weight as opposed to the traditional well-structured heavier waterfall process. Light-weight does not mean that there is less control or planning. My understanding is that the Agile process distributes the planning and control of uncertainties to each team member in many small steps over a relatively short period of time, avoiding the big long term visionary statements and aggressive targets often set during the waterfall process. Agile planning is focused more on individual estimates over a short period of time rather than a lengthy planning document covering a much longer period. The Agile process requires constant revisiting of plans and schedules. This benefits the developers and maintains clarity and focus. Individuals and interactions are the keys to build a common understanding of the project goals and the ways to reach them.</p>
<p>Changes of project requirements are often a nightmare to developers in the waterfall process because they have to rewrite their functional specification and design documents. They may have to re-architect their software implementation. All of these updates require re-review and re-approval. The Agile process, on the other hand, encourages and embraces the changing requirements. Product owners constantly give feedback to developers based on their discussion with customers. Developers are more adaptable to the changing UACs (user acceptance criteria). Because Agile uses iteration-based scheduling (versus release-based scheduling) and because a single iteration is much shorter than one release, any significant changes in UAC can be reflected in the new stories for the next iteration.</p>
<p>During the iteration planning and release planning phases, software developers, have to work very closely with product owners and other stakeholders. It is absolutely crucial for every one of the developers to be involved in this phase because in order for the developers to solve the issues, we must first fully understand them. This is much harder in reality than it sounds. The Agile process encourages individual accountability, self-organization as well as collaboration between stakeholders. In practice, we use daily stand-up meetings which include accomplishments and obstacles for that day and a list of the things to do the next day. In addition routine communications occur between team members including all stakeholders in the project. This prevents any hidden issues and encourages team members to respond. The Agile process emphasizes working software over cumbersome documentation. As soon as we check in source code and mark a development task as being completed, the QA team is able to test it without any delay. This guarantees that we deliver completely developed and fully tested features in a much shorter period of time.</p>
<p>No matter how well the Agile process is defined, a project&#8217;s success depends to a large extent on how well you follow the process. Understated documentation, such as user story or use case related documentation, could lead to confusion especially for a larger project. Team members tend to rely heavily on email exchanges and wiki pages to record design thoughts and discussions without any version controls. Team members’ flexibility in accepting the changing UACs is one of Agile&#8217;s strengths. However, changing UACs too frequently or too late in the iteration will cause a lot of frustration among developers.</p>
<p>As of now, my knowledge and experience with the Agile process is still very limited. Even without much formal training or many years of Agile experience, I am already excited with and quite encouraged by a lot of benefits the Agile process has offered to us.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mapleworks.com/2009/08/agile-blog-my-first-experience-using-the-agile-methods/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Test Automation no different than any other software dev&#8217;t project</title>
		<link>http://blog.mapleworks.com/2009/06/test-automation-is-no-different-than-any-other-software-development-project/</link>
		<comments>http://blog.mapleworks.com/2009/06/test-automation-is-no-different-than-any-other-software-development-project/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 22:05:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mapleworks.com/?p=14</guid>
		<description><![CDATA[By Jeff Rappoport
Looking back at past test automation projects that MapleWorks has been involved with leads me to conclude that test automation is no different than any other software development project.
Typically test automation tools are built using scripting or programming languages; a commercial platform such as AutomatedQA’s TestComplete or Emprix’s Hammer; an open source platform [...]]]></description>
			<content:encoded><![CDATA[<p>By Jeff Rappoport</p>
<p>Looking back at <a href="http://www.mapleworks.com/mapleworks-technology/2008/11/19/test-automation-a-solution-from-mapleworks.html" target="_blank">past test automation projects that MapleWork</a>s has been involved with leads me to conclude that <a href="http://en.wikipedia.org/wiki/Test_automation" target="_blank">test automation</a> is no different than any other software development project.</p>
<p>Typically test automation tools are built using scripting or programming languages; a commercial platform such as <a href="http://www.automatedqa.com/products/testcomplete/" target="_blank">AutomatedQA’s TestComplete</a> or <a href="http://www.empirix.com/products/hammer.asp" target="_blank">Emprix’s Hammer</a>; an open source platform such as <a href="http://staf.sourceforge.net/" target="_blank">STAF</a>; or an in-house development platform. Regardless of the approach taken, <strong>test automation is a product</strong>. It is a stand alone tool used to trigger events and then report whether the event triggered was handled appropriately by the system under test.</p>
<p>The key attributes surrounding test automation are:</p>
<ul>
<li>Understanding how the system under test operates</li>
<li>Understanding the characteristics of the automation test tool</li>
<li>Defining a precondition</li>
<li>Creating an automated test</li>
<li>Verifying the test case outcome</li>
<li>Removing all evidence about the test</li>
</ul>
<p>Understanding how the system under test operates is the most important component of any test automation activity. Knowing what triggers need to be injected into the system is crucial since the core component of any automated test case is to create activity on the system under test. Understanding what output is generated by the system under test is equally important because this output will be used by the test automation platform to declare whether the automated test case passes or fails.</p>
<p>Understanding the characteristics of an automation test tool is crucial in the construction of an action (the automated test case) from the desired intent (wanting to test the system). Each test tool is bound to some technology and each technology has limitations. The resourceful test case developer has the ability to use creativity and possibly out of the box approaches to bridge the gap between what is needed to trigger activity on the system under test and how to manipulate the test tool to generate this trigger. Understanding the automation test tool is also important in defining mechanisms for retrieving output data from the system under test.</p>
<p>A precondition essentially states what the starting point is prior to injecting the trigger onto the system under test. This precondition needs to be applied to the system under test as well as the automation test tool. A state machine analogy can be applied to this idea. In order to arrive at state “B”, event “B” must be applied from state “A”. Precondition requires that the system under test and the test tool be initialized and set to state “A”.</p>
<p>Creating an automated test case is the mechanics of applying the lessons learned from the previous two points in the construction of a tool to test the system under test. The test tool identifies the language used to create the test case and the decision making criteria in evaluating the test case outcome.</p>
<p>Verifying the outcome is a means to determine if the system under test is sane and behaving as expected. Once all the triggers are applied it is important to retrieve information from the system under test in order to evaluate its behavior. The automated test tool needs to obtain this data, and determine if the data meets expectations. If the expectations are satisfied then the test succeeded. If the expectations are not satisfied then the test case failed.</p>
<p>A failed test case is just is as valuable as a successful outcome because this suggests that the system under test is faulty.</p>
<p>Removing all evidence is an eye catching phrase to describe the post condition cleanup step. The goal is to place the system under test as well as the automation test tool into a known state so the next automated test case can be run. As stated previously, the test tool and system under test needs to be reset to state “A”.</p>
<p>At the end of the day successful test automation requires:</p>
<ul>
<li>Understand and prioritize your requirements</li>
<blockquote>
<li>Understand the product that needs to be tested</li>
<li>Understand how the intended user is planning on using the tool</li>
<li>Understand how the system under test reports a successful or failed outcome</li>
</blockquote>
</ul>
<ul>
<li> Gain knowledge</li>
<blockquote>
<li>Prototype the most complex procedure the intended user wants tested</li>
<li>Understand the technological limitations imposed by the system under test</li>
<li>Understand the limitations imposed by third party tools</li>
</blockquote>
</ul>
<ul>
<li> Go off and build the automation tool.</li>
<blockquote>
<li>Design a suitable architecture</li>
<li>Implement the solution</li>
</blockquote>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mapleworks.com/2009/06/test-automation-is-no-different-than-any-other-software-development-project/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>IMS and the Next Generation Network: Part IV</title>
		<link>http://blog.mapleworks.com/2009/04/ims-and-next-generation-network-part-iv/</link>
		<comments>http://blog.mapleworks.com/2009/04/ims-and-next-generation-network-part-iv/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 02:18:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mapleworks.com/?p=22</guid>
		<description><![CDATA[By Yi Liang
The convergence of data, voice and video poses increased challenges for testing, as the network has to perform to the user’s expectations across different media types. The challenges in this area are two fold. One is to achieve a very high coverage of scenarios in a time, cost effective, and efficient manner. The [...]]]></description>
			<content:encoded><![CDATA[<p>By Yi Liang</p>
<p style="text-align: justify;">The convergence of data, voice and video poses increased challenges for testing, as the network has to perform to the user’s expectations across different media types.<span> </span>The challenges in this area are two fold.<span> </span>One is to achieve a very high coverage of scenarios in a time, cost effective, and efficient manner.<span> </span>The other challenge is to achieve very high coverage of scenarios, the amount of equipment needed can grow to a point where it would be cost ineffective, or physically unfeasible to create sufficiently complex environments.<span> </span>Therefore it is important to build expertise in the following key areas:</p>
<ul style="margin-top: 0in;" type="square">
<li style="text-align: justify;">Automation</li>
</ul>
<p style="margin-left: 0.75in; text-align: justify; text-indent: -0.25in;"><span style="font-family: Symbol;"><span>·<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;"> </span></span></span>Explore innovative and cost effective means of tying systems together to operate in a coordinated fashion to achieve test scenarios</p>
<p style="margin-left: 0.75in; text-align: justify; text-indent: -0.25in;"><span style="font-family: Symbol;"><span>·<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;"> </span></span></span>Leverage techniques of massively <a href="http://en.wikipedia.org/wiki/Parallel_computing">parallel programming</a> and <a href="http://en.wikipedia.org/wiki/Grid_computing">grid computing </a>to achieve faster test scenario execution</p>
<p style="margin-left: 0.75in; text-align: justify; text-indent: -0.25in;"><span style="font-family: Symbol;"><span>·<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;"> </span></span></span>Develop adapters for commonly used and cutting edge test equipment, so that it can be controlled through an automation framework</p>
<ul style="margin-top: 0in;" type="square">
<li style="text-align: justify;">Simulation</li>
</ul>
<p style="margin-left: 0.75in; text-align: justify; text-indent: -0.25in;"><span style="font-family: Symbol;"><span>·<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;"> </span></span></span>Create generic simulation frameworks that can be adapted to any kind of specific network infrastructures and protocols</p>
<p style="margin-left: 0.75in; text-align: justify; text-indent: -0.25in;"><span style="font-family: Symbol;"><span>·<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;"> </span></span></span>Integrate simulation frameworks with a computing grid to allow simulations to use variable amount of CPU power</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mapleworks.com/2009/04/ims-and-next-generation-network-part-iv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IMS and the Next Generation Network: Part III</title>
		<link>http://blog.mapleworks.com/2009/03/ims-and-next-generation-network-part-iii/</link>
		<comments>http://blog.mapleworks.com/2009/03/ims-and-next-generation-network-part-iii/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 02:20:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mapleworks.com/?p=26</guid>
		<description><![CDATA[By Yi Liang
Network management and support systems are needed for all three layers in the NGN.  Management of infrastructure in an Enterprise or Carrier environment is getting more complex as data, voice and video converge into one ubiquitous IP packet based network.  The challenge comes from migrating legacy equipment with next generation infrastructure to work [...]]]></description>
			<content:encoded><![CDATA[<p>By Yi Liang</p>
<p>Network management and support systems are needed for all three layers in the NGN.  Management of infrastructure in an Enterprise or Carrier environment is getting more complex as data, voice and video converge into one ubiquitous IP packet based network.  The challenge comes from migrating legacy equipment with next generation infrastructure to work harmoniously to provide a high quality of service to its users.  Providers today are already seeing the commoditization of their services by increased competition.  Therefore next generation management systems need to manage more, reduce costs, and be agile to meet further business needs.</p>
<p>Key areas to focus on are:</p>
<ul class="unindentedList">
<li> Understanding trends in management protocols like <a href="http://www.ietf.org/html.charters/netconf-charter.html">NETCONF</a> and <a href="http://www.dmtf.org/standards/wsman/">WS-Management</a></li>
<li> Using cutting edge <a href="http://en.wikipedia.org/wiki/Rich_Internet_application">Rich Internet Application</a> technologies to enable interfaces to the web without compromising usability or functionality that customers have grown accustomed to</li>
<li> Developing new methods for fast data store and retrieval to make data collection more scalable</li>
<li> Devise new algorithms to ensure QoS is maintained across different services</li>
<li> Devise new methods for quicker fault detection and fault resolution</li>
<li> Create ways of making the management of devices as generic as possible so that systems can support next generation infrastructure</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mapleworks.com/2009/03/ims-and-next-generation-network-part-iii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IMS and the Next Generation Network: Part II</title>
		<link>http://blog.mapleworks.com/2009/01/ims-and-the-next-generation-network-part-ii/</link>
		<comments>http://blog.mapleworks.com/2009/01/ims-and-the-next-generation-network-part-ii/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 02:27:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mapleworks.com/?p=28</guid>
		<description><![CDATA[By Yi Liang
Call Control is one of the most important parts in the control layer of the NGN.  Signaling is used in the network to set up calls between two end users and to pass information about the call state between the various call agents involved in handling the call.  IMS uses Session Initiation Protocol [...]]]></description>
			<content:encoded><![CDATA[<p>By Yi Liang</p>
<p>Call Control is one of the most important parts in the control layer of the NGN.  Signaling is used in the network to set up calls between two end users and to pass information about the call state between the various call agents involved in handling the call.  <a href="http://en.wikipedia.org/wiki/IP_Multimedia_Subsystem">IMS</a> uses <a href="http://www.ietf.org/rfc/rfc3261.txt">Session Initiation Protocol</a> (SIP) to create a signaling network over the IP network.  The <a href="http://tools.ietf.org/html/rfc3550">Real-time Protocol</a> (RTP) is used for media transport</p>
<p>Research and development work in the following areas is very important.</p>
<ul class="unindentedList">
<li> Protocol stack development and analysis</li>
<li> System high availability</li>
<li> System scalability</li>
<li> Network security</li>
</ul>
<p>The open source community is involved in some important areas. Particularly in integrated access devices and IP PBX software projects.  An example is the <a href="http://wiki.freeswitch.org/wiki/Main_Page">Freeswitch</a> project.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mapleworks.com/2009/01/ims-and-the-next-generation-network-part-ii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IMS and the Next Generation Network</title>
		<link>http://blog.mapleworks.com/2009/01/ims-and-next-generation-network/</link>
		<comments>http://blog.mapleworks.com/2009/01/ims-and-next-generation-network/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 02:29:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mapleworks.com/?p=30</guid>
		<description><![CDATA[By Yi Liang
The next-generation network is a high speed packet or cell based network which can provide multiple services such as voice, data, video and multimedia. It has a high bandwidth multi-service core and intelligent edge. It provides quick service delivery and provisioning. Next-generation networks are based on internet technologies including Internet Protocol (IP), Multiprotocol [...]]]></description>
			<content:encoded><![CDATA[<p>By Yi Liang</p>
<p style="text-align: justify;">The next-generation network is a high speed packet or cell based network which can provide multiple services such as voice, data, video and multimedia. It has a high bandwidth multi-service core and intelligent edge. It provides quick service delivery and provisioning. Next-generation networks are based on internet technologies including Internet Protocol (IP), Multiprotocol Label Switching (MPLS), and Session Initiation Protocol (SIP).<span> </span></p>
<p style="text-align: justify;">Network convergence is one of the key subjects in the next-generation network. The goal is to bring together voice, data and video at the network level, at the system level, at the application level, and at the device level. Convergence in transport means all traffic sharing a common packet-based network which is usually IP based. At the system level, the softswitch will replace the traditional circuit switch. It enables voice communication over the IP backbone. IP PBX and multi-service devices enable the enterprise to access the network easily and reduce cost. More and more applications will be developed to use the new infrastructure. These new applications integrate voice, data and video at the desktop as well as in the server. Examples of this include multimedia conferencing, multimedia messaging etc.</p>
<p style="text-align: justify;">The IP Multimedia Subsystem (IMS) is a standardized NGN architecture originally developed by the <a href="http://www.3gpp.org/">3G Partnership Project (3GPP)</a>. It defines a generic architecture that offers VoIP and other multimedia services within wireless and wireline infrastructures. The IMS architecture is divided into three layers: service (application), control and transport (access). Following diagram is a simplified view of the layered architecture of IMS. Major vendors like Ericsson, Lucent, Nortel and Siemens have made substantial investment in IMS software. There are a lot of challenges and also a lot of opportunities in this technology evolution process.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.mapleworks.com/storage/IMS.gif?__SQUARESPACE_CACHEVERSION=1230922982291" alt="" width="526" height="349" /></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mapleworks.com/2009/01/ims-and-next-generation-network/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test Automation – A Solution from Mapleworks</title>
		<link>http://blog.mapleworks.com/2008/11/test-automation-a-solution-from-mapleworks/</link>
		<comments>http://blog.mapleworks.com/2008/11/test-automation-a-solution-from-mapleworks/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 02:38:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mapleworks.com/?p=35</guid>
		<description><![CDATA[By David Zinman
To expedite development and quality assurance cycles, many software projects incorporate automated testing. Automation of testing can greatly reduce phase times and reduce costs for the any outsourced or internal project. By analyzing the way test automation is done, Mapleworks has developed a solution called Mapleworks Automated Testing System or MATS.
What is required [...]]]></description>
			<content:encoded><![CDATA[<p>By David Zinman</p>
<p>To expedite development and quality assurance cycles, many software projects incorporate automated testing. Automation of testing can greatly reduce phase times and reduce costs for the any outsourced or internal project. By analyzing the way test automation is done, Mapleworks has developed a solution called Mapleworks Automated Testing System or MATS.</p>
<p>What is required from a test automation system?</p>
<ol>
<li>The ability to run different types of tests:
<ul>
<li>Unit testing</li>
<li>Full system testing</li>
<li>Integration testing</li>
<li>Regression testing</li>
<li>Performance testing</li>
</ul>
</li>
<li>Consistency and reliability</li>
<li>Observable detailed results with comparison ability</li>
<li>Flexibility – test and test suites</li>
</ol>
<p>At Mapleworks we’ve found some practical problems with test automation. Take the case of a long and involved test script. These types of scripts can be recorded by a test platform or created manually with a sustained effort. If an essential piece of functionality has to be modified, then the script must be re-recorded or re-factored in some way. And say this modification is applicable to several different places in the delivery, the cost rises exponentially to the quality assurance cycles.</p>
<p>At Mapleworks, we have designed a novel approach to solving this problem. Using the TestComplete platform, we have added an abstraction layer that takes an arbitrary label and points it to each testable object. This de-couples the test script and testing engine from the tested program.</p>
<p>What we can now do is record an intricate test procedure, convert it to a MATS (Mapleworks Automation Test System) script and create the mapping file for the testable components.</p>
<p>An added benefit from this architecture is that the QA team can write tests before the project is completed. All that is required to run testing suites is the mapping file to be filled in with the actual component internal name which can be obtained using the TestComplete ‘map object from screen’ tool.</p>
<p>The mapping syntax is straightforward: an arbitrary descriptive <strong>name</strong>, its object <em>type</em> (button, list, etc), and its component internal name which is implementation specific.<span style="font-size: 90%;"><strong> </strong></span></p>
<p><span style="font-size: 90%;"><strong><span style="text-decoration: underline;">Sample Component Definition File:</span></strong></span></p>
<p><span style="font-size: 90%;"><strong> </strong></span></p>
<p><span style="font-size: 90%;"><strong> </strong></span></p>
<p><span style="font-size: 90%;"><strong>Template Editor|Catalogs</strong>, <em>Tab</em>,.WinFormsObject(&#8217;WindowDockingArea&#8217;, &#8221;, 3).Pane.Panes.item[1] </span></p>
<p><span style="font-size: 90%;"> </span></p>
<p><span style="font-size: 90%;"><strong>Template Editor|Catalogs|=Catalogs|,</strong><em>Copy</em>,WinFormsObject(&#8217;TemplateEditorFramework&#8217;). WinFormsObject(&#8217;splitContainer1&#8242;).WinFormsObject(&#8217;SplitterPanel&#8217;, &#8221;, 1).WinFormsObject(&#8217;Navigation&#8217;). WinFormsObject(&#8217;CatalogTab&#8217;).WinFormsObject(&#8217;CatalogFramework&#8217;).WinFormsObject(&#8217;tableLayoutPanel11&#8242;)=WinFormsObject(&#8217;FormFramework&#8217;).WinFormsObject(&#8217;mainContent&#8217;).WinFormsObject(&#8217;caiTableLayoutPanel1&#8242;).WinFOrmsObject(&#8217;panel&#8217;).WinFormsObject(&#8217;CatalogFramework&#8217;).WinFormsObject(&#8217;tableLayoutPanel11&#8242;) </span></p>
<p><span style="font-size: 90%;"><strong>Template Editor|Firewall and QoS|Port Triggering|Table|Service</strong>,<em>Table</em>, WinFormsObject(&#8217;TemplateEditorFramework&#8217;).WinFormsObject(&#8217;splitContainer1&#8242;).WinFormsObject(&#8217;SplitterPanel&#8217;, &#8221;, 2). WinFormsObject(&#8217;ContentPanel&#8217;).WinFormsObject(&#8217;PortTriggering&#8217;).WinFormsObject(&#8217;panel1&#8242;).WinFormsObject(&#8217;ports&#8217;).WinFormsObject(&#8217;Port&#8217;, &#8221;, %row%+3) </span></p>
<p>The test script has a similar syntax: the arbitrary descriptive <strong>name</strong>, an <em>action</em>, and any optional parameters.<span style="font-size: 90%;"><strong> </strong></span></p>
<p><span style="font-size: 90%;"><strong><span style="text-decoration: underline;">Sample Test:</span></strong></span></p>
<p><span style="font-size: 90%;"><strong> </strong></span></p>
<p><span style="font-size: 90%;"><strong> </strong></span></p>
<p><span style="font-size: 90%;">Test=Set Service in Port Trigger to ‘aci’ using drag and drop<strong> </strong></span></p>
<p><span style="font-size: 90%;"><strong>Template Editor|Catalogs</strong>,Click Template Editor|Catalogs|Services|Tree|TCP,Click<strong><br />
Template Editor|Catalogs|Services|Tree|TCP|,</strong><em>Find</em>,aci<strong><br />
Template Editor|Catalogs|Services|Tree|TCP|%currentEntry%</strong>,<em>Click</em><strong><br />
Template Editor|Catalogs|Services|Tree|TCP|%currentEntry%</strong>,<em>Drag</em>, Template Editor|Firewall and QoS|Port Triggering|Table|0|Service</span></p>
<p>Mats simplifies testing since creating tests does not require programming just simple scripting, the tests are flexible to most application changes, and developers only need modify the script to update, create, and run tests that support changed functionality/implementation.</p>
<p>What can be tested?</p>
<ul>
<li>Files</li>
<li>dBs (via ADO)</li>
<li>Native Windows applications</li>
<li>Web applications</li>
<li>Visual properties of controls (fonts, colors etc.)</li>
<li>Input/output text (variable text such as user names and fixed text such as prompts for multi-lingual applications)</li>
</ul>
<p>Here is what the architecture looks like:</p>
<p><span class="full-image-block ssNonEditable"><span><img class="alignnone" style="width: 600px;" src="https://www.mapleworks.com/storage/matsArch.PNG?__SQUARESPACE_CACHEVERSION=1226598073181" alt="" width="776" height="496" /></span></span></p>
<p>Notice that TestComplete is not required to run the tests, the much cheaper TestExecute is all that is needed. At least one instance of TestComplete is required however to record any scripts.<strong> </strong></p>
<p><strong>Benefits</strong></p>
<p>There are several advantages that MATS gives to the testing procedure. The use of arbitrary component names permit implementation to be changed without changing tests. Tests are easier to create since they can be written by testers in simple script before the application is available. Testing can easily be performed by developers before committing changes. This assures addition problems are not introduced.</p>
<p>What started as a convenient and cost effective way for an us to offer a value added service has become a product in its own right. We have found customers who are interested in adding this novel approach to automated testing to their QA procedures as a way to cut costs, and expedite testing cycles.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mapleworks.com/2008/11/test-automation-a-solution-from-mapleworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Music, Musicians and Software Development</title>
		<link>http://blog.mapleworks.com/2008/10/music-musicians-and-software-development/</link>
		<comments>http://blog.mapleworks.com/2008/10/music-musicians-and-software-development/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 16:17:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mapleworks.com/?p=95</guid>
		<description><![CDATA[By David Zinman
Software programming can be a solitary or collaborative effort. Similarly, so is creating music. The idea for both can be a singular endeavor, but it most often takes a combined effort to reach the finish. This similarity is described in the book by Andrew Johnston and Chris S. Johnson &#8220;Extreme Programming: A More Musical [...]]]></description>
			<content:encoded><![CDATA[<p>By David Zinman</p>
<p>Software programming can be a solitary or collaborative effort. Similarly, so is creating music. The idea for both can be a singular endeavor, but it most often takes a combined effort to reach the finish. This similarity is described in the book by Andrew Johnston and Chris S. Johnson <em>&#8220;<a href="http://www.springerlink.com/content/1r05quulnv27num2/">Extreme Programming: A More Musical Approach to Software Development?</a>&#8220;</em> where they hypothesize on the resemblance between musical and software development environments:</p>
<p style="padding-left: 30px;">The characterization of software development as a craft rather than an engineering discipline has been proposed recently and it is felt that by considering the similarities and differences between the working and learning environments of musicians and developers that some further weight can be given to calls for a more collaborative approach to software development.</p>
<p>The debate that writing software code is an art has been around almost since coders have existed. I would not go so far as to say anything I have coded is &#8220;artistic&#8221; but some of the novel ideas that come from very focused coding fit with the idea of creating a piece of music.</p>
<p><a href="http://library.thinkquest.org/2791/MDCTARY/M-O.htm">Music</a> is the <strong>organization</strong> of sounds with some degree of rhythm, melody, and harmony. I would argue that harmony should not be included in this definition since even a single voice is considered music where no harmony is present.</p>
<p>But the important idea in this definition is <em>organization</em>: it is the idea of <em>organization and patterns</em> that is common to both music and software. Design patterns are now an integral part of software development. A <a href="http://en.wikipedia.org/wiki/Software_design_pattern">design pattern</a> is a general reusable solution to a commonly occurring problem in software design. The most famous pattern in music is probably the opening sequence of Beethoven&#8217;s Fifth Symphony (G G G E-flat). Beethoven repeats this pattern several times in the movement in several variations. Once we understand the pattern of a particular piece, be it coded or musical, we are well on our way to a solution.</p>
<p><a href="http://www.kohl.ca">Jonathon Kohl</a> explains the <a href="http://www.kohl.ca/articles/ExploratoryTesting_MusicofInvestigation.pdf">tension/resolution</a> that makes up music is applicable in software testing. I would go further and say that it also applies to software coding. There is the intangible feeling of tension when an algorithm is in development, and the feeling of relief upon its successful resolution. For a great example of tension/resolution in music listen to Lenny Kravitz&#8217; <a href="http://www.youtube.com/watch?v=sZCbb3PveWw">Mr. Cabdriver</a>.</p>
<p><span class="full-image-float-left ssNonEditable"><span><img src="/storage/site-graphics/blog-images/0792_Adler_7_29_07.jpg?__SQUARESPACE_CACHEVERSION=1225231123366" alt="" /></span></span>I would like to think that we should not be so pragmatic as to look at <a href="http://www.codesqueeze.com/software-engineer-vs-code-artist/">software development</a> as being&#8221;solving a problem in order to start creating.&#8221;</p>
<p>It doesn&#8217;t really matter though because when I am done I put on the headphones and crank some Zeppelin. Anybody want to jam?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mapleworks.com/2008/10/music-musicians-and-software-development/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Web GUI design: Designing for a Heavy Client, Light Server</title>
		<link>http://blog.mapleworks.com/2008/09/web-gui-design-designing-for-a-heavy-client-light-server/</link>
		<comments>http://blog.mapleworks.com/2008/09/web-gui-design-designing-for-a-heavy-client-light-server/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 16:21:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mapleworks.com/?p=97</guid>
		<description><![CDATA[By David Zinman
A problem that often occurs in any software system is related to resource constraints or limitations; how do you make the best use of the resources that you have? This article will examine the challenge of designing a functional web user interface utilizing light server processing.
Modern hardware that handles copious amounts of sensitive [...]]]></description>
			<content:encoded><![CDATA[<p>By David Zinman</p>
<p>A problem that often occurs in any software system is related to resource constraints or limitations; how do you make the best use of the resources that you have? This article will examine the challenge of designing a functional web user interface utilizing light server processing.</p>
<p>Modern hardware that handles copious amounts of sensitive data requires faultless processing, uninterruptible operation, and ease of use. The term ‘ease of use’ implies a user interface of some sort, in this case a web GUI. However, a highly interactive web interface can have an impact on the operation of the hardware if general processing is interrupted in order to handle user interface requests. In environments such as HTML: java script(.js), active server pages (.asp), or proprietary GUI development in C++, C# or Visual Basic, how do we maximize user interface functionality while minimizing processing on the server?</p>
<p><strong>Maximize Client Processing </strong></p>
<p>One solution is to limit the amount of processing on the data server that is devoted to the user interface. This may or may not be used with a third party user interface proxy server (UIPS) depending on the environment. A system that expects few concurrent users (typically 5 or less) can operate as:</p>
<p><em>UI client </em>&lt;&#8211;&gt; <em>data server</em></p>
<p>where there is not a huge demand on the processor.</p>
<p>A system that demands more concurrent users (6 or more) can benefit from a third party UI server operating as:</p>
<p><em>UI client </em>&lt;&#8211;&gt; <em>UIPS</em> &lt;&#8211;&gt; <em>data server</em></p>
<p>that will offload more processing power to the user interface proxy server.</p>
<p><strong>Data Processing in the GUI </strong></p>
<p>Giving some thought as to defining the structure of the data can be very significant in efficient data handling. Web Service Definition Language (WSDL) for SOAP, Management Information Base (MIB) for SNMP or other data syntax design for generic or specific data driven protocols should be given a high priority to assure non-redundant, efficient and light but complete coverage of information. Both the server and the web client will use the same data syntax for their respective communication layers, and as such, a data format that integrates to the system in an efficient way must be chosen.</p>
<p>One of the biggest burdens that is dumped on the server by data acquisition is table processing, especially large two dimensional lists. To alleviate as much overhead as possible make sure any sorting routines are carried out on the client. Table indexing in the data definition can be a big help in facilitating efficient data access.</p>
<p>Scripting languages can be slow and cumbersome. If possible, there should be no scripting engine residing on the server. The data is to be served in as raw a form as possible and all scripting should be carried out by the client.</p>
<p>Statistical data can pose a problem. Multiple server access for several statistics can put a heavy load on the server. Polling intervals should be set for a span that reports relevant information but does not overload the server.</p>
<p><strong>Tradeoffs </strong></p>
<p>These solutions do not come without a price. No server side scripting puts an extra effort on client development. Often the question of adding more data to a network request or supporting functionality on the server must be decided. The GUI itself must handle many of the routines easily handled on the server. This in turn can make the GUI slow and cumbersome. Consequently expert and efficient programming methods will help alleviate this issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mapleworks.com/2008/09/web-gui-design-designing-for-a-heavy-client-light-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparison of different OSPF protocol implementations</title>
		<link>http://blog.mapleworks.com/2008/08/comparison-of-different-ospf-protocol-implementations/</link>
		<comments>http://blog.mapleworks.com/2008/08/comparison-of-different-ospf-protocol-implementations/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 16:23:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.mapleworks.com/?p=99</guid>
		<description><![CDATA[By Luan Pham
One of our projects at MapleWorks in the last year required us to integrate the Open Shortest Path First protocol (OSPF) into a residential gateway product. Since OSPF is a mature protocol, and many implementations existed, it was our task to determine which OSPF stack was most suitable given timeline constraints that surround [...]]]></description>
			<content:encoded><![CDATA[<p>By Luan Pham</p>
<p>One of our projects at MapleWorks in the last year required us to integrate the Open Shortest Path First protocol (OSPF) into a residential gateway product. Since OSPF is a mature protocol, and many implementations existed, it was our task to determine which OSPF stack was most suitable given timeline constraints that surround any onshore software development project.</p>
<p>Based on our experience, <a href="http://www.nasi.com/zebos_srs.php">IP Infusion</a> was the natural choice as it provided everything we needed in a modular architecture. However there was some natural scepticism about our decision, and this resulted in a survey of all the OSPF offerings that we knew of or could find on the Internet. We summarized our findings in the table below. Our survey was performed in May 2007, and much of the accuracy of the information was dependant on technical documentation publicly available at the time.</p>
<p><img src="http://www.mapleworks.com/storage/site-graphics/blog-images/OSPF_Table_2.GIF?__SQUARESPACE_CACHEVERSION=1225231159668" alt="" /></p>
<p><strong>Description of columns: </strong></p>
<p><strong>OSPF Stack Vendor:</strong> <a href="http://www.nasi.com/zebos_srs.php"><strong>IP Infusion</strong></a><strong>, </strong><a href="http://www.dataconnection.com/iprouting/ospf.htm"><strong>Data Connection</strong></a><strong>, <a href="http://www.aricent.com/">Aricent</a>, </strong><a href="http://www.xorp.org/"><strong>XORP</strong></a><strong>, </strong><a href="http://www.vyatta.com/"><strong>Vyatta</strong></a><strong>, </strong><a href="http://www.ospf.org/"><strong>Ospfd</strong></a><strong>, </strong><a href="http://www.openbgpd.org/"><strong>OpenOSPFD</strong></a><strong>, </strong><a href="http://www.zebra.org/"><strong>Zebra</strong></a></p>
<p><strong>Modular Architecture: </strong>Is OSPF decoupled from the RTM and other routing protocols? In the future there may be a requirement to have RIP and OSPF running at the same time. A non modular architecture would make it difficult to integrate RIP with OSPF so that both protocols run at the same time.</p>
<p><strong>Management API: </strong>Does OSPF come with a clean management API to provision the protocol?</p>
<p><strong>Maturity: </strong>How long has the protocol been around? Usually the longer its been around, the more bugs it has resolved making it a more solid product. This is where commercial offerings beat Open Source options.</p>
<p><strong>Cross compiling: </strong>Has the code been written to support processors with big endian as well as little endian? Most development is done on PCs which uses little endian, and all too often when code goes from one processor to another, issues with byte alignment arise. These automatically introduce bugs, and will take incur additional costs in time and money.</p>
<p><strong>Open Source: </strong>Is the product open source?</p>
<p><strong>Extra cost incurred relative to IP Infusion: </strong>Since the IP Infusion stack contained everything that was required for the project, it was used as a baseline to compare against all other offerings.</p>
<p><em>(Luan Pham is a Senior Software Engineer of MapleWorks Technology Inc, the smart choice for onshore software development for networking and telecom companies.) </em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mapleworks.com/2008/08/comparison-of-different-ospf-protocol-implementations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
