Importance of Software Testing in the IT Industry

Introduction and Importance

Software development companies dedicate a substantial amount of resources and manpower for the development of applications according to requirements specified by enterprises or individuals. However, subsequent to development of such applications/software, companies are required to ensure that such software/applications perform in accordance with the client’s requirements. To ensure that any and all bugs in the software are identified prior to the deployment, various testing procedures are implemented by the IT industry. The importance of this is directly related to the ability of software to measure up to its potential. If the new software is unable to perform the task it was designed for, the client might face severe losses due to stoppage of work and also adversely affect the business of the software development company. The scope of these procedures is to facilitate identification of a problem in the software, fixing of such problems is not within in the scope of software testing. Some of the leading methodologies implemented by companies in the IT industry include General, Load, Functional and Regression Testing.

General Testing

This refers to the general tests carried out on software/applications to ensure the functionality of newly developed software. Some of the common tests included as part of standard Quality Assurance procedures are web performance and usability testing. The web performance testing procedure is mostly engaged in evaluating the online performance of a web-based software application or a website. Usability testing is a mainly subjective approach, which ensures that the software is capable of being utilized effectively in a given set of circumstances. The purpose is to identify the general operating capability of the software/application being tested and to help developers determine some of the areas of improvement for the software. A software development company usually performs general testing of software/applications along with other more advanced methods to ensure that the software conforms to the pre-defined operational capabilities specified by the client/user group.

Load Testing

The load testing procedure simulates operating conditions of the software/application during periods of higher/normal load to gauge the effect of such changes on the functioning of the software/application. This is not the same as stress testing, because load testing checks the operational capabilities in case of both normal load and high load conditions, while stress testing attempts to induce errors in normal operations by using increased system load. This is considered to be a type of non-functional testing, which is undertaken by software development companies to gauge the multi-user support capabilities of the application.

As a commonly employed practice in the software industry, its specific goals are widely disputed and the term is often utilized in conjunctions with volume, reliability, software performance and concurrency testing. By using load testing, developers can attempt to determine the reason for slow performance of software. The common reasons for such slow response commonly include load balancing between multiple servers, client-side processing, network congestion/latency, available database service and/or bugs in the application server(s) or software. The use of load testing is recommended for software/applications, which are subjected to SLA (service level agreement) for ensuring that the software is capable of supporting multiple users. As the procedure simulates an increase in system load by using multiple virtual users, various software are currently available to carry out load testing. Some of the leading load-testing tools used by developers globally are IBM Rational Performance Tester, Apache JMeter, LoadRunner etc. Additionally, a load testing tool commonly favored by software testing companies in India is available as part of the Visual Studio Ultimate Edition of Microsoft.

Functional Testing

This type of testing is a type of black-box testing based on the specifications of the software components being tested. The functions of specific components of the software are feeding inputs and checking the output thus obtained. In functional testing, the internal structure of the program is seldom considered hence, it is classified as a type of black-box testing. The key steps involved in functional testing include identification of functions, which the software is expected to perform, creation of input data according to specifications of the identified functions, determining output based on the specifications of those functions, executing the test scenario followed by comparison of the obtained output vs. the expected output. Functional testing is not the same as system testing as system testing involves validation of a program in comparison to the published system or user requirements, whereas, functional testing is carried out by checking a program with respect to established specifications and available design documents for the software/applications.

Regression Testing

The regression testing refers to any type of software testing, which attempts to identify bugs, which are present in either the functional or the non-functional areas of a system subsequent to making modifications such as configuration and patch changes. The key function of regression testing is to ensure that the use of a patch or upgrade does not lead to the introduction of a new bug into the existing system. Additionally, regression testing helps ensure that the changes in one section of the software do not induce changes in another part of the software’s code. Some of the commonly applied regression testing methods include the use of earlier tests to check for alterations in program operation and the search of any previously fixed bugs, which had re-emerged subsequent to introduction of the new code. Fixed bugs in software often re-emerge and regression testing is one of the leading methods to ensure that such re-emergence is identified and easily controlled before any lasting damage occurs. Software development companies repeatedly perform regression testing of software/applications after any change in coding such as use of patches etc. to ensure that the functionality of the application is unimpaired. Such repetitive testing is usually automated by using an external tool such as Bamboo, TeamCity, Jenkins, Hudson, Tinderbox or BuildBot. This type of testing is generally performed by the QA team in case of leading software development companies, however, smaller companies are often engaged in outsourcing such services to companies specializing in the field of software QA and testing.

What’s Next?

As new technologies emerge, more testing procedures are being developed and implemented by organizations all over the world to ensure that new software perform according to their requirements and specifications even when stress or when additional functionality is introduced into the software. The emerging testing solutions, which are powered by new technology, are designed to reduce the time and resources required for testing in order to streamline the quality control / quality assurance services associated with software development. Some additional types of testing, which are currently used in the software industry are white box testing, system testing, non-functional testing, acceptance testing and integration testing. Each of these testing was developed to identify and resolve application/software limitations in a specific set of conditions; hence they are useful for software testing carried out in case of specific quality assurance and testing procedures.

