Archive for June, 2008

Order Management System

Monday, June 30th, 2008

An Order Management System (OMS) is a software used by many industries to enter and manage the order processing. The OMS normally would be an integrated system supporting the order entry, order management and order delivery.  Preferably this should be a centralized system with on-line updates, so that customers, sales representative, delivery agents are all accessing and updating a single system and up-to-date information is available to all
The orders could come from multiple sources, viz. customer call, fax, e-mail, EDI,  mobile device (salesmen carrying a mobile device),  internet etc.
Order Management would involve : Order search, customer search,  order modification, approval, cancellation, order copy, product search, product substitutes etc.
There could be multiple delivery mechanism viz. Door to Sales, 3PL,  External Carrier,  Customer Pick-up etc.

Another common use of order management software is by eCommerce and Catalog companies. This software facilitates entering of an order, whether via a web-site shopping cart or a data entry system (for orders received via phone and mail). It typically captures Customer Proprietary Information and Account Level information. Credit Verification or Payment processing is done to check for validity and/or availability of funds. Once entered, valid orders are processed for warehouse fulfillment, such  as picking / packing / shipping.
Typical Features of an Order Management System
1. Marketing Information (Catalogs, promotions, pricing)
2. Prospects
3. Vendors (Purchasing and Receiving)
4. Customer Information & Search (Names, addresses, order history, preferences, product catalog, pricing, taxing, credits, promotions, customer bill-to, ship-to, alternate ship-to, support for customer hierarchy etc.)
5. Product Information & Search ( description, attributes detail, inventory information (local warehouse /  remote warehouse locations, quantities, product substitutions, complimentary items, product kits/ groupings)
6. Pricing (rules based: list, cost-up, list-down, specific and general contract, discount, promotion, best price comparison and item/group column/volume)
7. Taxing (Order level or line level jurisdictional sales tax)
8. Billing Terms
9. Credit limit management
10. Order Entry (Sales Order, Quotes, Credit Memos, Special Orders, through EDI)
11. Customer Order History
12. Customer Order Rules and Preferences
13. Order Processing (Selection, Printing, Picking, Packing)
14. Order Delivery ( Multiple shipping methods : external carrier,  customer pick up, 3PL etc.)
15.  Customer Service (Returns & Refunds)
16. Ability to mass update, duplicate orders etc.
17. Data Analysis and Reporting
18. Integration with other required systems like Finance Systems for GL / AP / AR, Warehouse systems for inventory, Logistics Systems for Delivery, Sales Force Automation systems etc.
19. Integration with mobile devices / internet
Typical  Non-Functional Features of an Order Management System
1. User friendly interfaces
2. Adequate security features
3. Adequate Help and documentation

.Net Framework

Friday, June 27th, 2008

The .NET framework (DotNet)is a new Microsoft initiative directed to the modification of computer world. More specifically, it is a large set of development tools, servers, software, and services. Its main advantages for the user are creation of an integrated information space connecting him or her with computers and programs, as well as connection software applications together. For developers, the value of DotNet lies in interoperability and the seamless connectivity of multiple systems and sources of data. This empowers them to quickly and easily create required products.
The IT department manager of every company has a dream — an enterprise that performs all business transactions with partners exceptionally over the Internet, with no headaches about the business processes. For this to happen, the processes must be well designed, stable, and easily customized and controlled both from the local network and from any computer in the Internet. All company’s employees should have general access to work information, Email and personal documents no matter if they use mobile phone, Pocket PC, Notebook or high-end workstation.
Nowadays, in an age of rapid development of E-commerce, the existing tools for creating digital marketplaces do not always handle the business needs. By developing the new means for this field a major breakthrough belongs to XML Web services. For a long period of time these were used by program engineering services provided by external software. When it became clear that it is easier to once create a universal information storage facility and to integrate it into different programs than invent each time a new one, there appeared first Database Management Systems. Next step was the creation of messaging and collaboration systems, e.g. Lotus Notes and Exchange, which simultaneously served as development platforms. Then came into use, the products providing messages delivery (Message Oriented Middleware), such as IBM MQSeries and MSMQ. They allowed to organize message exchange in distributed system with manifold (and often unreliable) communication links. Their difference from mail servers lay in the fact that they were oriented on information exchange not between people but various parts of program systems. Finally, one of the last tendencies became Application Servers and Enterprise Application Integration Servers. First ones allow to create scalable solutions of simple software components giving them a ready means of supporting distributed transactions, controlling access to total resources (particularly, connection with database) etc. Enterprise Application Integration Server acts as a glue, being the intermediate among existing program systems and helping them to process data and exchange references. Web services enhance and extend the value of these existing technologies. They allow an object’s methods to be called over the Internet via HTTP. As a result, programs written in any language, and running on any operating system, can access .NET applications implemented as web services. By introducing a common, well-known standards of interaction between software, Web service technology allows for the creation of  inter-corporate information systems without protracted coordination of proprietary interfaces. In addition, the use of HTTP as the transport mechanism allows  remote calls to these services to pass through corporate firewalls without compromising security. Web services existed before .NET was introduced, but the .NET framework makes creation of web services far easier than they otherwise would be.
Breaking down the distinctions between the Internet, standalone applications, and computing devices of every kind, Web services provide businesses with the opportunity to collaborate and to offer an unprecedented range of integrated and customized solutions - solutions that enable their customers to act on information any time, any place and on any device.
DotNet technology offers other far-reaching benefits for IT professionals. It enables programmers to develop powerful information systems using all capabilities of modern computers and networks without implementing helper functions implementation — almost all of these functions are subsumed into the platform). It allows to concentrate only on the business logic of the product. Thus developers will be able to quickly create high-quality (and easy!) programs with a multitude of Internet integrated capabilities while reducing costs.
Built on XML Web service standards Microsoft .NET-connected software enables both new and existing applications to connect with software and services across platforms, applications, and programming languages. DotNet is already shifting the focus from individual Web sites or devices connected to the Internet to constellations of computers, devices, and services that work together to deliver more comprehensive programs.

IT INDUSTRY IN AHMEDABAD, GUJARAT, INDIA

Friday, June 27th, 2008

