Thursday, June 29, 2006

Analyzing requirements in offshore software development

Are you a Software professional? If yes, then you must be familiar with SDLC, "System Development Life Cycle". Here are some key points are given to implement your work for a success on any website.
How does the customer tell you what he needs?

As an offshore software developer, you should be able to fully explain how you conduct your work. You should have a common process that applies to every project in offshore software development. The process should define how you gather your customers' requirements and specifications, how you develop schedules and prices, how you communicate with your customers, how you develop, test, and document your work product, and how you deliver the product to your customers.

To work out this methodology under offshore software development, you must follow the first step of SDLC which is a "Problem Identification and Requirement Specification"

Once you identify the actual problem i.e. the aim of the project, you can turn to gather the information. There are different sources to collect and analyzing software requirements in offshore software development.

1.Interview: If the Client is available, then conduct an interview through MSN Messenger or Yahoo Messenger; discuss your problems related to software. Note down the important things for offshore software development. Ask limited and actually needed question to him. Try to collect the sufficient information within less time. Thus this is the best technique for analysing Software requirement in Offshore software Development

2.Questionnaire: An offshore software developer uses this technique for collecting information. If the interview is not possible or if you are not able to attain the interview, then just by sending the Questionnaire to your Client via email, you can collect the information. As an offshore software developer your questionnaire must be formatted with again limited questions. All the questions must be meaningful with explanatory format. As an analyst under offshore software development, you can send Questionnaire again for detailed information as per the Requirement.

3.By the nature of your specialization, you must bring extensive world- class resources to meet the needs of your customers. Partnering with an organization with world-class capabilities can offer access to new technology, tools and techniques that you may not currently possess; you, as an offshore software developer, should always use more structured methodologies, procedures and documentation; and a competitive advantage through expanded skills.

What are you looking for?

You must look forward in achieving the best software solution for your offshore client and you must have a preferred method of doing business with companies for numerous positive reasons. As an offshore software developer, you must think about the following in respect of your client company and you should make sure that your software solution provides:

1.Effective utilization of resources being utilized.

2.Enhancement of corporate financial goals by IT Department.

3.The compatibility of current resources and new technology.

4.Quicker and more effective method to handle these issues.

5. Find out the consequences for a wrong decision.

What for information do you need?

A project under Offshore Software Development is not deemed complete until you have proper documentation with you. "System Design" is the main phase of SDLC. This phase is the skeleton of your Software and that's why you must request for layout of the working process of your clients project. In offshore software development you can request to your client for the flow of information in their working area.

This information is needed for proper structuring of your collected data under offshore software development process. If your clients already have computerized system then you must focus on the drawback or limitation of the previously existing system. As an offshore software developer, you must study the Software and Hardware specification to improve the performance of the proposed system. You must study their management strategies for a System Design.

How do you communicate back what you will create?

As an offshore software developer, you must implement the Software Quality Assurance (SQA) process that addresses the quality assurance needs at every phase of the development cycle. Your QA team must focus on quality control checklist. In addition, you must also have a comprehensive Quality Testing Checklist which ensures that every solution delivered measures up to the highest possible international standards.

Testing and implementation is one of the phases of System Development Life Cycle. As an offshore software developer, you must ensure through proper planning that the project doesn't move away from its targeted goals while the customer gets a clear definition of the project and is in the know of the project status and has ready access to project deliverables at any point of time. As an offshore software developer, you must ensure the timely and quality delivery of the following, for 100% client satisfaction:

- Prototypes & Staged Deliveries

- Weekly Status Reports

- Final deliverable

How do you make sure?

Under offshore software development process, you must check out that your client has received the reports, prototypes, final deliverable and obtain a receipt of these you're your client. You will receive positive response from your client. As an offshore software developer, you must take care about their time to time requirements. If your client is satisfied or impressed by your regular work then you can make sure that the software you have developed has "Good Quality". Thus this positive response will motivate you for offshore software development.
For details read here.

Wednesday, June 28, 2006

Tips on offshore project management

Success of a project when developed by an offshore software development provider is largely dependant on the way the project is remotely managed from the client’s side. If you hope to make a project successful with very little input from your end as a customer, it is unlikely that the project will achieve success in the long term. The basic reason is very simple: you know your business requirements best. Software services companies working in another part of the world can only develop a solution based on the input provided by you.

Fairly large projects have a dedicated project manager who interacts with the offshore team and acts as a virtual bridge between the business and the software developers. If your project does not have dedicated personnel for it, there is no need to despair. You can follow some simple tips mentioned below and manage your project quite successfully.