Abhishek is currently working with eXtendCode Software Systems India, an offshore software development [http://www.extendcode.com/] company based at Gurgaon in India, which provides software solutions such as Web Enabled Solutions, Quality Assurance Services [http://www.extendcode.com/Services/QualityAssuranceServices.aspx], business intelligence solutions and Mobile Solutions etc. He has worked in the field for over 2 years and authored many articles related to the IT and software industries.

4 Important Tips for Finding the Best Beat Software

If you like music, you are an aspiring DJ or music producer, chances are that one time in your life, you have thought about making beats. If you are interested in making beats, it is important to be able to choose the right software for making beats. There are very many software’s in the internet that claim to make new, unique and funky beats however most of these software’s are pretty useless. Getting the right software is important because it determines the quality of the sound you produce and how great the songs will be.

Making beats isn’t as hard as people may think especially if you have a great beat making software. Decent beat software’s are also not that expensive contrary to many people’s beliefs. You can get a good beat maker online for as little as a few dollars but to stand out from the rest, you have to spend a bit more than that for the perfect beat making applications available online today.

A good way of looking for good beat software is checking numerous customer reviews online that can help you choose good, popular software. It is always advisable to ignore hyped and highly priced beat software’s because most of the time they do not live up to their expectations. Instead, online reviews can help you get actual facts about certain beat software from people who have actually used it.

4 Important Tips for Finding the Best Beat Software
Below are some important tips that should help you choose the exact kind of beat making software that suits you style and taste of music.

1. Availability of free trials or money back guarantees: You should always go for beat making software that offers free trial software for a limited period of time or money back guarantees. With free trials, you get to test if the software meets your expectations i.e. works the way you want it to work. Free trials can save you a lot of money that you would have otherwise spent on substandard software thus they are important.

2. Usability: The usability of program is also important because it will dictate the time you spend making beats and also the quality of beats that you make. You should use free trial beat software to test on the usability. A good beat making software should have a user friendly interface that is straight forward to use. If you notice that the interface of certain beat software’s is hard to understand or cluttered, then do not buy because it will be very hard to make beats with such software. Common features of beat software should be easy to identify and use i.e. tone/ pitch altering features among other dynamic features should be within reach.

3. Formats: The formats that are used or compatible with certain beat software’s are also important when looking for a good beat making software. For instance, cheap beat software only allows certain applications i.e. exporting your beats/music in MP3 format only. You should however go for software that caters for numerous formats i.e. FLAC and WAV because this way you will be able to integrate your beat software with many other applications to produce complete beats that can play in any application/device.

4. User guides, tutorials and online: You should also go for beat making software that offers a lot of resources and information on operating the software and also making perfect beats. Tutorials are very important especially exhaustive ones because will help you to familiarize yourself with all the tools necessary for making good beats. Never buy a program that offers no assistance to get you started to the process of making good beats. You should also look for software that comes with online support because at one time you might be required to trouble shoot the software or you might simply need assistance with features and controls. A program that doesn’t come with online assistance, tutorials and guides will more often than not cause you problems in your beat making experience.

Community Innovation – Crowd Sourcing in Software Testing

Many hands make software work

The stakes for Microsoft, which was outlining its Office 2010 product strategy, were extremely high. According to Microsoft’s earnings statements, Microsoft Office productivity suite generates more revenue than any other business division, says Gregg Keizer,who covers Microsoft and general technology news for Computerworld.

Months before Microsoft released Office 2010 productivity suite, 9 million people downloaded the beta version to test the software and to provide feedback. Through this program, Microsoft collected 2 million valuable comments and insights from those testers.

Denise Carlevato, a Microsoft usability engineer for 10 years, and her colleagues from Microsoft’s Virtual Research Lab observed how people used new features. Their objective was to make Microsoft Office fit the way millions of people used their product and to help them work better. It was a massive, controlled crowd sourcing project.

According to Carlevato, “That’s just what you have to do to cater to as broad an audience as possible”. This is not especially easy; to retain the loyalty of millions is a herculean task. “While the team was building it and giving insights and information, it was still all like a big jigsaw puzzle. Toward the end when this all came together I had the opportunity to go out and see how the web apps were actually going to live with real people.”

The scenario

Developing a new software product is always exciting, especially to watch ideas take form and truly become a reality. Sometimes a fresh perspective or an innovative use case is all it takes to turn a product from good to great. However, when it comes to testing, we often find ourselves in unchartered waters wondering if the product will actually work in the diverse customer landscapes. It is virtually impossible to test the vast number of devices and configurations of software that web-based software can run on today. Truly robust testing is time consuming, and ensuring that every possible permutation and combination of features, localizations, and platforms works, as intended is nearly impossible.

Often times, comprehensive testing is a challenge and buggy code is delivered to the customer. For example, if a Software-as-a-Service (SaaS) application does not render in a particular browser or a critical software tool fails to deliver its intended functionality, a bug fix or a patch is promised and the vicious cycle starts all over again. Either way, the customer withstands the worst of inadequate testing, especially when faced with the escalating costs of software maintenance, performance, etc. For the software development company, ramifications include distress around brand image, perceived quality, relationship and potential future projects, trust, etc.

Welcome to the new world of crowd sourced testing, an emerging trend in software engineering that exploits the benefits, effectiveness, and efficiency of crowd sourcing and the cloud platform towards software quality assurance and control. With this new form of software testing, the product is put to test under diverse platforms, which makes it more representative, reliable, cost-effective, fast, and above all, bug-free.

Crowd sourced testing, conceived around a Testing-as-a-Service (TaaS) framework, helps companies reach out to a community to solve problems and remain innovative. When it comes to testing software applications, crowdsourcing helps companies reduce expenses, reduce time to market and increase resources for testing, manage a wide range of testing projects, test competence needs, exigency to resolve higher defects rates, and use 3rd party’s test environment to subside the project requirements.

It differs from traditional testing methods in that the testing is carried out by a number of different testers from across the globe, and not by locally hired consultants and professionals. In other words, crowd sourced testing is a form of outsourced software testing, a time-consuming activity, to testers around the world, thus enabling small startups to use ad-hoc quality-assurance teams, even though they themselves could not afford traditional quality assurance testing teams.

Why Does Crowd Sourced Testing Work?

To understand why crowd sourced testing works, it is important to understand the set of biases that infest most testers and test managers around the world. This phenomenon is called, “The Curse of Knowledge,” a phrase used in a 1989 paper in The Journal of Political Economy. It means that for a particular subject expert, it is nearly impossible to imagine and look beyond the knowledge the tester has acquired i.e. the set of concepts, beliefs and scenarios that the tester knows or predicts. As a result, it is particularly challenging to think outside the box and conceive the various ways a typical end user would use particular software.

This phenomenon has been empirically proven through an infamous experiment conducted by a Stanford University graduate student of psychology, Elizabeth Newton. She illustrated the phenomenon through a simple game, people were assigned to one of two roles, namely tappers and listeners. Each tapper was to select a well-known song, such as “Happy Birthday,” and tap the rhythm on a table. The listeners were to guess the song from the taps. However, before the listeners guessed the song, tappers were asked to predict the probability that listeners would guess correctly. They predicted 50%. Over the course of the experiment, 120 songs were tapped out, but listeners guessed only three of the songs correctly – a success rate of merely 2.5%

The explanation is as follows: when tappers tap, it is impossible for them to avoid hearing the tune playing along to their taps. Meanwhile, all the listeners could hear is a kind of bizarre Morse code. The problem is that once we know something, we find it impossible to imagine the other party not knowing it.

Extrapolating this experiment to software testing, most testers conduct a battery of tests that they feel is representative and that captures the set of end-user scenarios for how the software would be used. The reality is far from this. Any expert tester would asset that it is impossible to capture the complete set of scenarios that an end user may throw at a software system. As a result, critical path(s) of the code under certain scenarios go untested, which leads to software malfunctioning, production system crashes, customer escalations, long hours of meetings, debugging, etc.

Crowd sourced testing circumvents all these headaches by bringing a comprehensive set of code coverage mechanisms and end user scenarios during the design and development stages of software engineering, during which the cost of modification is meager. This results in identifying critical use cases early on and providing for those contingencies, which reduces software maintenance costs later on during and after productive deployment. Besides progressive code coverage, the quality and depth of software testing among various vital software modules is achieved, which ultimately results in a higher code quality, among other benefits.

Crowd sourced testing – the framework

At the heart of crowd sourced testing is the community that tests a given software product. The community encompasses people from diverse backgrounds, cultures, geographies, languages, all with a diverse approach to software usage. The community, represented by a diverse and extended user space, tests any given software by putting it to use under realistic scenarios, which a tester in the core test team may not be able to envision, given a tester’s constraints, such as limited bounds of operation, knowledge, scenarios. Thus, it is easy to observe the broad set of usage patterns that put the software under intense scrutiny. Crowd sourcing software testing draws its benefits from delegating the task of testing a web or software project, while in development, on to a number of Internet users, to ensure that the software contains no defects.

The method of crowd sourced testing is particularly useful when the software is user-centric, when software’s success and adoption is determined by its user feedback. It is frequently implemented with gaming or mobile applications, when experts who may be difficult to find in one place are required for specific testing, or when the company lacks the resources or time to carry out internal testing.

The spectrum of issues that such test efforts could uncover within a short lead-time is particularly noteworthy. Such testing efforts yield productive results with reasonable costs. Often times, the product company pays only for those valid reported bugs. Hence, the Return on Investment (ROI) is high compared to the traditional means of software testing.

How does it work?

Most crowd sourced testing companies provide the platform for the testing cycles. Clients specify the type of tests that they wish to have performed and the types of devices that the software product must be tested on.

Testers complete a profile, indicating the skills they have, the devices to which they have access to, and the countries where they reside. Once a tester has completed his profile, he/she can check the project dashboard for a listing of projects and releases that are available for testing. The dashboard may also include sample test scenarios, additional tools and scripts, instructions for testers about what is expected from them, etc. Usually, the testers are required to submit a QA plan, which outlines both high level test cases and detailed test scenarios. The plan may also include whether or not the test can be automated and expected results.

A qualified Project Manager, who is typically a proven community leader or a person from the client/the platform company, reviews such plans, and approves or amends such plans to cater to the client’s specific testing requirements.

Each project includes an explanation and access to a forum where bugs and issues are discussed and additional questions can be asked. Testers document bug reports and are rated based on the quality of their reports. The amount the testers earn increases as their rating increases.

The community combines aspects of collaboration and competition, as members work to finding solutions to the stated problem. Forums facilitate networking and discussion of bugs or relevant issues; rating systems allow for recognition of a job well done, which helps participants gain credibility and improved career.

The crowd source testing team is usually in addition to the organization’s testing team, and not a replacement.

Checks & Balances

Security is a crucial element to crowd source testing. More often than not, confidential customer information is exposed to testers during application testing. Any breach of this data can lead to serious damage, both to the brand and the business. Test data management ensures the availability and security of test data by obfuscating sensitive information for large-scale testing engagements. Masking such information or creating ‘test-only’ data helps maintain privacy and security while using crowd sourced testing services.

In almost all cases, the testers are required to sign a Non-Disclosure Agreement (NDA) when they join the community. The NDA forbids them from talking about customers, their products or specific defects, both offline and online on Facebook, Twitter, personal blogs or anywhere outside the confines of the private testing platform. Beyond that, the customers can upload a customized NDA, which testers must sign before viewing the customer’s project. For projects that require a high level of security, a pre-screened list of white hat engineers, that have a long professional relationship with the platform company are selected.

Furthermore, standardized communication patterns help users secure their data and gain confidence in their testing vendors, which results in a seamless transition.

By combining an internal, permanent team of testers with a crowd of experienced software testers working from around the globe, superior quality in testing is delivered. By constantly filtering the network of testers to accept only experienced software testing professionals, applicants without formal training and significant professional experience are eliminated. This ensures the quality and the validity of the bugs reported. Last but not the least, tests are dispatched to individual testers based on their experience, available material, and languages mastered. The testers and test project exposure are continually monitored to ensure both quality and integrity, not only of the test results, but also of the associated environment.

Caveat emptor?

Crowd sourced testing is best when the product under development is consumer-centric rather than enterprise-centric, such as gaming or web driven consumer applications. A global user base to test the product should exist and the product should be relevant to the community at large. This is also a test for the application’s potential success in the marketplace.

Paul Herzlich, a software-testing analyst, who oversees crowd sourcing services at Ovum, an institution that provides its clients with independent and objective analyses stated, “If you are testing software that all kinds of strangers are going to use, then why not use a bunch of strangers to test it. Also, it depends on what kind of testing you need to do. For testing user interfaces, sure – it makes sense.”

There should also be an earnest interest from the community to proffer critical feedback for the product under consideration such as a monetary reward. This also brings forth another interesting challenge. The product company is not obliged to follow through on community’s recommendations and may dispense with the feedback for various internal reasons. In this case, the community may feel unheard and this mandates a fine balancing act of the entire ecosystem.

The product company should be committed to working with a large group of people and understand that it involves some degree of overhead in such a decentralized test effort. It also requires certain subject matter experts to mentor and monitor various testing efforts as well as offer support and relevant guidance to the testing teams. If the product team does not have the resources to take on full-fledged testing in-house, but has a good understanding of the testing requirements, it can realize its overall strategy from a globally sourced team.

With normal employment contracts, employees receive a salary for their contribution and the firm owns any intellectual property developed by the employee during their tenure with the organization. In a crowd-sourcing constellation, people are participating voluntarily. Unless the position on Intellectual Property (IP) is clear and explicitly stated, i.e. a condition of the right to participate is the acceptance of Intellectual Property transfers to the client, potential for IP infringement by the contributor exists.

Get it Right the First Time – A Small Business Guide to Software Selection

Introduction

What to Buy – That is the Question

Buying decisions are the essence of life in the commerce-driven 21st century. From everyday decisions like selecting lunch from a restaurant menu, to getting a new car, to major company acquisitions, much of our time is spent “buying”.

And these choices are anything but simple. Each marketer professes to be the sole champion of our consumer rights and pummels us with enticing advertising messages, about how their wares are “the best”. Seductive as these messages are, no product or service is quite the same. The difference may be glaring – that of “better vs. worse”, or a subtle tradeoff between price, quality, feature set, customer service, or durability.

It is therefore important to keep our wits about & develop a systematic approach to the buying decision. Our view should be broad & farsighted, rather than buying based only on what immediately meets the eye. Hasty decisions leave us with flashy features never used, or hefty repair bills of products that came cheap.

A good example of a systematic approach is when you buy a car. A myriad of factors are considered & weighed, which impact the owner for the next decade. This includes brand, performance vs. style, price, safety, terms of finance, mileage, maintenance, resale value & so many other factors.

Selecting Software

In our new “wired” modern reality, software is no less important than products & services in our everyday lives. Whether it’s a personal email program, chat software for instant connection, collaboration software to organize scattered employees, or an ERP implementation to manage company processes – there’s no surviving without them!

But we’re somewhat more used to buying products & services than software, which is a relatively recent phenomenon. In many ways, selecting software is no different from selecting a product or service. Although intangible, software, also address a very real need, on which personal & professional success often depends. Naturally, some of the same purchase factors apply – brand, service, & maintenance costs.

In spite of the patronizing obviousness of the above, software selection is a grey zone; an underdeveloped arena. This accounts for the high incidence of “shelfware” – software that are bought with grand intentions, but end up on dusty shelves. This is because unlike products & services, it is not so intuitively evident that software have “life cycles” & need to be “maintained”, “updated”, & “repaired”.

Therefore, purchases are made based on what immediately meets the eye – technical features. This mistake is understandable, because technical features are well documented & advertised, & easy for the buyer to use as decision criteria. But with this approach, factors that are just as pertinent, but not so immediately obvious, get left out. Some research & serious thinking is needed to gauge these “hidden” factors.

Key Factors To Consider

1) Company History & Experience