Located on the banks of river Sabarmati, Ahmedabad is the largest city in the whole state of Gujarat. From the year 1960 to 1970, it served as the capital city of Gujarat. However, later on, the capital was shifted to the Gandhinagar city. It was founded in the year 1411 by Sultan Ahmed Shah. It is owing to this reason that, sometimes, it is also referred to as the city of Ahmed Shah and hence the name Ahmedabad. Ahmedabad was incorporated into the Bombay Presidency during the British rule but remained the most important city in the Gujarat region. Over a period of time, Ahmedabad established itself as the home of textile industry and earned the nickname of “The Manchester of the East.”
 
Ahmedabad is the hub of trade and commerce in Gujarat. The commercial importance of Ahmedabad makes the city an important travel destination in India, besides being home to a number of important industries. Ahmedabad also has a number of majestic monuments, world class institutes of learning to name a few- IIM, PRL, ISRO, NID, and many more that remind us of the great historical and cultural past of the city.

A rising centre of higher education, information technology and scientific industries, Ahmedabad continues to remain one of the important cultural and commercial centers of western India. With one of the best power supply in the country and the cheapest real estate Ahmedabad is the bus to ride for setting up of any IT related industry. Well connected nationally and internationally Ahmedabad poses to be the next generation mega city of India.

During the last quarter of this century Information Technology (IT) has transformed the way of human life as no other technology has. IT has potential of converting our society into a truly knowledge based society. IT also gives us a chance in ensuring that such an evolution leads to an equitable society. Now, there is no area of human life, which is not affected by information technology in one way or the other. To ensure that people of the State of Gujarat reap the benefits of this epoch making development, it is imperative that the State Government evolves a coordinated strategy which could affect all the facets of life of citizens of the State.

It is very clearly understood that IT is not an end in itself but means to provide better quality of life to the citizens of the State. It does not aim at merely automating existing process but the target is to use IT to improve overall organizational efficiency and pass the benefits to the citizens of the State. The GoG has initiated several measures to boost IT in Gujarat which has been stated below:

Overall Growth of IT Sector in Gujarat
* Creating enormous employment opportunities by training and developing skilled manpower
* Facilitating information outlets at the doorstep of a common man
* Making government - citizen interface more effective, efficient and transparent
* For imparting education, Gujarat Institute of Information Technology being set up at Gandhinagar
* Setting high-tech Infocity with facilities of satellite earth station in Gandhinagar with hubs at Ahmedabad and Baroda 

Over all IT growth in the state of Gujarat
To create enormous new employment opportunities in the state; train and develop skilled manpower in IT; facilitate information outlets at the doorstep of the common man the Government has set up IT Department for implementation of IT Policy.

* Information strategy development
* IT architecture design including network and communication
* Program and project management
* Contract support system
* Internet/intranet services
* Computer and communication security
* Systems audit
* Disaster recovery
* Outsourcing including actual running of system
* Training
* Testing

Private sector participation
As information technology is likely to emerge as a major infrastructure for the State, participation of private sector is extremely important, both from the point view of attracting additional resources and introducing sufficient competition so that the focus on customer is not missed out in any case. Private sector would participate in (1) creation of ‘information corridor’ (2) in setting up of information kiosks (3) provision of services for creating of database oriented services.

Gujarat government has initiated several steps to enable private participation under state IT policy, to set up of high-tech cities, IT training and educational institutions which, in turn, will create enormous job opportunities and economic development of the state. IT thrust in the public service would essentially assume existence of a very strong IT industry in the State. It is the endeavor of the Government to help create new job opportunities for the youth of the State in this sunrise industry. It would only be possible when there is extensive use of computer for the public services, in businesses and in homes. Location of strong IT industry in the State would also give a fillip to export of IT related services and products.  GOG has introduced multiple Fiscal Incentives for IT products, services and software products where the state would give a special concessional sales tax treatment. To boost investment a State venture capital for development of IT services, IT software and IT products has also been set up. As State Government wishes that the IT industry takes lead in the area of IT products i.e. hardware as well, therefore, it is important that these products are globally competitive. In order to achieve this, dedicated air cargo terminal would be essential for swift movement of goods both for export and import.

Outsourcing of Information Technology Projects to Ahmedabad, India

Indian software services firms have been thriving on a worldwide outsourcing boom as international companies try to cut costs at home.

A large pool of English-speaking engineers and low wages have helped them attract outsourcing deals over the past decade in India, which churns out about 350,000 graduate engineers and 2.3 million other graduates every year.

But wage inflation and high attrition rates are a concern for services firms in India, where specialists demand for programmers and IT is fast outstripping supply.

Amidst ongoing apprehension on security and data safeguard that have surfaced in the business procedure outsourcing space, Bangalore, Hyderabad, Mumbai and Ahmedabad have emerged as “no-risk” locations in some surveys. These are also better in terms of the cost needed to alleviate risks. In simple terms, a company sets a better chance to take the edge off risk in a cost-effective manner if it is located in these cities.

The globe is discovering the fact that India is a super power when it comes to developing IT solutions. Swept by the current and the latest trend of outsourcing to India, we find that with a large no of CMM Level 5 companies and outsourcing centers of fortune 500 companies like Microsoft, Oracle, Morgan Stanley, Wal-Mart, AT&T, General Motors, Sony, Swissair, United Airlines, Philips, IBM, Lucas India, PepsiCo, Schneider Electric is a logical choice for outsourcing with the world’s largest pool of scientific and technical talent.

India is now a reputable IT Outsourcing Destination. The country, which has received the distinction of being the world’s most preferred software-outsourcing destination, sketches its strengths from the following:

• Established Offshore outsourcing Model
• Reliable and most advanced source of software expertise
• More than 5 million technical workers
• Software Industry worth $9 Billion
• Second Largest English speaking Community
• Supportive Government Policy for IT and Communication Industry

Reasons for outsourcing to Ahmedabad, India:

* Caliber Of The Computer Engineers

The main reason behind the glittering success of Indian IT market in the world is the unyielding and continuous force of computer engineers from highly professional universities and colleges.

* Hard Working, Intelligent Human Resource

With the second largest population, India has easy availability of highly qualified and technically skilled English speaking computer professionals who play a key part in the field of Information technology

* Convincing Cost Efficiency Of IT Outsourcing In India