Define the goal every week: The complete lifecycle of the software development process can be divided into smaller goals which can then be communicated to the team via email or by phone. It is a good idea to have a call with the entire team on Monday morning and run through the list of weekly goals that need to be achieved and then call again at the end of the week to evaluate if they have been achieved or not and what type of roadblocks were faced by them.

Manage the time difference: Time difference is one of the factors in offshore software development projects which can become a pro or a con depending on how it is managed. It is imperative that a "common" time zone is mutually agreed on by you and the offshore vendor. This time should be used for communication and ironing out issues faced by the development team. Though it might take some time to get used to getting in to office at 7 AM, it pays good dividends in the long run.

If there are issues, alert everyone in time: It is advisable that you keep a look out for early warning signals and warn the team up front rather than wait for things to correct themselves. Ninety percent of the time, the issue is not self-correcting but goes on to become a real pain to the entire team before additional effort is exerted to get it on track.

If someone in the offshore team is doing well, comment on it: Encouragement and motivation are required even when you have hired a team with an offshore service provider. Motivating team members with an encouraging email along with occasional gifts sent to them on regional festivals creates camaraderie as well as doing wonders for the project. At the end of the day remember that developers are human beings and they do need an occasional pat on the back.

Although a number of onsite project managers feel that project management tools are advantageous to the flow of a project, the core driver in a successful project will always be good project and human resource management skills.
For details read here.

Tuesday, June 27, 2006

The Benefits of Offshore Outsourcing

As more companies transfer programming and call- center jobs offshore, the topic of offshore outsourcing is raging throughout the information technology industry. I understand the frustration of workers whose jobs have moved and of customers who fail to get their technical-support questions answered. But the backlash may be overblown. One of the latest studies indicates that the trend may actually be creating more jobs. At least that's the conclusion of a recent study by Global Insight, sponsored by the Information Technology Association of America (ITAA).

Given our global economy, the globalization of the IT industry is inevitable. Most big IT companies do much of their business overseas and naturally want to have some of their employees in those markets. Lower wages in some countries are also a huge incentive to move operations, especially since high-speed communication removes many of the barriers to dealing with U.S.-based colleagues and customers.

I think that some of the criticism of offshore outsourcing is misplaced. According to the Global Insight study, from 1998 through 2003 offshore IT software and services spending increased from $2.5 billion to $10 billion; the figure could reach $31 billion by 2008. It also estimates that as of 2003 nearly 104,000 IT software and services jobs were displaced. The same study says that 372,000 IT jobs have been lost in this country since 2000, accounting for about 10 percent of the total number of such jobs in the U.S. The main reasons for the loss: the dot-com bust, the recession, and the growth in productivity.

For details read here

Monday, June 26, 2006

Offshore visits pay dividends

IT outsourcing is on the agenda of most large enterprises. Firms have to decide which IT functions to outsource and which to retain in-house, and they also have to decide whether to use a service provider in the UK or one based further afield.

Before signing any outsourcing deal, firms need to identify and manage security risks, said Kelly Kavanagh, senior analyst at research firm Gartner. He pointed out that offshore outsourcing requires even greater care in several areas, including the degree of control over customer data.

Kavanagh added that to deal with these issues, IT staff should be involved in the outsourcing process from the earliest stages. This means that they should be included in operations management, as well as the strategic planning phase.

Firms should audit prospective service providers to ensure policies and controls meet the required standards, said Kim Rajah, vice-president of European operations at outsourcing specialist Cognizant.

But companies will still keep certain key IT personnel, he added: "Firms will look for hybrid IT managers who know IT and the business, and project management skills will also be required in-house."

Businesses requiring a high level of security may be attracted by a new scheme called Outsource2NewZealand, designed to encourage UK firms to outsource high-level, business-critical systems to New Zealand. The scheme includes a coalition of 20 vendors, supported by the New Zealand government and managed by the IT Association of New Zealand (Itanz).

Outsource2NewZealand members said they were not interested in competing with mainstream outsourcing companies in India, China or Eastern Europe, but instead would offer top-end, niche solutions. "We are pitching our skills at a much higher level," , executive director of Itanz. He added that New Zealand should be a good choice for data privacy. "Our regulations and laws are [comparable] to those in the UK. New Zealand is a very safe destination for outsourcing."
For details read here

Friday, June 23, 2006

Software Test Automation and the Product Life Cycle