The vendor needs to be sized up before we even go on to consider the software itself. Company background is essential because, unlike traditional companies, software companies are often small, & often beyond national boundaries. Since these companies would likely be handling our sensitive data, we need to do a background check. Some related questions are:

How Long Have They Been Around?

As in most cases, we can reasonably assume that past record is a good indicator of future performance. Important questions are – How long have they been around? How long have they been in the field? If they’re offering business collaboration software, have they been in this industry long enough? Even if the software is new, do they have experience developing related software?

What is Their Niche?

Does the company know your niche well enough to know your needs? If you are a small/mid sized business, a company mainly serving the Fortune 500 is not for you. If you work from home, it is unlikely a solution serving large offices will meet your needs.

The Ultimate Testament – The Customer

The ultimate judge of software is its users. To get a true picture, it is important to look at how customers are using the software & what their comments are. Does their site include a client’s list or page? Check out what customers say under testimonials, or you could even get in touch with the customers yourself for comments.

Dangers

There are certain things about the software industry that a buyer should be wary of. Software startups have shorter life spans than traditional companies & ride high on a success wave, but go “pop” when the industry bubble bursts. This was exemplified by the “dot com burst” of 2000. Whether the current spate of “Web 2.0” companies constitutes another expanding bubble which will inevitably burst is debatable, but it makes sense to be wary & bet your money on dependable companies with proven track records.

2) Cost

There’s no denying the importance of cost effectiveness in buying decisions across the board. Yet costs should be seen in a broad perspective, because low entry costs may well result in higher total costs along the product’s life.

Features vs. Price

A cost-benefit analysis makes sense, & costs need to be compared with the software’s range of features & functionalities. A document management system may not be the cheapest, but it may allow you to also set up a virtual office. Going for loads of features also constitutes a trap, because users never get around to using half of them.

Needs vs. Price

Another question is whether there is an overlap between features & needs at all. Many features may not relate to needs sought to be addressed. You should clearly define your needs, & classify features as “needed features” & “features not needed”. Another possible scheme of classifying features could be “must have”, “nice to have”, & “future requirements”.

3) Ease of Use/Adoption

An adoption & learning curve is involved with every new software purchase. It needs to be integrated with current systems & software, & the end users have to be brought up to speed using it. If the software is chunky & too complex, adoption resistance can occur.

Ease of Use

The software should have an intuitive interface, & use of features should be pretty much self evident. The shorter the learning curve training a new user, the better. The software should also have the ability to easily fit into the existing systems with which it will have to communicate. For example, a collaboration software might allow you to use some features from your Outlook itself or even share Outlook data.

Adoption

To get a measure of “shelfware”, i.e., software that is purchased but never used, some studies peg the number of shelved content management solutions at 20-25%. At a million dollars per implementation, that’s pretty expensive shelfware! According to another study in the US, 22% of purchased enterprise portal (ERP) licenses are never used.

No doubt, “Shelfware” is a result of ill thought out purchase decisions. These studies clearly underline the importance of making an educated purchase. One possible way to protect against shelfware is the new concept of software as a service (SAAS) hosted software. The software is hosted by its developer, & buyers have to pay a monthly subscription, which they can opt out of anytime.

Support

No matter how good a software is, there are bound to be times when one can’t find out how to work a particular feature or a glitch crops up. Some software solutions may require you to hire dedicated support staff of your own, while others may be easy to use, and no specialized staff may be needed, and still others may offer free support. The cost of hiring support staff needs to be factored into the buying decision.

Provider support may be in the form of live human support, or automated help engines. In case of human help, the quality of solutions, availability & conduct of support executives matter. Support can also be in the form of an extensively documented help engine, or extensive help information on the company site. This form of support is often more prompt & efficient than human help.

Training

Training is another form of support which deserves special mention. Free training seminars or their new avatar – webinars (online seminars) – greatly help in getting up to speed with the software at no extra cost. In some cases the company might offer paid training, which may be essential, & hence this cost needs to be factored into the purchase decision.

Maintenance

Maintenance costs & efforts have a major impact on the performance & adoptability of software, & hence form important criteria of the buying decision. In case the software is hosted at the company’s end, it is of utmost importance that the software be available online at all times, or the “uptime”. Uptimes are covered under the “service level agreement” & range from 98% to 99.99%. A minimum uptime of 99% is what one must look for.

The company’s upkeep is also important. Efforts to constantly improve upon the software underline a commitment to providing quality service. Are bugs fixed promptly & on an ongoing basis? Are they just releasing software & not updating it? One should develop a habit of keeping up with the company newsletter, release notes or the “what’s new” section on their site. Periodic newsletters & a “what’s new” section are indicative of a dynamic company.

4) Familiarity

The “feel” of the software is another important criterion. The software should keep with the basic layout & navigation schemes we are used to. This makes for quicker transition.

One good way is to compare with the OS in which we would use the software. Does it have the same basic schema as the OS environment? A software with Mac schema on Windows wouldn’t sit that well. Or we could compare it with other software which we are used to. If you are switching to a low priced solution from an expensive one, choosing software with a similar “feel” would make sense. Does it retain most of the main features you are used to?

5) Security