Extensive gap between the personal cost in India and developed countries, India offers convincing economical benefits to the persons who want to exploit the advantage of offshore outsourcing.

* Guaranteed International Quality

With large number of the world’s CMM/ ISO Level having one of the world’s largest and best pools of scientific and technical talent, India can offer standard international quality.

* Stable Government Support And Easy Legal Proceeding

Indian government keeps stable policies, economy, taxation, telecom, industrial development for Information Technologies. The government provides evidence to be a grand support for software firms by further presenting all the basic facilities necessary for an outsourcing company to prosper Information Technology.

* Effective Telecommunication, Power & Real Estate Infrastructure

One of the cheapest real estate globally with continuous feed of electricity, excellent telecom network facility, ISP, and cellular networks are available all over the country. India delights in the steadfast satellite and submarine communication links that facilitate good band connectivity with the rest of the world. Thus companies engaged in IT outsourcing to India, can be in continuous touch with the vendors without any connection impediments.
 

Moving from Visual Basic 6.0 to .NET

Friday, June 27th, 2008

1 INTRODUCTION
Many organizations have already adopted, or are currently considering adopting, the .NET Framework as their platform of choice for strategic software development. However, in the real world, new versions of languages and new platforms present significant challenges to those adopting these newer technologies both for new development and for migration of existing applications. This White Paper examines some of the issues associated with migrating applications from Microsoft Visual Basic 6.0 (VB6.0) to Microsoft .NET languages. It examines the options for migration and offers some guidelines on best practices that can help organizations to successfully migrate their applications to the .NET world.
2 AN OVERVIEW OF .NET

The .NET Framework is an integral Windows component for building and running the next generation of software applications and Web services. The .NET Framework:
• Supports over 20 different programming languages – with 4 core languages supplied by Microsoft namely C#.NET, VB.NET, C++ .NET and J#.NET.
• Manages much of the plumbing involved in developing software, enabling developers to focus on the code associated with the core business logic.
• Makes it easier to build, deploy, and administer secure, robust, and high-performing applications.

The .NET Framework is composed of the Common Language Runtime (CLR) and a unified set of class libraries. Developers can use the .NET language of their choice for code creation and debugging. When compiled with a language specific compiler in the .NET Framework, the language-specific code gets translated into language-neutral and CPU-independent Microsoft Intermediate Language (MSIL).
Before this code can be run, it must be converted by the .NET CLR to CPU-specific code; which is usually done by a just-in-time (JIT) compiler converting MSIL to native code only when actually required.

3 THE BUSINESS CASE FOR MIGRATION
• Increased Productivity and Reduced Maintenance Costs
• Increased supportability
• Web enablement
• Take advantage of the additional features of .NET (Stability, Better organization, Better inline documentation, new features, Security, Deployment etc.)
• Adopt full Object-Orientation (OO)
4 Type of Migration – Porting and Re-factoring
Once an organization has taken the decision to move its legacy code to the .NET Framework, it must decide on its approach to the process. Although individual cases will vary and in most cases a blended approach will be inevitable, the two broad approaches that can be taken are porting and re-factoring.

5 PORTING TO THE .NET FRAMEWORK
5.1 Preparation
Preparatory work for porting concentrates on assessing the suitability of the code base for porting and on identifying problem areas where 1-for-1 code conversion will not be possible. These situations will require intervention with some redesign and code rework and examining the code base from this perspective allows an assessment the level of the rework likely and may suggest that the re-factoring approach would ultimately require less effort than the port.
In the process of assessing the code base there may be an opportunity to prepare it for processing by the VB Upgrade Wizard. Very often large existing VB projects have macro utilities to manage the creation and insertion of standard code constructs such as error-handling and logging. It may be possible to leverage these in order to remove or alter code before it is upgraded to reduce the time it takes to process the code and reduce the size of the issue report it produces.
5.2 The VB Upgrade Wizard
Microsoft Visual Studio .NET offers a VB upgrade wizard to assist in the migration of earlier VB code to VB.NET. This tool attempts to convert code from VB to VB.NET, provides an upgrade report listing any problems encountered and annotates the converted code with comments on conversion issues and recommendations. It also inserts To Do items into the Visual Studio Task List indicating where additional changes need to be made.
5.3 Porting Manually
In the cases where developers responsible for porting code do not want to use the VB Upgrade Wizard, the only alternative is to port the code manually. Code must be examined line-by-line and converted to a .NET equivalent implementation where possible and any unavoidable workarounds hand-coded to suit the particular circumstances and requirements of the code being converted. Whereas the VB Upgrade Wizard might make calls to VB compatibility DLLs as a result of code ambiguities that it has problems interpreting or take the ‘path of least resistance’ in converting, the porting developer may be able to make better choices in these circumstances eliminating or at least reducing the need to retain a reliance on “old VB”.
5.4 Pros
• VB Upgrade Wizard provides a quick and largely automated route to porting code leaving the developer to fix the aspects that cannot be ported automatically using the guidance provided by the report produced as part of the upgrade process.
• The leg-work of repetitive code conversion can safely be left to the tested functionality of the wizard whilst the coder can concentrate on the ‘tricky’ bits.
• In theory assessing code for line-by-line porting has less dependence on a need for a strongly documented design of the existing system – as the structure will not change there is less emphasis on understanding of the design than on understanding of VB and COM fundamentals such as finalization and data access.
• In principle the code produced will require less testing and review because of its closeness to the original code base and the fact that much of the ported code continues to use VB compatibility DLLs means that the emphasis is on safety and workability.
5.5 Cons
• The VB Upgrade Wizard necessarily takes the path that is safest and the one of least resistance which is unlikely to be the most efficient or logical. The resulting code base produced by the wizard is almost always a hybrid of .NET code and calls to VB compatibility libraries, making the move to .NET a nominal one to a large extent.
• Whether arrived at via the Upgrade Wizard or through manual porting, the introduction of a dependency on COM interoperability and older VB libraries may hamper future efforts to move the code base further into the .NET world. Additionally the reliance of older VB6.0 libraries introduces a risk for code support relying as it does on their continued support by Microsoft.
• Many of the business case drivers identified in our examination of the case for migration are not addressed by porting code: its essential internal structure and architecture remain the same meaning that its supportability, maintainability and overall code quality are not improved; and mechanically converting code by porting does not offer the opportunity to take advantage of .NET’s new features.