A product's stages of development are referred to as the product life cycle (PLC). There is considerable work involved in getting a product through its PLC. Software testing at many companies has matured as lessons have been learned about the most effective test methodologies. Still, there is a great difference of opinion about the implementation and effectiveness of automated software testing and how it relates to the PLC.
This is where the PLC comes in. How effectively you make use of the PLC will often be dependent on your programming resources and the length of the PLC. Companies large and small struggle with software testing and the PLC. Hopefully, this discussion of the PLC should help you determine when to use automation and when manual testing is preferred. This should help you answer the questions: "Why should I automate my software testing?" "How can I tell if automation is right for my product?" "When is the best time to develop my test software?".
The Product Life Cycle
As we discuss the use of automated and manual testing, we need to understand what happens in each phase of the product life cycle. The PLC is made up of six major stages, the Design Phase, the Code Complete Phase, the Alpha Phase, the Beta Phase, the Zero Defect Build Phase, and the Green Master Phase. You can think of the PLC as a timeline showing the development of a software product. These are the major milestones that make up the Product Life Cycle. Products that follow these guidelines for implementation of the PLC will have a much better chance of making it to market on time.
The implementation of the PLC varies widely from company to company. You can use this as a guide for future reference to assist you in your automation efforts. Your implementation will vary from the ideal PLC that is discussed here, but your software's success may depend on how well you've implemented its PLC. If your PLC is to include automated testing you should pay attention to which automated tasks are performed during each phase.
For each phase we'll describe it, define its special importance and discuss how to incorporate software automation into your project. Most other discussions of the PLC don't include the lessons learned about test automation. This should be your "one-stop" guide to help you know how and when automation fits into the PLC.
Design Phase
What is the Design Phase? The design phase begins with an idea. Product managers, QA, and Development get together at this point to determine what will be included in the product. Planning is the essence of the design phase. Begin with the end in mind and with a functional specification. Write down all of your plans. What will your product do? What customer problems does it solve?
Incorrectly, some companies don't include Quality Assurance (QA) in the design phase. It is very important that QA be involved as early as possible. While developers are writing code, QA will be writing tests. Even though QA won't really have the total picture of the product, they will want to get as much of a jump on things as possible. Remember, that the primary purpose of QA is to report status. It is important to understand the product's status even early in the Design Phase.
Automation Checklist
If you answer yes to any of these questions, then your test should be seriously considered for automation.
Can the test sequence of actions be defined?
Is it useful to repeat the sequence of actions many times? Examples of this would be Acceptance tests, Compatibility tests, Performance tests, and regression tests.
Is it necessary to repeat the sequence of actions many times?
Is it possible to automate the sequence of actions? This may determine that automation is not suitable for this sequence of actions.
Is it possible to "semi-automate" a test? Automating portions of a test can speed up test execution time.
Is the behavior of the software under test the same with automation as without? This is an important concern for performance testing.
Are you testing non-UI aspects of the program? Almost all non-UI functions can and should be automated tests.
Alpha Phase
What is the Alpha Phase? Alpha marks the point in time when Development and QA consider the product stable and completed. The Alpha Phase is your last chance to find and fix any remaining problems in the software. The software will go from basically functional to a finely tuned product during this phase.
Automation Activity During The Alpha Phase
At this point you have done the tasks that need to be done in order to reach Alpha. That is, you have all your compatibility, interoperability, and performance tests completed and automated as far as possible. During Alpha you'll be running breadth tests every build. Also you'll run the compatibility, interoperability, and performance tests at least once before reaching the next milestone (beta). After the breadth tests are run each build, you'll want to do ad hoc testing as much as possible. As above, every bug should be associated with a test case to reproduce the problem.
Beta Phase
What is the Beta Phase? The product is considered "mostly" bug free at this point. This means that all major bugs have been found. There should only be a few non essential bugs left to fix. These should be bugs that the user will find annoying or bugs that pose relatively no risk to fix. If any major bugs are found at this point, there will almost definitely be a slip in the shipping schedule.
Automation activity during the Beta Phase
There's no more time left to develop new tests. You'll run all of your acceptance tests as quickly as possible and spend the remaining time on ad hoc testing. You'll also run compatibility, performance, interoperability and installer tests once during the beta phase.
Zero Defect Build Phase
What is the Zero Defect Build Phase? This is a period of stability where no new serious defects are discovered. The product is very stable now and nearly ready to ship.
Automation Activity During The Zero Defect Build Phase
Run regression tests. Regression testing means running through your fixed defects again and verify that they are still fixed. Planning for regression testing early will save a lot of time during this phase and the Green Master phase.
Green Master
What is the Green Master Phase? Green Master is sometimes referred to as the Golden Master or the final candidate. The product goes through a final checkout before it is shipped (sent to manufacturing).
Automation activity during the Green Master Phase
After running general acceptance tests, run regression tests. You should run through your fixed defects once again to verify that they are still fixed. Planning for regression testing early will save a lot of time during this phase.