Security is a top consideration because he software company will likely be handling information critical to us – business, financial or personal. We need to be well assured of our data’s security & there are no risks of it being compromised. This needs research, & the extensiveness of which depends on the sensitivity of our data.

What safety features does the provider have?

Encryption, or coding of information, is used by most companies to protect the integrity of their clients’ information. There are different types of encryption, each of which is associated with a different level of security. DAS is one, once popular but now known to have loopholes. SSL 128-bit encryption is associated with top notch security. Password protection is another important facet. Is the software equipped to withstand manual & automated attempts to hack your password? The ability of the system to detect a hacking attempt & lock up in time is important.

Data Backup

In extreme cases of system breakdown caused by a facility fire, natural disaster or technical glitch etc, it is important that your data is frequently & adequately backed up. Data backup should be frequent & adequate.

Certain factors are to be considered in backup practices. The first is the frequency of backups. If there is a long gap, there is a possibility of data being lost in intermittent periods. Secondly, what are the security arrangements at the facilities where your data resides? Is it manned & guarded by security personnel? What other safeguards are in place? Is there a good firewall? What is the protection against virus attacks? What procedures are in place for disaster management?

Track Record

As with company background, a little research on the security track record makes sense. Has the company ever been vulnerable to attacks before? What were the losses? How did the company react? How many years has the company had a good record? New companies will have a clean record, but that isn’t necessarily indicative of good security.

The Server System

The server system where the sensitive data actually lies is very important. Is it state-of-the-art? The server infrastructure could be owned by the software provider themselves or outsourced to a dedicated company providing hosting solutions. Outsourced hosting is a good thing because hosting companies have extensive expertise & infrastructure for security, & this frees up the software provider to concentrate on the software itself. The company might not have an elaborate setup at all, running the software & processing data through computers set up in the garage somewhere acting as servers. This should get your alarm bells ringing!

Conclusion – A Systematic Selection Approach

Now that we have discussed all the relevant factors in detail & have a better perspective of the subject, it is important to develop a systematic approach to analyzing these factors.

What factors are important to me?

Although all of the above factors are relevant, their relative importance may differ from customer to customer. For a company with deep pockets, price comes lower in the list. For a company using collaboration software to process business information, security is high priority. Again if a solution forms an important part of a company’s business, it is important that it integrates well with existing systems. For dynamic industries like real estate, short training times are important.

Know Thy Software

By this step you would have selected software. But that is still not the end. For all our theorizing & researching, the software still has to pass its toughest test. Most software allows you a free trial period. It would be a good idea to seriously use this period to analyze the software.

It is important to stay focused during this testing period because the impact is going to be long lasting. Follow systematic planning. Identify objectives & needs, develop a testing plan, lay out the timelines and designate people from different departments to try out different features. Set responsibilities & goals so that testers take their job seriously.

THE DECISION!

Don’t hesitate to put the burden onto the company to prove itself. Let the company prove to you the features that seem important to you. For example, if security is of prime importance, ask the company to display how their solution scores high on security. Don’t hesitate to call them if you have questions.

Test their service levels to see if it lives up to their promises. If you submit a ticket, is it promptly responded to? Is a good solution provided? If the problem requires live help, do you get it fast enough? When you call in with a problem, is it a live person or an automated message you converse with?

Software Maintenance Implications on Cost and Schedule

Abstract The dictionary defines maintenance as, “The work of keeping something in proper order.” However, this definition does not necessarily fit for software. Software maintenance is different from hardware maintenance because software doesn’t physically wear out, but often gets less useful with age. Software is typically delivered with undiscovered flaws. Therefore, software maintenance is: “The process of modifying existing operational software while leaving its primary functions intact.” Maintenance typically exceeds fifty percent of the systems’ life cycle cost . While software maintenance can be treated as a level of effort activity, there are consequences on quality, functionality, reliability, cost and schedule that can be mitigated through the use of parametric estimation techniques.

1. INTRODUCTION One of the greatest challenges facing software engineers is the management of change control. It has been estimated that the cost of change control can be between 40% and 70% of the life cycle costs . Software engineers have hoped that new languages and new process would greatly reduce these numbers; however this has not been the case. Fundamentally this is because software is still delivered with a significant number of defects. Capers Jones estimates that there are about 5 bugs per Function Point created during Development . Watts Humphrey found “… even experienced software engineers normally inject 100 or more defects per KSLOC . Capers Jones says, “A series of studies the defect density of software ranges from 49.5 to 94.5 errors per thousand lines of code .” The purpose of this article is to first review the fundamentals of software maintenance and to present alternative approaches to estimating software maintenance. A key element to note is that development and management decisions made during the development process can significantly affect the developmental cost and the resulting maintenance costs.

2. SOFTWARE MAINTENANCE Maintenance activities include all work carried out post-delivery and should be distinguished from block modifications which represent significant design and development effort and supersede a previously released software package. These maintenance activities can be quite diverse, and it helps to identify exactly what post-delivery activities are to be included in an estimate of maintenance effort. Maintenance activities, once defined, may be evaluated in a quite different light than when called simply “maintenance”. Software maintenance is different from hardware maintenance because software doesn’t physically wear out, but software often gets less useful with age and it may be delivered with undiscovered flaws. In addition to the undiscovered flaws, it is common that some number of known defects pass from the development organization to the maintenance group. Accurate estimation of the effort required to maintain delivered software is aided by the decomposition of the overall effort into the various activities that make up the whole process.

3. APPROACHING THE MAINTENANCE ISSUE Maintenance is a complicated and structured process. In his textbook, Estimating Software Intensive Systems, Richard Stuzke outlines the typical software maintenance process. It is apparent that the process is more than just writing new code.

The following checklist can be used to explore the realism and accuracy of maintenance requirements.

o Which pieces of software will be maintained?

o How long will the system need to be maintained?

o Are you estimating the entire maintenance problem, or just incremental maintenance?

o What level of maintenance is required?

o Is that which is being called maintenance in fact a new development project?

o Who will do the maintenance? Will it be done organically by the original developer? Will there be a separate team? Will there be a separate organization?

o Will maintainers be using the same tools used during development? Are any proprietary tools required for maintenance?

o How much Commercial-Off-The-Shelf (COTS) is there? How tightly coupled are the interfaces?

o Some follow-on development may be disguised as maintenance. This will either inflate maintenance figures, or else cause shortfalls if basic maintenance gets pushed aside. These questions will help you ask whether maintenance is being honestly represented.

o Is the activity really an incremental improvement?

o Are healthy chunks of the original code being rewritten or changed?

o Will additional staff be brought in to perform the upgrade?

o Is the maintenance effort schedule regular and fairly flat, or does it contain staffing humps that look like new development?

4. SANITY CHECKS Although sanity checks should be sought on a year-by-year basis, they should not be attempted for overall development. The reason for this is that maintenance activities can be carried on indefinitely, rendering any life-cycle rules useless. As an example, consider Grady (p. 17):

We spend about 2 to 3 times as much effort maintaining and enhancing software as we spend creating new software.

This and similar observations apply at an organizational level and higher, but not for a specific project. Any development group with a history will be embroiled in the long tail ends of their many delivered projects, still needing indefinite attention. Here are a few quick sanity checks:

o One maintainer can handle about 10,000 lines per year.

o Overall life-cycle effort is typically 40% development and 60% maintenance.

o Maintenance costs on average are one-sixth of yearly development costs.

o Successful systems are usually maintained for 10 to 20 years.

Finally, as in development, the amount of code that is new versus modified makes a difference. The effective size, that is, the equivalent effort if all the work were new code, is still the key input for both development and maintenance cost estimation.

5. FIVE ALTERNATIVE APPROACHES All software estimation techniques must be able to model the theory and the likely real world result. The real world scenario is that over time, the overlay of changes upon changes makes software increasingly difficult to maintain and thus less useful. Maintenance effort estimation techniques range from the simplistic level of effort method, through more thoughtful analysis and development practice modifications, to the use of parametric models in order to use historical data to project future needs.

5.1 Level of Effort As is sometimes the case in the development environment, software maintenance can be modeled as a level of effort activity. Given the repair category activities and the great variance that they show, this approach clearly has deficiencies. In this approach, a level of effort to maintain software is based on size and type.