6 RE-FACTORING WITH THE .NET FRAMEWORK
6.1 Preparation
Re-factoring an application involves a much greater understanding of its design and implementation. In preparing for a re-factoring migration it is important to make sure that the system is well documented with an up-to-date specification and set of design documentation.
One of the goals in redesigning a VB6.0 solution and re-implementing it in the .NET Framework is to realize the benefits of Object-Orientation such as code reuse and more efficient structure. In order to do this the system must be comprehensively understood and redesigned using Object-Orientation principles. This analysis and design preparation obviously represents a greater short term cost and effort than that associated with porting but carries the potential of realizing much greater long term benefits. In addition to a good understanding of the existing system, re-factoring requires expertise in Object- Orientation design and best practice.
Where the scope of the work includes the introduction of new functionality or a fundamental design change a targeted re-design from the bottom up is likely be the most appropriate approach. However, as with any project, if new functionality is being introduced it obviously needs to be managed carefully with a clear statement of requirements and definition of the required additional functionality.
6.2 Pros
• Re-factoring is a chance to make a break from the older world of VB and realize the benefits of re-designing and implementing systems to take advantage of Object-Orientation and newer technologies such as the internet and XML.
• The goals of better supportability and maintainability through better design and code-quality can be achieved without the constraints and potential future liabilities of retaining dependence on interoperability and legacy VB DLLs.
• Re-factoring also represents a chance to take a pattern-based approach to re-design and implementation that wouldn’t be possible with porting – common solutions to common design scenarios can be approached in terms of existing documented patterns and implemented in reusable modules that can be applied across the system for common needs such as data-access, message management, error & activity logging and so on. This offers benefits in terms of speed of design, reusability, supportability and testing.
6.3 Cons
• The goal of escaping the world of COM and older VB may not be fully realizable if the re-factored systems still have to rely on services not currently available through .NET such as distributed transaction support or where the systems must make use of third-party integration components that are COM based – many of Microsoft’s own products are yet to be .NET-enabled and still rely on COM interfaces for integration and automation – Microsoft Office for example.
• With an effective re-design of a system there will be the temptation to take advantage of the situation to introduce new functionality. Many organizations will build wish-lists of future requirement requests between application releases and the option to roll these features into a re-factoring migration may be appealing. Whilst there may be very good sense in taking advantage of this opportunity and some very easy “wins” to be gained at very little extra expense and effort, there is a danger that without proper control the situation could turn into a free-for-all with everything being “up-for-grabs”.
• Re-factoring systems may give rise to problems with interactions, dependencies and interfaces to other systems that are not being migrated at all or are being ported rather than re-factored. There is a potential “domino-effect” of changes in re-factored systems’ interfaces or behaviors forcing change on systems outside the boundaries of the re-factoring efforts. In these cases the external systems may prove to be immutable forcing compromise or further work on the re-factored systems to accommodate the constraints that the external systems represent. At the very least problems may be encountered in defining and maintaining system-boundaries in order that the scope of the re-factoring does not creep into other systems and impose extra re-work and consequent cost upon them.
 
7 REAL WORLD MIGRATION
7.1 Migration Paths
In the real world an actual migration activity for a system is likely to involve a combination of the porting and re-factoring approaches. The following section describes the paths available through migrating an application and the options for applying porting and re-factoring techniques at the various stages in the process.

In the  Visual Basic migration path there are three possible exit points from the process:
1. The migration activity ends after the most basic of porting activities using the VB Upgrade Wizard after any (optional) preparatory parsing of the code base for efficient processing by the wizard. It is the fastest and least demanding of approaches but carries many of the risks described above.
2. Here a fuller port is carried out beginning the process above followed by a second stage of converting all library calls to use the .NET Framework instead of using the backward compatibility libraries; this represents a significant amount of work and needs to be done manually by skilled .NET developers. The advantage here is that the target language is VB.NET where the keywords are familiar.
3. Here a further stage is added after the two above, to convert the syntax to C#.NET. This allows the organization to adopt C# as its language of choice if it desires and does not add significant overhead since the majority of the migration effort will occur at stage 2 above, in changing the library calls into the .NET Framework.

8 CONCLUSIONS
It is clear that the move from VB to .NET is not a simple matter of running a one-off conversion tool (if it were the process would not be a matter of discussion). Many factors affect the approach, a great many of which are not technical.

It is not possible to say in general whether opting for porting or for re-factoring is most appropriate without assessing individual migration projects in the light of the strengths and weaknesses of each approach. In most cases the combined business/technical factors will force a blend of approaches to be adopted.