For details read here

Database Regression Testing

To safely change existing software, either to refactor it or to add new functionality, you need to be able to verify that you have not broken anything after you have made the change. In other words, you need to be able to run a full regression test on your system. If you discover that you have broken something, you must either fix it or roll back your changes. Within the development community, it has become increasingly common for programmers to develop a full unit test suite in parallel with their domain code, and in fact agilists prefer to write their test code before they write their "real" code. Just like you test your application source code, shouldn’t you also test your database? Important business logic is implemented within your database in the form of stored procedures, data validation rules, and referential integrity (RI) rules, business logic that clearly should be tested thoroughly.
Test-First Development (TFD), also known as Test-First Programming, is an evolutionary approach to development; you must first write a test that fails before you write new functional code. As depicted by the UML activity the steps of TFD are as follows:
1.Quickly add a test, basically just enough code so that your tests now fail.
2.Run your tests—often the complete test suite, although for the sake of speed you may decide to run only a subset—to ensure that the new test does in fact fail.
3.Update your functional code so that it passes the new test.
4.Run your tests again. If the tests fail, return to Step 3; otherwise, start over again.
A test-first approach to development.
The primary advantages of TFD are that it forces you to think through new functionality before you implement it (you’re effectively doing detailed design), it ensures that you have testing code available to validate your work, and it gives you the courage to know that you can evolve your system because you know that you can detect whether you have "broken" anything as the result of the change. Just like having a full regression test suite for your application source code enables code refactoring, having a full regression test suite for your database enables database refactoring (Meszaros 2006).
Test-Driven Development (TDD) (Astels 2003; Beck 2003) is the combination of TFD and refactoring. You first write your code taking a TFD approach; then after it is working, you ensure that your design remains of high quality by refactoring it as needed. As you refactor, you must rerun your regression tests to verify that you have not broken anything.
An important implication is that you will likely need several unit testing tools, at least one for your database and one for each programming language used in external programs. The XUnit family of tools (for example, JUnit for Java, VBUnit for Visual Basic, NUnit for .NET, and OUnit for Oracle) luckily are free and fairly consistent with one another.
For details read here.

Wednesday, June 21, 2006

Outsourcing IT Development

IT development outsourcing isn't much different than any other kind of outsourcing. When you face an insistent need to start a new IT development project, you have to weigh your current in-house capacity first. If your experience and budget allow you to cope with the task without resorting to any outside expertise, you should probably take full advantage of your potential and do it yourself. However, if there's danger that you'll bite off more than you can chew, it's about time to consider the advantages and disadvantages of outsourcing.

Basically, outsource service providers offer you higher quality services at a lower cost. This makes the advantages of IT development outsourcing obvious, so let's have a look at just a few of them.

Outsourcing IT development is a most effective way to stretch your budget. When managers plan IT development outsourcing, they usually make it their aim to cut down the company's expenditures by 30%. This is a figure that speaks for itself. Of course, there's always the risk of failure, but if you outsource prudently, you'll afford to implement projects of such a scale that would be impossible for you to reach on your own.

If you need to have state-of-the-art IT solutions worked out and innovations implemented with small losses, outsourcing may be the only way out. It will save you from the nightmare of retraining your employees (or even hiring new ones) and/or paying for re-equipment.

Cutting your costs and upgrading the quality of the services you offer will allow you to expand the competitive capacity of your business. I suppose the state the IT market is in today makes this simple argument a crucial one.

When you outsource IT development to an outside company, you can concentrate on your core activities. You won't be able to completely forget all about the project or its part that you have chosen to outsource as soon as you sign a contract with an outsource service provider, but you won't have to get scattered, either.

If you deal with an experienced and highly qualified vendor, you'll be able to gain valuable expertise in support of your IT capacity. Almost any vendor will surely try to set a dependency trap for you, but it doesn't mean you have to acquire the dependency pattern instead of learning everything you can derive from the vendor's expertise.
For details read here

Tuesday, June 20, 2006

7 Strategies for Partnering With Outsourcers