5.2 Level of Effort Plus Stuzke proposed that software maintenance starts with basic level of effort (minimum people needed to have a core competency and then that that basic core staff must be modified by assessing three additional factors; configuration management, quality assurance, and project management. His process addressed some of the additional factors affecting software maintenance.

5.3 Maintenance Change Factor Software Cost Estimation with COCOMO II (Boehm 2000) proposes a deceivingly simple, but also quite useful methodology for determining annual maintenance. Maintenance is one of the menu selections in the menu bar. In COCOMO II Maintenance encompasses the process of modifying existing operational software while leaving its primary functions intact. This process excludes:

o Major re-design and re-development (more than 50% new code) of a new software product performing substantially the same functions.

o Design and development of a sizeable (more than 20% of the source instructions comprising the existing product) interfacing software package which requires relatively little redesigning of the existing product.

o Data processing system operations, data entry, and modification of values in the database.

The maintenance calculations are heavily based upon the Maintenance Change Factor (MCF) and the Maintenance Adjustment Factor (MAF). The MCF is similar to the Annual change Traffic in COCOMO81, except that maintenance periods other than a year can be used. The resulting maintenance effort estimation formula is the same as the COCOMO II Post Architecture development model.

As stated previously, three cost drivers for maintenance differ from development. Those cost drivers are software reliability, modern programming practices, and schedule. COCOMO II assumes that increased investment in software reliability and use of modern programming practices during software development has a strong positive effect upon the maintenance stage.

Annual Maintenance Effort = (Annual Change Traffic) * (Original Software Development Effort)

The quantity Original Software Development Effort refers to the total effort (person-months or other unit of measure) expended throughout development, even if a multi-year project.

The multiplier Annual Change Traffic is the proportion of the overall software to be modified during the year. This is relatively easy to obtain from engineering estimates. Developers often maintain change lists, or have a sense of proportional change to be required even before development is complete.

5.4 Managing Software Maintenance Costs by Developmental Techniques and Management Decisions During Development

When it comes to maintenance, “a penny spent is a pound saved.” Better development practices (even if more expensive) can significantly reduce maintenance effort, and reduce overall life cycle cost. The more effort put into development, the less required in maintenance. As an example, the software development cost and schedule can be significantly impacted (reduced) by letting the number of defects delivered grow. This cost and schedule reduction is more than offset by the increase in maintenance cost. The following discussion is an example of how management decision can significantly affect/reduce software maintenance costs.

Lloyd Huff and George Novak of Lockheed Martin Aeronautics in their paper “Lockheed Martin Aeronautics Performance Based Software Sustainment for the F-35 Lightning II” propose a series of development and management decision designed to impact and reduce software maintenance costs. They propose an eight step process to estimate and control software maintenance . Their proposed steps are:

1. Strive for Commonality

2. Apply Industrial Engineering Practices to Software

3. Engage

4. Adopt a Holistic Approach to Sustainment

5. Develop Highly Maintainable Systems and Software

6. Manage the Off-the-Shelf Software

7. Plan for the Unexpected

8. Analyze and Refine the Software Sustainment Business Case (use Parametric software sustainment cost estimates)

5.5 A Parametric Assessment of Software Maintenance

Parametric models like SEER for Software allow maintenance to be modeled in either of two ways:

Estimating maintenance as a part of the total lifecycle cost. Choosing the appropriate Maintenance category parameters will include an estimate of maintenance effort with the development estimate for the individual software program. Several reports and charts show breakdowns of development vs. maintenance effort. This method is best used to evaluate life cycle costs for each individual software program.

Estimating maintenance as a separate activity. Using the appropriate maintenance parameters for the software to be maintained you can model the maintenance effort as a separate activity. This method will allow you to fine tune your maintenance estimate by adjusting parameters. Maintenance size should be the same as development size, but should be entered as all pre-existing code. This method can also be useful in breaking out total project maintenance costs from project development costs.

A good parametric estimate for maintenance includes a wide range of information. Critical information for completing a software maintenance estimate is the size or amount of software that will be maintained, the quality of that software, the quality and availability of the documentation, and the type or amount of maintenance that will be done. Many organizations don’t actually estimate maintenance costs; they simply have a budget for software maintenance. In this case, a parametric model should be used to compute how much maintenance can actually be performed with the given budget.

Estimating and planning for maintenance are critical activities if the software is required to function properly throughout its expected life. Even with a limited budget, a plan can be made to use the resources available in the most efficient, productive manner. Looking at the diagram above, you can see that not only are the multiple inputs that impact the maintenance, but there are several key outputs that provide the information necessary to plan a successful maintenance effort.

6. Conclusion The conclusions of this article are:

o Software maintenance can be modeled using a simplistic method like Level of Effort Staffing, but this technique has significant drawbacks.

o Software maintenance costs can be significantly affected by management decisions during the developmental process.

o Software maintenance can be accurately estimated using parametric processes.

o Software maintenance is best modeled when development and management decisions are coupled with parametric cost estimation techniques.

An Overview of Software Patenting

INTRODUCTION

The concept of “intellectual property” in India over the last few years has taken on some epic proportions for a number of reasons. One of the primary reasons, attributable to the growing awareness among the urban Indian population, is of the significance and, more importantly, the commercial benefits in protecting its intellectual property rights both within and outside India. And under traditional principles of intellectual property protection, patent law is to encourage scientific research, new technology and industrial progress. The fundamental principle of patent law is that the patent is granted only for an invention i.e. new and useful the said invention must have novelty and utility. The grant of patent thus becomes of industrial property and also called an intellectual property. And the computer software is a relatively new recipient of patent protection.

The term “Patent” has its origin from the term “Letter Patent”. This expression ‘Letter Patent’ meant open letter and were instruments under the Great Seal of King of England addressed by the Crown to all the subjects at large in which the Crown conferred certain rights and privileges on one or more individuals in the kingdom. It was in the later part of the 19th century new inventions in the field of art, process, method or manner of manufacture, machinery and other substances produced by manufacturers were on increased and the inventors became very much interested that the inventions done by them should not be infringed by any one else by copying them or by adopting the methods used by them. To save the interests of inventors, the then British rulers enacted the Indian Patents and Design Act, 1911.

With respect to patentability of software -related inventions, it is currently one of the most heated areas of debate. Software has become patentable in recent years in most jurisdictions (although with restrictions in certain countries, notably those signatories of the European Patent Convention or EPC) and the number of software patents has risen rapidly.

MEANING OF SOFTWARE PATENTING

The term “software” does not have a precise definition and even the software industries fails to give an specific definition. But it is basically used to describe all of the different types of computer programs. Computer programs are basically divided into “application programs” and “operating system programs”. Application programs are designed to do specific tasks to be executed through the computer and the operating system programs are used to manage the internal functions of the computer to facilitate use of application program.

Though the term ‘Software patent’ does not have a universally accepted definition. One definition suggested by the Foundation for a Free Information Infrastructure is that a software patent is a “patent on any performance of a computer realized by means of a computer program”.

According to Richard Stallman, the co-developer of the GNU-Linux operating system and proponent of Free Software says, “Software patents are patents which cover software ideas, ideas which you would use in developing software.

That is Software patents refer to patents that could be granted on products or processes (including methods) which include or may include software as a significant or at least necessary part of their implementation, i.e. the form in which they are put in practice (or used) to produce the effect they intend to provide.

Early example of a software patent:

On 21st Sep 1962, a British patent application entitled “A Computer Arranged for the Automatic Solution of Linear Programming Problems” was filed. The invention was concerned with efficient memory management for the simplex algorithm, and may be implemented by purely software means. The patent was granted on August 17, 1966 and seems to be one of the first software patents.

CONCEPTUAL DIFFERENCE BETWEEN COPYRIGHT AND PATENT

Software has traditionally been protected under copyright law since code fits quite easily into the description of a literary work. Thus, Software is protected as works of literature under the Berne Convention, and any software written is automatically covered by copyright. This allows the creator to prevent another entity from copying the program and there is generally no need to register code in order for it to be copyrighted. While Software Patenting has recently emerged (if only in the US, Japan and Europe) where, Patents give their owners the right to prevent others from using a claimed invention, even if it was independently developed and there was no copying involved.

Further, it should be noted that patents cover the underlying methodologies embodied in a given piece of software. On the other copyright prevents the direct copying of software, but do not prevent other authors from writing their own embodiments of the underlying methodologies.
The issues involved in conferring patent rights to software are, however, a lot more complex than taking out copyrights on them. Specifically, there are two challenges that one encounters when dealing with software patents. The first is about the instrument of patent itself and whether the manner of protection it confers is suited to the software industry. The second is the nature of software, and whether it should be subject to patenting.

However, issues involved in conferring patent rights to software are a lot more complex than taking out copyrights on them. Specifically, there are two challenges that one encounters when dealing with software patents. The first is about the instrument of patent itself and whether the manner of protection it confers is suited to the software industry. The second is the nature of software and whether it should be subject to patenting.

a) Different Subject Matters

Copyright protection extends to all original literary works (among them, computer programs), dramatic, musical and artistic works, including films. Under copyright, protection is given only to the particular expression of an idea that was adopted and not the idea itself. (For instance, a program to add numbers written in two different computer languages would count as two different expressions of one idea) Effectively, independent rendering of a copyrighted work by a third party would not infringe the copyright.