9 Further Reading:
• Walkthrough: Upgrading a Visual Basic 6.0 Application to Visual Basic .NET (http://msdn2.microsoft.com/en-us/library/zbyth951(VS.71).aspx)
• Introduction to Visual Basic .NET for Visual Basic Veterans (http://msdn2.microsoft.com/en-us/library/kehz1dz1(VS.71).aspx)

Moving from Visual Basic 6.0 to .NET

Wednesday, June 25th, 2008

1 INTRODUCTION
Many organizations have already adopted, or are currently considering adopting, the .NET Framework as their platform of choice for strategic software development. However, in the real world, new versions of languages and new platforms present significant challenges to those adopting these newer technologies both for new development and for migration of existing applications. This White Paper examines some of the issues associated with migrating applications from Microsoft Visual Basic 6.0 (VB6.0) to Microsoft .NET languages. It examines the options for migration and offers some guidelines on best practices that can help organizations to successfully migrate their applications to the .NET world.
2 AN OVERVIEW OF .NET
The .NET Framework is an integral Windows component for building and running the next generation of software applications and Web services. The .NET Framework:
• Supports over 20 different programming languages – with 4 core languages supplied by Microsoft namely C#.NET, VB.NET, C++ .NET and J#.NET.
• Manages much of the plumbing involved in developing software, enabling developers to focus on the code associated with the core business logic.
• Makes it easier to build, deploy, and administer secure, robust, and high-performing applications.

The .NET Framework is composed of the Common Language Runtime (CLR) and a unified set of class libraries. Developers can use the .NET language of their choice for code creation and debugging. When compiled with a language specific compiler in the .NET Framework, the language-specific code gets translated into language-neutral and CPU-independent Microsoft Intermediate Language (MSIL).
Before this code can be run, it must be converted by the .NET CLR to CPU-specific code; which is usually done by a just-in-time (JIT) compiler converting MSIL to native code only when actually required.
3 THE BUSINESS CASE FOR MIGRATION
• Increased Productivity and Reduced Maintenance Costs
• Increased supportability
• Web enablement
• Take advantage of the additional features of .NET (Stability, Better organization, Better inline documentation, new features, Security, Deployment etc.)
• Adopt full Object-Orientation (OO)
4 Type of Migration – Porting and Re-factoring
Once an organization has taken the decision to move its legacy code to the .NET Framework, it must decide on its approach to the process. Although individual cases will vary and in most cases a blended approach will be inevitable, the two broad approaches that can be taken are porting and re-factoring.
5 PORTING TO THE .NET FRAMEWORK
5.1 Preparation
Preparatory work for porting concentrates on assessing the suitability of the code base for porting and on identifying problem areas where 1-for-1 code conversion will not be possible. These situations will require intervention with some redesign and code rework and examining the code base from this perspective allows an assessment the level of the rework likely and may suggest that the re-factoring approach would ultimately require less effort than the port.
In the process of assessing the code base there may be an opportunity to prepare it for processing by the VB Upgrade Wizard. Very often large existing VB projects have macro utilities to manage the creation and insertion of standard code constructs such as error-handling and logging. It may be possible to leverage these in order to remove or alter code before it is upgraded to reduce the time it takes to process the code and reduce the size of the issue report it produces.
5.2 The VB Upgrade Wizard
Microsoft Visual Studio .NET offers a VB upgrade wizard to assist in the migration of earlier VB code to VB.NET. This tool attempts to convert code from VB to VB.NET, provides an upgrade report listing any problems encountered and annotates the converted code with comments on conversion issues and recommendations. It also inserts To Do items into the Visual Studio Task List indicating where additional changes need to be made.
5.3 Porting Manually
In the cases where developers responsible for porting code do not want to use the VB Upgrade Wizard, the only alternative is to port the code manually. Code must be examined line-by-line and converted to a .NET equivalent implementation where possible and any unavoidable workarounds hand-coded to suit the particular circumstances and requirements of the code being converted. Whereas the VB Upgrade Wizard might make calls to VB compatibility DLLs as a result of code ambiguities that it has problems interpreting or take the ‘path of least resistance’ in converting, the porting developer may be able to make better choices in these circumstances eliminating or at least reducing the need to retain a reliance on “old VB”.
5.4 Pros
• VB Upgrade Wizard provides a quick and largely automated route to porting code leaving the developer to fix the aspects that cannot be ported automatically using the guidance provided by the report produced as part of the upgrade process.
• The leg-work of repetitive code conversion can safely be left to the tested functionality of the wizard whilst the coder can concentrate on the ‘tricky’ bits.
• In theory assessing code for line-by-line porting has less dependence on a need for a strongly documented design of the existing system – as the structure will not change there is less emphasis on understanding of the design than on understanding of VB and COM fundamentals such as finalization and data access.
• In principle the code produced will require less testing and review because of its closeness to the original code base and the fact that much of the ported code continues to use VB compatibility DLLs means that the emphasis is on safety and workability.
5.5 Cons
• The VB Upgrade Wizard necessarily takes the path that is safest and the one of least resistance which is unlikely to be the most efficient or logical. The resulting code base produced by the wizard is almost always a hybrid of .NET code and calls to VB compatibility libraries, making the move to .NET a nominal one to a large extent.
• Whether arrived at via the Upgrade Wizard or through manual porting, the introduction of a dependency on COM interoperability and older VB libraries may hamper future efforts to move the code base further into the .NET world. Additionally the reliance of older VB6.0 libraries introduces a risk for code support relying as it does on their continued support by Microsoft.
• Many of the business case drivers identified in our examination of the case for migration are not addressed by porting code: its essential internal structure and architecture remain the same meaning that its supportability, maintainability and overall code quality are not improved; and mechanically converting code by porting does not offer the opportunity to take advantage of .NET’s new features.
6 RE-FACTORING WITH THE .NET FRAMEWORK
6.1 Preparation
Re-factoring an application involves a much greater understanding of its design and implementation. In preparing for a re-factoring migration it is important to make sure that the system is well documented with an up-to-date specification and set of design documentation.
One of the goals in redesigning a VB6.0 solution and re-implementing it in the .NET Framework is to realize the benefits of Object-Orientation such as code reuse and more efficient structure. In order to do this the system must be comprehensively understood and redesigned using Object-Orientation principles. This analysis and design preparation obviously represents a greater short term cost and effort than that associated with porting but carries the potential of realizing much greater long term benefits. In addition to a good understanding of the existing system, re-factoring requires expertise in Object- Orientation design and best practice.
Where the scope of the work includes the introduction of new functionality or a fundamental design change a targeted re-design from the bottom up is likely be the most appropriate approach. However, as with any project, if new functionality is being introduced it obviously needs to be managed carefully with a clear statement of requirements and definition of the required additional functionality.
6.2 Pros
• Re-factoring is a chance to make a break from the older world of VB and realize the benefits of re-designing and implementing systems to take advantage of Object-Orientation and newer technologies such as the internet and XML.
• The goals of better supportability and maintainability through better design and code-quality can be achieved without the constraints and potential future liabilities of retaining dependence on interoperability and legacy VB DLLs.
• Re-factoring also represents a chance to take a pattern-based approach to re-design and implementation that wouldn’t be possible with porting – common solutions to common design scenarios can be approached in terms of existing documented patterns and implemented in reusable modules that can be applied across the system for common needs such as data-access, message management, error & activity logging and so on. This offers benefits in terms of speed of design, reusability, supportability and testing.
6.3 Cons
• The goal of escaping the world of COM and older VB may not be fully realizable if the re-factored systems still have to rely on services not currently available through .NET such as distributed transaction support or where the systems must make use of third-party integration components that are COM based – many of Microsoft’s own products are yet to be .NET-enabled and still rely on COM interfaces for integration and automation – Microsoft Office for example.
• With an effective re-design of a system there will be the temptation to take advantage of the situation to introduce new functionality. Many organizations will build wish-lists of future requirement requests between application releases and the option to roll these features into a re-factoring migration may be appealing. Whilst there may be very good sense in taking advantage of this opportunity and some very easy “wins” to be gained at very little extra expense and effort, there is a danger that without proper control the situation could turn into a free-for-all with everything being “up-for-grabs”.
• Re-factoring systems may give rise to problems with interactions, dependencies and interfaces to other systems that are not being migrated at all or are being ported rather than re-factored. There is a potential “domino-effect” of changes in re-factored systems’ interfaces or behaviors forcing change on systems outside the boundaries of the re-factoring efforts. In these cases the external systems may prove to be immutable forcing compromise or further work on the re-factored systems to accommodate the constraints that the external systems represent. At the very least problems may be encountered in defining and maintaining system-boundaries in order that the scope of the re-factoring does not creep into other systems and impose extra re-work and consequent cost upon them.
 
7 REAL WORLD MIGRATION
7.1 Migration Paths
In the real world an actual migration activity for a system is likely to involve a combination of the porting and re-factoring approaches. The following section describes the paths available through migrating an application and the options for applying porting and re-factoring techniques at the various stages in the process.

 In the diagram above of a Visual Basic migration path there are three possible exit points from the process:
1. The migration activity ends after the most basic of porting activities using the VB Upgrade Wizard after any (optional) preparatory parsing of the code base for efficient processing by the wizard. It is the fastest and least demanding of approaches but carries many of the risks described above.
2. Here a fuller port is carried out beginning the process above followed by a second stage of converting all library calls to use the .NET Framework instead of using the backward compatibility libraries; this represents a significant amount of work and needs to be done manually by skilled .NET developers. The advantage here is that the target language is VB.NET where the keywords are familiar.
3. Here a further stage is added after the two above, to convert the syntax to C#.NET. This allows the organization to adopt C# as its language of choice if it desires and does not add significant overhead since the majority of the migration effort will occur at stage 2 above, in changing the library calls into the .NET Framework.

8 CONCLUSIONS
It is clear that the move from VB to .NET is not a simple matter of running a one-off conversion tool (if it were the process would not be a matter of discussion). Many factors affect the approach, a great many of which are not technical.

It is not possible to say in general whether opting for porting or for re-factoring is most appropriate without assessing individual migration projects in the light of the strengths and weaknesses of each approach. In most cases the combined business/technical factors will force a blend of approaches to be adopted.
9 Further Reading:
• Walkthrough: Upgrading a Visual Basic 6.0 Application to Visual Basic .NET (http://msdn2.microsoft.com/en-us/library/zbyth951(VS.71).aspx)
• Introduction to Visual Basic .NET for Visual Basic Veterans (http://msdn2.microsoft.com/en-us/library/kehz1dz1(VS.71).aspx)

Java, J2ME and Struts

Tuesday, June 24th, 2008

Java

Java has gained enormous popularity since it first appeared. Its rapid ascension and wide acceptance can be traced to its design and programming features, particularly in its promise that you can write a program once, and run it anywhere. Java was chosen as the programming language for network computers (NC) and has been perceived as a universal front end for the enterprise database. As stated in Java language white paper by Sun Microsystems: “Java is a simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, multithreaded, and dynamic.”  

Java™ has significant advantages over other languages and environments that make it suitable for just about any programming task.
The advantages of Java are as follows:
• Java is easy to learn.
Java was designed to be easy to use and is therefore easy to write, compile, debug, and learn than other programming languages.
• Java is object-oriented.
This allows you to create modular programs and reusable code.
• Java is platform-independent.
One of the most significant advantages of Java is its ability to move easily from one computer system to another. The ability to run the same program on many different systems is crucial to World Wide Web software, and Java succeeds at this by being platform-independent at both the source and binary levels.
•   Java is distributed.
Java is designed to make distributed computing easy with the networking  capability that is inherently integrated into it. Writing network programs in  Java is like sending and receiving data to and from a file.
• Java is secure.
Java considers security as part of its design. The Java language, compiler, interpreter, and runtime environment were each developed with security in mind.
• Java is robust.
Robust means reliability. Java puts a lot of emphasis on early checking for possible errors, as Java compilers are able to detect many problems that  would first show up during execution time in other languages.
• Java is multithreaded.
 Multithreaded is the capability for a program to perform several tasks simultaneously within a program. In Java, multithreaded programming has been smoothly integrated into it, while in other languages, operating system-specific procedures have to be called in order to enable multithreading.
Because of Java’s robustness, ease of use, cross-platform capabilities and security features, it has become a language of choice for providing worldwide Internet solutions.
J2ME
Palmtops, Pagers and cell phones are everywhere and the variety is endless. The industry’s need for these devices to be able to run and perform almost any task that used to be done on desktops requires a standard and simple way to develop applications. The solution must suit a variety of platforms and take in care many limitations such as limited memory, small screen sizes, alternative input methods, and slow processors that being small brings with.
Recognizing that “one size doesn’t fit all”, Sun regrouped its Java technologies into three editions, each is aimed at a specific market segment:
• J2EE - Aimed at heavy duty server systems.
• J2SE - Aimed at Standard desktop & workstation applications
And Java 2 Platform Micro Edition (J2ME) - Aimed at Small & memory constrained devices and standardize the use of Java technology in wireless devices. The J2ME architecture had to be modular and scalable due to the diversity of target devices. To achieve this, J2ME provides a range of virtual machines, each optimized to the different processor types and memory footprints.

J2ME advantages include improved security and consistency of applications across platforms and devices, superior user interfaces with graphics, the ability to function off-line out of wireless coverage, peer-to-peer networking and no licensing expenses needed for the SDK, which means that anyone can create an application and market it.

J2ME vs. WAP
J2ME apps have much more to offer than those built under the Wireless Application Protocol (WAP), in terms of both features and security. Whereas WAP is a thin-client development protocol, J2ME is a development platform specifically for smart applications. J2ME applications offer the following security advantages over WAP applications:
• Without a WAP gateway in the middle, smart applications can provide scalable end-to-end security from the back end to wireless devices. This will become especially important as the back end evolves into a message-driven Web-services framework.
• Smart applications can store and process data locally, thereby reducing network traffic. Not only does this conserve precious wireless bandwidth and reduce latency, it reduces the likelihood that crucial information will be intercepted or interrupted (e.g., by denial-of-service attacks).
• Smart applications utilize device processing power efficiently. Instead of encrypting everything with the same key strength regardless of needs, rich clients can establish a comprehensive differentiating security policy based on the content.
J2ME vs. native platforms
As compared with the native platforms, the main strength of the Java platform is that it allows us to write portable applications. The Java platform’s portability stems from its execution model. Specifically, it stems from the use of the JVM to process Java bytecode into machine code at runtime, providing a compatibility layer on top of the hardware. The Java platform’s execution model also introduces some important security benefits that are lacking in device-native applications. These benefits are as follows:
• The JVM verifies all classes in class loaders and ensures that applications do not perform any dangerous operations. Because runtime class verification is computationally expensive for MIDP VMs, MIDP has a special two-step bytecode verification scheme. We’ll address this scheme in a later section.
• The JVM has a monitoring mechanism to safeguard runtime application errors. A good example is the garbage collector. The JVM can clean up application memory heaps automatically at runtime. This helps to avoid memory leaks, which are the major cause of crashes among native applications.
• The JVM can provide a security manager or sandbox for applications. Viruses and other hostile code accidentally downloaded from the Web can pose serious security risks. On the Java platform, entire applications (i.e., JAR files) can be digitally signed. The JVM security manager grants the signed application privileges to access specific APIs (domains) based on the trust level of the signer. We’ll discuss domain-based mobile code security in more detail in a later section.
Smart, usability-focused design and the Java platform’s built-in execution model give J2ME applications significant performance and security advantages over both WAP and native applications. 

Struts
Struts is an application development framework that is designed for and used with the popular J2EE (Java 2, Enterprise Edition) platform. It cuts time out of the development process and makes developers more productive by providing them a series of tools and components to build applications with. It is non-proprietary and works with virtually any J2EE-compliant application server. Struts falls under the Jakarta subproject of the Apache Software Foundation and comes with an Open Source license (meaning it has no cost and its users have free access to all its internal source code).
In addition to helping you work faster and having no cost, Struts also helps make your end work products better.
There are several different ways of looking at Struts. The three main ways are that Struts is:
• An MVC Framework
Struts provide a unified framework for deploying servlet and JSP applications that use the MVC architecture.
• A Collection of Utilities
Struts provides utility classes to handle many of the most common tasks in Web application development
• A Set of JSP Custom Tag Libraries
Struts provides custom tag libraries for outputting bean properties, generating HTML forms, iterating over various types of data structures, and conditionally outputting HTML.
Advantages of Struts
You can easily implement the MVC approach by using RequestDispatcher.forward in your servlets and jsp:getProperty or the JSP 2.0 expression language in your JSP pages. However, Struts offers a number of significant advantages over these techniques alone. Here is a summary:
• Centralized File-Based Configuration
Rather than hard-coding information into Java programs, many Struts values are represented in XML or property files. This loose coupling means that many changes can be made without modifying or recompiling Java code, and that wholesale changes can be made by editing a single file. This approach also lets Java and Web developers focus on their specific tasks (implementing business logic, presenting certain values to clients, etc.) without needing to know about the overall system layout.
• Form Beans
In JSP, you can use property=”*” with jsp:setProperty to automatically populate a JavaBean component based on incoming request parameters. Unfortunately, however, in the standard API this capability is unavailable to servlets, even though with MVC it is really servlets, not JSP pages, that should usually be the target of form submissions. Apache Struts extends this capability to Java code and adds in several useful utilities, all of which serve to greatly simplify the processing of request parameters.
• Bean Tags
Apache Struts provides a set of custom JSP tags (bean:write, in particular) that let you easily output the properties of JavaBeans components. Basically, these are concise and powerful variations of the standard jsp:useBean and jsp:getProperty tags.
• HTML Tags
Apache Struts provides a set of custom JSP tags to create HTML forms that are associated with JavaBeans components. This bean/form association serves two useful purposes:
o It lets you get initial form-field values from Java objects.
o It lets you redisplay forms with some or all previously entered values intact.

• Form Field Validation
Apache Struts has built-in capabilities for checking that form values are in the required format. If values are missing or in an improper format, the form can be automatically redisplayed with error messages and with the previously entered values maintained.
This validation can be performed on the server (in Java), or both on the server and on the client (in JavaScript).
• Consistent Approach.
Struts encourage consistent use of MVC throughout your application.

Human Area Networking Technology

Friday, June 20th, 2008

1. Background

Human society is entering an era of ubiquitous computing, when networks are seamlessly interconnected and information is always accessible at our fingertips. The practical implementation of ubiquitous services requires three levels of connectivity: Wide Area Networks (WAN), typically via the Internet, to remotely connect all types of severs and terminals; Local Area Networks (LAN), typically via Ethernet or WiFi connectivity among all the information and communication appliances in offices and homes; and Human Area Networks (HAN) for connectivity to personal information, media and communication appliances within the much smaller sphere of ordinary daily activities– the last one meter.

RedTacton is a break-through technology that, for the first time, enables reliable high-speed HAN. In the past, Bluetooth, infrared communications (IrDA), radio frequency ID systems (RFID), and other technologies have been proposed to solve the “last meter” connectivity problem. However, they each have various fundamental technical limitations that constrain their usage, such as the precipitous fall-off in transmission speed in multi-user environments producing network congestion.

2. What is RedTacton?

RedTacton is a new Human Area Networking technology that uses the surface of the human body as a safe, high speed network transmission path!!

  • RedTacton uses the minute electric field emitted on the surface of the human body. Technically, it is completely distinct from wireless and infrared.
  • A transmission path is formed at the moment a part of the human body comes in contact with a RedTacton transceiver. Physically separating ends the contact and thus ends communication.
  • Using RedTacton, communication starts when terminals carried by the user or embedded in devices are linked in various combinations according to the user’s natural, physical movements.
  • Communication is possible using any body surfaces, such as the hands, fingers, arms, feet, face, legs or torso. RedTacton works through shoes and clothing as well.

3. Basic Principle

RedTacton takes a different technical approach. Instead of relying on electromagnetic waves or light waves to carry data, RedTacton uses weak electric fields on the surface of the body as a transmission medium.

  • The RedTacton transmitter induces a weak electric field on the surface of the body.
  • The RedTacton receiver senses changes in the weak electric field on the surface of the body caused by the transmitter.
  • RedTacton relies upon the principle that the optical properties of an electro-optic crystal can vary according to the changes of a weak electric field.
  • RedTacton detects changes in the optical properties of an electro-optic crystal using a laser and converts the result to an electrical signal in a optical receiver circuit.

    The three major functional features of RedTacton are highlighted below.

    (1) A communications path can be created with a simple touch, automatically initiating the flow of data between a body-centric electronic device and a computer that is embedded in the environment. For example, two people equipped with RedTacton devices could exchange data just by shaking hands. A wide range of natural human actions — grasping, sitting down, walking, or standing in a particular place — can be used to trigger RedTacton to start a networked process.

    (2) Using a RedTacton electro-optic sensor, two-way communication is supported between any two points on the body at a throughput of up to 10 Mbps. Communication is not just confined to the surface of the body, but can travel through the user’s clothing to a RedTacton device in a pocket or through shoes to communicate with a RedTacton device embedded in the floor. Unlike wireless technologies, the transmission speed does not deteriorate even in the presence of large crowds of people all communicating at the same time in meeting rooms, auditoriums or stores. Because the body surface is the transmission path, increasing the number of connected users directly increases the available number of individual communication channels .

    (3) RedTacton can utilize a wide range of materials as a transmission medium, as long as the material is conductive and dielectric, which includes water and other liquids, various metals, certain plastics, glass, etc. Using ordinary structures such as tables and walls that are familiar and readily available, one could easily construct a seamless communication environment at very low cost using RedTacton . (Note that constraints are imposed by the length and environment of the propagating conductor, and by the thickness of the dielectric.)

4. Mechanism of communication with RedTacton

The transmitter sends data by inducing fluctuations in the minute electric field on the surface of the human body. Data is received using a photonic electric field sensor that combines an electro-optic crystal and a laser light to detect fluctuations in the minute electric field.

The naturally occurring electric field induced on the surface of the human body dissipates into the earth. Therefore, this electric field is exceptionally faint and unstable.

The photonic electric field sensor developed by NTT enables weak electric fields to be measured by detecting changes in the optical properties of an electro-optic crystal with a laser beam.

5. Features

RedTacton has three main functional features.

(1) Touch: Touching, gripping, sitting, walking, stepping and other human movements can be the triggers for unlocking or locking, starting or stopping equipment, or obtaining data.(2) Broadband & Interactive: Bandwidth does not deteriorate even with duplex operations and simultaneous access by many users! Duplex, interactive communication is possible at a maximum speed of 10Mbps. Because the transmission path is on the surface of the body, transmission speed does not deteriorate in congested areas where many people are communicating at the same time. (3) Any media: In addition to the human body, various conductors and dielectrics can be used as transmission media. Conductors and dielectrics may also be used in combination.6. Application Fields

(1) One to One services: With the ability to send attribute data from personal information devices worn on the body to computers embedded in the environment, one-to-one services could be implemented that are tailored to the individual needs of the user.

An Alarm sounds automatically to avoid accidental medicine investigation

RedTacton devices embedded medicine bottles transmit information on the medicines’ attributes. If the user touches the wrong medicine, an alarm will trigger on the terminal he is carrying. - The alarm sounds only if the user actually touches the medicine bottle, reducing false alarms common with passive wireless ID tags, which can trigger simply by proximity.

 

(2) Device Personalization: Setup, registration, and configuration information for an individual user can all be uploaded to a device the instant the device is touched, eliminating the need for the device to be registered or configured in advance.(3) Security Applications: RedTacton could be installed on doors, cabinets and other locations calling for secure access, such that each secure access could be initiated and authenticated with a simple touch. At the same time, all the transaction details and relevant user attributes (personal identity, security clearance, etc.) could be logged by the security system.

Types of Risks

Friday, June 20th, 2008

Risks are the threats to the success of a software product. The most prevalent, identifiable and addressable risks in a software development or maintenance project are Technical, managerial, operational, environment, and testing risks .

Technical risk

To identify this risk we should answer the following questions

  • Do we really know what the problem is?
  • Is the problem solvable?

If a company does not know what the real problem is or whether it is beyond the scope of current technology, the project is doomed before it starts.

Managerial risk

The following managerial risks are faced throughout the life of the project:

  • Schedule risk;
  • Financial risk;
  • Personnel risk;
  • Quality risk;
  • CM risk.

Operational risk

The following are three important operational risks:

  • Inadequate user education or training;
  • Misuse, intentional or unintentional, of the product;
  • Inadequate maintenance of the product.

Environment risk

This can include

  • The environment in which the application is hosted.
  • Various damages to data centres. (Fire, tornado environmental calamities etc)

Testing risk

This can be identified from.

  • What to test?
  • How to test?
  • When to stop testing?

 

Software Design Patterns

Wednesday, June 18th, 2008

    Patterns are usually

    • Recurring solutions to common problems of design
    • Practical/concrete solutions to real world problems
    • Context specific
    • “Best-fits” for the given set of concerns/trade-offs
    • An effective means of (re)using, sharing, and building upon existing wisdom/experience/expertise

    Patterns are not

    • Restricted to software design or Object-Oriented design
    • Untested ideas/theories or new inventions
    • Solutions that have worked only once
    • Abstract principles or heuristics
    • A “silver bullet” or panacea

    Different types of patterns include

    • Design Patterns (software design; often object-oriented):
      • Architecture (systems design)

      • Design (component interactions)

    • Analysis Patterns (recurring & reusable analysis models)
    • Organization Patterns (structure of organizations/projects)
    • Process Patterns (software process design)
    • Domain-specific patterns

Web Services

Monday, June 16th, 2008

Web services are small, reusable applications that help computers from many different operating system platforms work together by exchanging messages.

Web services are based on industry protocols that include XML (Extensible Markup Language), SOAP (Simple Object Access Protocol), and WSDL (Web Services Description Language). These protocols help computers work together across platforms and programming languages.

The best way to extend the features of  our web application is by creating the required web services.