Contact center outsourcing at first glance does not set the stage for delivering a seamless customer service experience. At its base, the relationship often forces companies to weaken, not strengthen, direct interactions with their customers. But bringing an outsourcing vendor into your service blueprint doesn't have to mean the business's slip will show. Instead, the vendor should represent an extension of the company, rather than a separate entity. Fashioning that seamlessness, however, can be tricky. Following are seven process-focused strategies to help ensure that the outsourcing partner is an extension of your business.
Give the Outsourcer a Crash Course
Reps are only as good as the knowledge they have about the product or service they're supporting. You could have terrific technology infrastructure to link the two organizations, but if you haven't taken care of training, then you could have great infrastructure and a poor result from the outsourcing relationship. The responsibility for training the agents on contact center skills falls on the shoulders of the outsourcing provider. But you know your organization best: Product, culture, and overall company training should lie with the customer organization. And remember to provide the outsourcer any information (i.e., clothing, videos, product) to help agents represent your brand.
Keep Communication Lines Open
As with any business partnership unexpected challenges and changes may arise. To stay on track, frequent communication and periodic site visits from day one will keep the organization up to date on the health of the initiative.
Understand Needs and Expectations
One important tenet of providing a seamless service experience is to establish what your current service levels are, what you'd like them to be, and relay these expectations to the outsourcing partner. We really work with clients to identify what we do at the point of execution. If each side understands the other's needs and expectations, companies will minimize misunderstandings and create a more trusting and successful relationship. Along with goal alignment, select an outsourcing partner whose corporate culture and work ethic align with yours.
Break Out the Measuring Tape
Although the decision has been made to farm out a customer service function, this process still involves your customers. Maintain a balanced scorecard to measure the outsourcing provider against contractual KPIs that you deem important.
Assign Equal Authority
Most customers would agree that the worst service experience is one that ends without a resolution. Lack of partner empowerment is often the cause here. Say a customer calls her credit card provider's service department to report a mistake on her balance or dispute a late fee. In some cases, outsourced agents have the authority to waive a late fee associated with the account.
Trust Thy Partner
Trust: It's an essential component of building a successful connection. Companies should trust their outsourcing partner with access to critical timely and accurate data. A lack of timely and accurate data can translate into a customer service nightmare. But if certain elements haven't been communicated, such as when information is updated, there may not be any more of that item. So, establish the communication of data back and forth between the client and the outsourcer.
Capture Customer Feedback
Agents' interactions with customers can equate to tons of valuable information. But if that information isn't filtered back to the organization itself, much of its value goes untapped. As we move forward out of the postrecession mindset, it's going to be crucial for investors and outsourcers to really focus on that seamless experience. They must "try to ensure that the outsourced portion is really part of the value proposition because if it's not, if it's just a front end to handle calls, nobody's going to win."

For details read here

Monday, June 19, 2006

Offshore outsourcing

Offshore outsourcing is the practice of hiring an external organization to perform some or all business functions in a country other than the one where the product or service will be sold or consumed. It can be contrasted with offshoring, in which the functions are performed in a foreign country, whether by the foreign subsidiary of the same company or a third-party. Opponents point out that this sends work overseas, thereby reducing domestic employment and domestic investment. Many jobs in the infotech sectors - such as data entry, computer programming, and customer support - have been or are potentially affected.
The general criteria for a job to be offshore-able are:
• The job does not require direct customer interaction;
• The job can be telework;
• The work has a high information content;
• The work can be transmitted over the internet;
• The work is easy to set up;
• There is a high wage difference between the original and offshore countries;
• The work is repeatable.
The driving factor behind this development has been the need to cut costs during the recession that began before the events of September 11, 2001 and deepened since then, while the enabling factor has been the global electronic network that allows digital data to be accessed and shipped instantly, from and to anywhere in the world.
Some of the major countries that provide such services are India (Programming and IT), Russia (Programming and R&D), Bulgaria (Programming and R&D), Ukraine (Programming and Design), Romania (Programming and IT), the Philippines (Data Entry and Customer Support), China (Programming), Brazil (solution providers) and many others.
The advent of the Internet has enabled individuals and small businesses to contract freelancers from all over the world to get projects done at a minimum cost. This trend runs in parallel with the tendency towards big corporations' outsourcing, and may in the future serve to strengthen small business' capacity to compete with their bigger competitors capable of setting up offshore locations or of arriving at major contracts with offshore companies. See Freelancing on the Internet.
There are different views on the impact on society, which reflects the attitude of Protectionism versus Free Trade. Some see it as a potential threat to the domestic job market and ask for government protective measures, while others (and not just corporations) see it as an opportunity.

For details read here