Generally patents are conferred on any ‘new’ and ‘useful’ art, process, method or manner of manufacture, machines, appliances or other articles or substances produced by manufacture. Worldwide, the attitude towards patentability of software has been skeptical.

b) Who may claim the right to a patent /copyright?

Generally, the author of a literary, artistic, musical or dramatic work automatically becomes the owner of its copyright.

The patent, on the other hand is granted to the first to apply for it, regardless of who the first to invent it was. Patents cost a lot of money. They cost even more paying the lawyers to write the application than they cost to actually apply. It takes typically some years for the application to get considered, even though patent offices do an extremely sloppy job of considering.

c) Rights conferred

Copyright law gives the owner the exclusive right to reproduce the material, issue copies, perform, adapt and translate the work. However, these rights are tempered by the rights of fair use which are available to the public. Under “fair use”, certain uses of copyright material would not be infringing, such as use for academic purposes, news reporting etc. Further, independent recreation of a copyrighted work would not constitute infringement. Thus if the same piece of code were independently developed by two different companies, neither would have a claim against the other.
A patent confers on the owner an absolute monopoly which is the right to prevent others from making, using, offering for sale without his/her consent. In general, patent protection is a far stronger method of protection than copyright because the protection extends to the level of the idea embodied by a software and injuncts ancillary uses of an invention as well. It would weaken copyright in software that is the base of all European software development, because independent creations protected by copyright would be attackable by patents. Many patent applications cover very small and specific algorithms or techniques that are used in a wide variety of programs. Frequently the “inventions” mentioned in a patent application have been independently formulated and are already in use by other programmers when the application is filed.

d) Duration of protection

The TRIPS agreement mandates a period of at least 20 years for a product patent and 15 years in the case of a process patent.

For Copyright, the agreement prescribes a minimum period of the lifetime of the author plus seventy years.

JURISDICTIONS OF SOFTWARE PATENTING

Substantive law regarding the patentability of software and computer-implemented inventions, and case law interpreting the legal provisions, are different under different jurisdictions.

Software patents under multilateral treaties:

o Software patents under TRIPs Agreement

o Software patents under the European Patent Convention

o Computer programs and the Patent Cooperation Treaty

Software patenting under TRIPs Agreement

The WTO’s Agreement on Trade-Related Aspects of Intellectual Property Rights (TRIPs), particularly Article 27, are subject to debate on the international legal framework for the patentability of software, and on whether software and computer-implemented inventions should be considered as a field of technology.

According to Art. 27 of TRIPS Agreement, patents shall be available for any inventions, whether products or processes, in all fields of technology, provided that they are new, involve an inventive step and are capable of industrial application. (…) patents shall be available and patent rights enjoyable without discrimination as to the place of invention, the field of technology and whether products are imported or locally produced.”

However, there have been no dispute settlement procedures regarding software patents. Its relevance for patentability in the computer-implemented business methods, and software information technology remains uncertain, since the TRIPs agreement is subject to interpretation.

Software patents under the European Patent Convention

Within European Union member states, the EPO and other national patent offices have issued many patents for inventions involving software since the European Patent Convention (EPC) came into force in the late 1970s. Article 52 EPC excludes “programs for computers” from patentability (Art. 52(2)) to the extent that a patent application relates to a computer program “as such” (Art. 52(3)). This has been interpreted to mean that any invention which makes a non-obvious “technical contribution” or solves a “technical problem” in a non-obvious way is patentable even if a computer program is used in the invention.

Computer-implemented inventions which only solve a business problem using a computer, rather than a technical problem, are considered unpatentable as lacking an inventive step. Nevertheless, the fact that an invention is useful in business does not mean it is not patentable if it also solves a technical problem.

Computer programs and the Patent Cooperation Treaty

The Patent Cooperation Treaty (PCT) is an international patent law treaty, which provides a unified procedure for filing patent applications to protect inventions. A patent application filed under the PCT is called an international application or PCT application. Under the PCT, the international search and the preliminary examination are conducted by International Searching Authorities (ISA) and International Preliminary Examining Authority (IPEA).

CURRENT TREND

However, before we start hailing the advent of a new era and equating the patenting of software in India it would be well worth our while to take a pause and examine the realities of software patenting. We could do this by looking at examples of countries in which software patenting has already become the order of the day, such as in the US and Japan .

United States

The United States Patent and Trademark Office (USPTO) has traditionally not considered software to be patentable because by statute patents can only be granted to “processes, machines, articles of manufacture, and compositions of matter”. i.e. In particular, patents cannot be granted to “scientific truths” or “mathematical expressions” of them. The USPTO maintained the position that software was in effect a mathematical algorithm, and therefore not patentable, into the 1980s. This position of the USPTO was challenged with a landmark 1981 Supreme Court case, Diamond v. Diehr. The case involved a device that used computer software to ensure the correct timing when heating, or curing, rubber. Although the software was the integral part of the device, it also had other functions that related to real world manipulation. The court then ruled that as a device to mold rubber, it was a patentable object. The court essentially ruled that while algorithms themselves could not be patented, devices that utilized them could.

But in 1982 the U.S. Congress created a new court i.e the Federal Circuit to hear patent cases. This court allowed patentability of software, to be treated uniformly throughout the US. Due to a few landmark cases in this court, by the early 1990s the patentability of software was well established.

Moreover, Several successful litigations show that software patents are now enforceable in the US. That is the reason, Patenting software has become widespread in the US. As of 2004, approximately 145,000 patents had issued in the 22 classes of patents covering computer implemented inventions.

Japan

Software is directly patentable in Japan. In various litigations in Japan, software patents have been successfully enforced. In 2005, for example, Matsushita won a court order barring Justsystem from infringing Matsuhita’s Japanese patent 2,803,236 covering word processing software.

Indian Position

With respect to computer software, in Patents (Amendment) Act, 2002, the scope of non-patentable subject matter in the Act was amended to include the following: “a mathematical method or a business method or a computer programme per se or algorithms”.

However, the recent amendment changes (Ordinance, 2004), which amends the Patents Act, 1970, has been promulgated after receiving assent from the President of India and has came into effect from 1st Jan., 2005. Apart from change in pharmaceuticals and agro chemicals, one of the seminal amendments this Ordinance seeks to bring is to permit the patenting of embedded software.
Hence, the amendment means that while a mathematical or a business method or an algorithm cannot be patented, a computer programme which has a technical application in any industry or which can be incorporated in hardware can be patented. Since any commercial software has some industry application and all applications can be construed as technical applications, obviously it opens all software patenting.

In any case, any company seeking to file a patent application for software under the Ordinance should ensure that its invention firstly, follows the three basic tests:

o Inventive Steps

o Novelty

o Usefulness

Therefore, it is important that the software sought to be protected is not merely a new version or an improvement over an existing code.

Further, in accordance with the specific requirements of the Ordinance with regard to patentability of software, the software should necessarily have a technical application to the industry or be intrinsic to or “embedded” in hardware. This is to prevent against any future litigation or claims of infringements being raised, which is a distinct probability even after a patent has been granted.

CONCLUSION

India for its part seems to have adopted the more conservative approach of the European patenting norms for software. But the Ordinance definitely has its use and relevance in today’s India, particularly for our growing domestic semi- conductor industry. This, along with judicial tempering might definitely ensure a judicious use of patent protection while allowing the industry to grow through innovations and inventions, thereby, mitigating the risks of trivial patents chocking the life out of real innovations and inventions. This is the reason a patent should always be treated as a “double edged sword”, to be wielded with caution and sensitivity.

Top 10 Websites To Download Free Softwares

Everyday thousand of softwares are released, purchased and used by people for different tasks. These softwares make our work easy, comfortable and help us in doing everything more quickly and easily. Mostly, we have to pay for a pro version in order to have their proper functionality. But some softwares have free versions which function just like pro versions. So basically, there is no need to buy software because free versions serve quite well and fill our needs.

There are hundreds of thousands of software downloading websites. Most of these websites are nothing more than garbage websites. These websites always force you to install their downloader first, sign up and then allow to download. Actually, there is no need to do that. You can download any kind of program just by a single click on authority websites.

Today I have created a list of top 10 best websites for free software downloading. These websites are best quality and authority sites. Thousands of softwares are available on these websites to fill your needs.

So top 10 best website for free software downloading are:

1. CNet Download

Cnet Download is the world’s best website for free software downloading. The website is updated on regular basis to keep softwares up-to-date. Daily millions of people visit this website and download softwares for free. Reviews and ratings of each software is available so that you can choose best software.

2. Softpedia

Like Wikipedia, Softpedia is encyclopedia of softwares. It is one of the biggest resources of softwares. It was launched in 2001 and now, has more than 500000 programs for Windows, Linux, Mac and Mobile Phones.

3. Brothersoft

Brothersoft is one of the leading software download sites providing a huge collection of shareware and freeware for download. It was named world’s second best software website of 2012 by TopTenReviews.

4. Softonic

Millions of people visit softonic daily to download free softwares. It offers programs on security, utility, multimedia, browsing, photo editing, office, developing and networking. It has enormous selection of free downloadable softwares.

5. Filehippo

Filehippo is my favourite website for software downloads. It is surely one of the best website for free software downloads. Although Filehippo is a not a fancy website like CNet or Brothersoft but still it is a prominent website in software industry. According to Quantcast, it receives more than five million visitors each month which makes it one the most visited websites.

6. Download3K

Download3K is another popular software website. Users can easily find any softwares they want with its search box. Its employees publish honest review and give rating to software depending on its quality and functionality.

7. Tucows

Tucows is one of the oldest websites in software industry. It has a huge resource of useful softwares, programs and apps. It has software on almost every category. Softwares for different platforms are also available.

8. Soft32

Soft32 is also one of the most popular software downloading website. It provides very useful softwares for windows, mac and mobile.

9. Download3000

Download3000 has downloads for Windows, Mac and mobile operating system. It has a large selection of categories for all the different operating system. Thousands of free softwares are available to cater your needs.

10. FreewareFiles

FreewareFiles has ranked 10th in my list of top 10 best software downloading websites. It has a huge library of useful freeware downloads. It has softwares on security, design, graphic, editing, audio & video, antivirus, internet and utilities.

3 Ways To Create Software Without Coding Skills

When it comes to product creation many aspiring internet marketers struggle to come up with ideas. Usually it comes down to a couple of things: 1) They have no experience and thus aren’t comfortable creating a “how to” product or 2) they lack certain specialized skills like copy writing or programming.

If that’s you (or was you) then you can relate. I know it was something I struggled with and many of my students struggle with the same thing. So when I’m coaching students on product creation I often suggest they create a simple software.

Software is great because it has a higher perceived value which makes it easier to sell. Oftentimes all you need to “sell” software is just show a demo of what it does. Which leads to another perk – you don’t have to know any super secret “loophole” that makes $x,xxx per hour in order to create a popular product.

Normally all it takes to have a successful software launch is to create a software that saves people time or helps to automate a tedious task…
But isn’t it expensive to outsource software?

Sometimes, but usually not nearly as expensive as you think…

But! There is a better way…

DO IT YOURSELF!

Yes, today there is technology that allows you to create software without having to actually code the software. Heck, you don’t even have to know how to code. (I don’t know how to code.)
That brings me to today’s topic: 3 ways to create software without any coding skills…

It’s very easy with the use of “rapid development tools” like the ones I’m going to talk about. These tools allow you to quickly and easily become a software creator…

However, be warned not all tools are created the same – each of the tools I’m going to talk about today serve different purposes and different levels of sophistication.

I’m going to start with the most basic (and cheapest) of the three.

Easy Software Maker
This is the newest of the three and also the most basic. Easy Software Maker is a souped up version of an “HTML compiler”. Which means that anything that can be displayed on a web page can be turned into a software using this product. This means you can turn any JavaScript, HTML, html5, PHP etc. into a working and marketable software. One of the customers of this product used it to quickly create a cool QR code generator.

The best part of Easy Software Maker is the price. It’s the most affordable of the three which means it will be very easy to recoup your investment. In fact, if you create just one software you should be able to “get your money’s worth”. You can also upgrade to a version that requires a registration for list building and/or a password on certain pages. (I bought the “Pro Plus” version which allows both.)

The second way you can create software without any coding skills is a little more advanced.

iCurator Pro

iCurator Pro is a “dashboard” style software creator. Which means you can make some very attractive looking software. This software creator gives you the ability to build a dashboard with up to 10 buttons that can link to any website, PDF or video. This means you can easily take PLR (private label rights) products and turn them into a training product with a much higher perceived value.

Now, last but not least is the most sophisticated of the three software creators…
Software Product Magic

Software Product Magic is essentially a “recipe” based software builder. However, don’t let that fool this – it’s much more powerful than other “recipe” based builder. Software Product Magic allows you to make a “template” of any kind (JavaScript, HTML, CSS, etc) and put in “tags” that allow your user to essentially “fill in the blanks” and output the results. For example, my Exit Pop Ninja software was created using Software Product Magic. The user simply follows the instructions and the software spits out an exit pop code for them ready to copy and paste into their squeeze page or sales page.

I’ve owned Software Product Magic longer than the other 2 software creators mentioned above and even though it was kinda pricey it has paid for itself over and over and over…

In conclusion, it’s easier than ever to get started as a product creator with software and these “rapid development tools” make it easy and painless to create your own software even without any coding skills (like me). So if you have been struggling with ideas or lack of experience but want to get started with product creation I suggest you pick one of the tools above and get started today. I own all three products and I absolutely love them.:-)

Remember, with software you have a higher perceived value and should be able to recoup your investment in no time at all. Leave me a comment below and let me know what you think about software creation.

Business Benefits of Custom Software Development

All businesses and organisations will typically need some form of software during their lifecycle. The types of software utilised by most companies range from applications that will enable better management of key organisational functions – Human Resources, Finances and Accounts, inventory and stock and even running projects, to more specific items of software that have a key purpose such as Content Management Software for use on company websites. Although these software applications can be purchased “off the shelf”, there are many business benefits that can be associated with choosing custom software development.

Custom Software Development is created for you

Developing custom software is a bespoke, made to measure process, which means that any applications and software programmes created as a result of the process will be entirely made for your company and its individual needs and requirements. Basically, a piece of custom made software is flexible and has the potential to fulfil your specifications meaning that it is easy to use and can be deployed throughout your entire organisation. Instead of having to make do with a ready made software programme or application, with customised software you can be sure that what you will receive will be entirely fit for purpose. There are also significant financial benefits that can be associated with custom made software despite it costing a little more to purchase than off the shelf packages. Software applications that have been made for you don’t require any licence fees, so you can distribute them across your entire organisation without needing to pay extra.

Custom Software Developers will work with your Company

When creating software designed for your company, custom software developers will design and code it to integrate properly within your organisation. The software won’t just help you achieve what you need it to achieve, it will be rich in features and tools that will make it usable by the people who will be operating it. With a piece of custom software all the requirements of your company will be considered, and developers will meet these both in the way that they develop the software and the after care that they provide properly. Although some training and support is available with off the shelf software to a certain extent, with custom made software your developers will continue to work with and support your company whether that’s through training staff members in the use of the software or providing maintenance and technical help to remedy any errors that might occur in the software.

Customised Software is Safe and Secure

The ready made software packages available to businesses and organisations today are certainly a lot more secure than the ones that have been developed in previous years, however they don’t compare to the security levels of customised software. Because customised software has been created for your company it will only be usable by individuals in your company. When you purchase custom software you will be given administrator rights to the software ensuring that you can change and alter user profiles and passwords to be in accordance with your own internal data protection policies. Customised software used on the web is also a lot harder to hack than standard, off the shelf software, and you can be sure that a reputable custom software developer will work hard to keep your application or programme and the data it contains as safe and secure as possible.

Customised Software is Adaptable

Ready made software is designed to be adaptable and flexible, meeting your company’s needs and requirements both now and in the future. Even if you need a few different software programmes to accomplish organisational tasks, a custom developer will be able to integrate the different processes that you need into a single, usable application. Custom software is also much more likely to be cross-platform suitable, so you can be sure that when your company goes mobile you have the software that will support it.

Finding Time-Saving Yoga Studio Management Software

Running and building up a yoga studio requires coordinating scheduling, marketing, accounting, class registration, class attendance, sales and credit card processing, inventory, payroll, staff management, documents, and so much more.

When you started teaching yoga, you wanted to teach yoga. Sure, you knew running a yoga studio or teaching classes involved administration, but perhaps running your yoga business is taking over your life.

Ask yourself:

How many software applications are you running to keep it all together? Are you using a fleet of spreadsheets?

The fact is there is some pretty cool software options available specifically designed for yoga studios that take care of all your yoga studio administration needs in a central, online location.

3 Fundamental Elements of A Great Yoga Studio Software Service:

Cloud computing capability (web-based software); and
Comprehensive, all-in-one yoga software that centralizes all your yoga studio administration operations.
Automation – the more the better. Typically this is easier with comprehensive, all-in-one software.

1. Cloud Computing Yoga Studio Management Software is Where It’s At

Cloud computing is web-based software. You simply log-in to your account and manage your entire yoga studio on the Web. Stop with the downloads, installations, networking, and upgrades that plague desk-top software applications. Seriously consider putting your entire yoga studio software management needs on the cloud.

2. Centralizing Your Yoga Studio Software

Integrating separate pieces of software is a never-ending headache. When one application is upgraded, it then doesn’t sync with other applications. What you get is a mish-mash of software that more often than not malfunctions. Instead of saving you time, you burn up time trying to get it all working together.

If you can, get yoga studio software that is comprehensive and meets all, or as much of your computing needs as possible.

3. Automation

The more you automate, the more time you save which lets you teach more or take more time off. The fact is, running a yoga studio is managing a large number of variables – students, staff, teachers, schedules, inventory, sales, etc. The goal is full classes and regular students. Automation helps you take care of the menial tasks so you can put your mind and time to activities you enjoy and that let you build your yoga business (and take a vacation).

Yoga Business Software Features to Look For

Not all yoga studios have the same needs. The remainder of this article sets out yoga studio software management features available. Go through them and see what it is you need.

1. Yoga Class Scheduling

Online class scheduling – this is an extremely customer-service friendly feature for your students. Consider the following functions you might want:

Wait-lists: let your students add their name to a waitlist. With software, save yourself the time of managing these lists. Let the software do the heaving lifting.
Student self check-in: spare your students standing in line waiting for you. Let your students scan their ID card and get to class. You also get time to set up and prepare for class.
Printable sign-in sheets: maybe you prefer physical sign-in sheets. Get software that offers a print option with sign-in templates. You can load the data later… or not.
Equipment and room rental scheduling: do you rent out rooms and/or equipment? Why not automate the process and make it easy for your yoga clientele to book your rooms and equipment themselves.
Recurring bookings: nothing builds a business like recurring customers. Make it easy for yoga students to book multiple classes and commit to your classes.
Class attendance statistics: You only know how your business is going if you can measure results. Software that produces easy-to-read reports on class attendance statistics gives you tools at your finger-tips to assess your money-making classes and classes that may not be worth having.

2. Scheduling Ease

Drag and drop functionality for booking is a real luxury. In fact, drag and drop anything is great. Make it easy for your clientele to book classes and appointments with you.
On the Cloud (web-based): Not only does cloud computing save you networking costs, upgrade hassles, and installation nightmares, but you can access your entire yoga business anywhere.
Multiple schedule views: daily, weekly, by name, service, gender and more. Birds-eye views of your schedule can be very handy when looking at the big picture.
Color coding scheduling: sure, you must memorize the colors, but in time the colors will speed up your viewing of your schedules.

3. Yoga Studio Enrollment Options

Perhaps you offer more than just yoga classes. If so, look for yoga studio management software that has the flexibility to schedule all types of events such as:

Courses: still a popular yoga class structure – a series of classes building on concepts.
Seminars / special events: do you ever have a speaker or teaching events? Make it easy for people to sign up and a breeze for you to manage the scheduling.

Plus software that enables:

Payment plan processing: yoga studios usually offer a variety of pricing packages. Make it easy to sell packages (without the hand-held calculator) by considering software that tabulates and accepts payment for yoga packages.
Payment status information: every business has some customers who owe money. Yoga studios are no exception (generally). See at-a-glance who owes you money (and how much).

4. Payment Processing

Credit card integration. Some yoga software includes credit card processing “on the cloud” sparing you the hardware to pay for and set up.
Link payments with services. This way you can produce financial statements any time to see the financial status of your business.
Membership cards (i.e. swipe cards for signing in) and ID tag capability: Lose the paper and look professional with swipe cards enabling self-check in and much faster client tracking.

5. Online Store for More Revenues

If you sell retail, why not create an online store? It’s simple to do with the right yoga studio software. There is software that includes e-commerce capabilities so that not only can you track your in-studio retail sales, but you can actually start selling off your website.

In fact, you could consider partnering with yoga and health products suppliers to provide you products to sell on your online store. You can carry inventory or enter drop-shipping arrangements. The sky is the limit.

Moreover, with e-commerce, you can sell gift cards, yoga class packages, event tickets, etc.

6. Yoga Gift Card Selling Option

Gift cards are BIG business. Why not sell your own gift cards? You’ll earn revenues and get more students in your yoga studio. Some yoga studio software has the capability to provide gift cards and program them with the software so that you can create them, sell them, and track usage. Other considerations when implementing gift cards for sale include:

Prepaid gift card options.
Able to track student account balances.
Loading gift cards with flexible amounts of money.
Selling your gift cards in your studio and online.

7. Email Marketing for Your Yoga Studio

E-mail marketing can give your yoga business a huge boost. If you get yoga studio software, see if you can find a product that integrates with e-mail marketing software. This way you can leverage your yoga studio software contact database with your e-mail marketing rather than having separate databases. Trust me – when you can centralize, it’s worth it.

Not only can you use e-mail marketing to get more students or encourage regular attendance, but you promote sales, encourage referrals, sell products and yoga packages, promote events, send out class reminders, and more.

When you centralize your yoga studio student database with e-mail marketing software, you can segment your students so that you send the most appropriate messages to each person.

For example, if a student signs up online for a class, you can automate reminder class messages. This way you improve your class attendance, and in a worst case scenario, if the student can’t attend, they’ll be reminded to remove their name off the schedule opening up a spot for the wait list.

Then your e-mail system will produce an e-mail to the wait list alerting them to the open spot. Imagine doing all this manually. Automation is key.

8. Yoga Studio Inventory Tracking

If you sell retail, tracking inventory digitally can save you a lot of time. However, you need software that tracks the stocking and sale of items. Moreover, if you get software that includes inventory tracking, look for the capability to track in-store and online sales.

Again, this goes toward centralizing your operation. By tracking inventory with your yoga studio management software, you’ll integrate inventory with sales which lets you produce up-to-date financial reports… not to mention save you time syncing inventory with sales and re-ordering.

9. Yoga Student Account Management

When you use cloud software, you can create accounts for all of your students – so both you and they can log-in to their accounts. This way you and your students can track purchases, their profile, class attendance, referrals, etc. This is very convenient for you and your students.

Liability: What about the dreaded waivers. Necessary, but not a lot of fun. If you let students sign up online, be sure you offer an e-waiver for them to agree to. This too is available with some yoga studio software.

10. Yoga Studio Staff Management

Whether you love managing staff or not, consider saving yourself time and the ability to manage your staff “on the cloud”. Some yoga studio software enables you to do some or all of the following features:

A staff dashboard portal where you can send instructions to staff and to-do items.
Individual staff log-in accounts for each staff member.
Permission levels to various portals of your software. Again, this is where centralization works for you big time.
Staff scheduling – lose the monthly printouts and create staff schedules online where your entire staff can access it anytime from anywhere. Scheduling staff with software is much more convenient than on paper. Beside, how often does the schedule change in a month? Save yourself a few erasers.

11. Look for Payroll Management

Do you know how much you’re paying out in wages, commissions, fees, etc.? It’s not so easy to track with a yoga studio business given the variety of remuneration options yoga teachers opt for. There’s hourly, commissions, flat rates, and combinations of these payment options.

Again, a quality yoga software product will track all your pay-rates for all your staff – no matter how complicated. It makes tallying the amount you owe easy.

Take for example, a yoga teacher that earns a flat rate plus a per student rate after a class attendance threshold is met. Okay, one class with one teacher isn’t too hard to track, but imagine 30 classes and 5 teachers.

It gets complicated. Look for software that will track and tally all of this for you – all calculated with the swipe cards issued to your yoga students (if you opt for swipe cards – now you’re starting to see how beneficial swipe cards can be).

Another payroll feature to look for is a punch clock for hourly employees. I’m not talking about a wall-mounted contraption. I’m talking about staff being able to quickly log into the cloud software and entering start and stop times at the touch of a button.

Finally, you want to be able to export all this payroll data into your accounting software saving you reconciliation hassles come tax time (and saving you lots of money in accounting fees).

12. Track and Measure – Look for Reporting Capability

You won’t know where your business is going if you don’t know where it’s been and where it’s at. This boils down to the financials – but not just the usual income statement, balance sheet, and cash flow statement.

I’m talking about in-depth class attendance, payroll costs, number of students per yoga teacher, yoga student and employee retention rates, no shows, product returns, and sales figures (past, present and forecasts) – to name a few reporting capabilities to look for.

13. Scalability – Get Software that’s Priced to Your Studio Size and Needs

Okay, not every yoga studio wants to expand and build a huge business. That’s why yoga software that scales is key. What I mean by this is yoga software that accommodates both small and huge yoga studios – and is priced according to need.

Look for software that offers different pricing packages so you can get a software package that serves your business as is – but has the capability to accommodate your growth – if that’s what you do with your studio.

Where Do You Go From Here?

I’ve covered a lot of ground. Sure, you may not want or need all that capability. That’s fine – but you might need more functionality in the future.

One thing is certain, you want to choose your yoga studio software carefully. Why? Because you’ll spend a good amount of time implementing it and getting it going just right for your yoga studio. The time investment, with the right software, will certainly be worth it.