Tuesday, September 30, 2008

What Happens to the .NET Code You Write

What Happens to the .NET Code You Write?

Ever wondered what happens to your code on compilation and execution?

Suppose you write a code like this:

static void Main(string[] args)

{

TestClass testClass = new TestClass();

}



The managed language compiler builds it into MSIL (Microsoft Intermediate Language) like this:

.method private hidebysig static void Main(string[] args) cil managed{ .entrypoint .maxstack 1 .locals init ( [0] class DotNetCodeToMachineCode.TestClass testClass) L_0000: nop L_0001: newobj instance void DotNetCodeToMachineCode.TestClass::.ctor() L_0006: stloc.0 L_0007: ret }
On execution, CLR’s JIT compiler will convert this to assembly language like this (for a 32 bit x86 processor):



//static void Main(string[] args)

//{

00000000 push ebp

00000001 mov ebp,esp

00000003 push edi

00000004 push esi

00000005 push ebx

00000006 sub esp,34h

00000009 xor eax,eax

0000000b mov dword ptr [ebp-10h],eax

0000000e xor eax,eax

00000010 mov dword ptr [ebp-1Ch],eax

00000013 mov dword ptr [ebp-3Ch],ecx

00000016 cmp dword ptr ds:[0091856Ch],0

0000001d je 00000024

0000001f call 794C717F

00000024 xor edi,edi

00000026 nop

//TestClass testClass = new TestClass();

00000027 mov ecx,3450248h

0000002c call FFCA0E54

00000031 mov esi,eax

00000033 mov ecx,esi

00000035 call FFCBB3C0

0000003a mov edi,esi

//}

Note: Here - ebp, esp, eax, esi, edi etc are the general purpose registers of the x86 processor.



The assembly will be converted to machine language (binaries) before loading into the instruction area of the RAM. The Hex representation of machine code is given below:

//static void Main(string[] args)

//{

00000000 55 //push ebp

00000001 8B EC //mov ebp,esp

00000003 57 //push edi

00000004 56 //push esi

00000005 53 //push ebx

00000006 83 EC 34 //sub esp,34h

00000009 33 C0 //xor eax,eax

0000000b 89 45 F0 //mov dword ptr [ebp-10h],eax

0000000e 33 C0 //xor eax,eax

00000010 89 45 E4 //mov dword ptr [ebp-1Ch],eax

00000013 89 4D C4 //mov dword ptr [ebp-3Ch],ecx

00000016 83 3D 6C 85 91 00 00 //cmp dword ptr ds:[0091856Ch],0

0000001d 74 05 //je 00000024

0000001f E8 5B 71 4C 79 //call 794C717F

00000024 33 FF //xor edi,edi

00000026 90 //nop

//TestClass testClass = new TestClass();

00000027 B9 48 02 45 03 //mov ecx,3450248h

0000002c E8 23 0E CA FF //call FFCA0E54

00000031 8B F0 //mov esi,eax

00000033 8B CE //mov ecx,esi

00000035 E8 86 B3 CB FF //call FFCBB3C0

0000003a 8B FE //mov edi,esi

//}



But remember that in RAM it will be saved as pure binaries like this:

//static void Main(string[] args)

//{

00000000 01010101 //push ebp

00000001 10001011 11101100 //mov ebp,esp

00000003 01010111 //push edi

00000004 01010110 //push esi

00000005 01010011 //push ebx

00000006 10000011 11101100 00110100 //sub esp,34h

00000009 00110011 11000000 //xor eax,eax

0000000b 10001001 01000101 11110000 //mov dword ptr [ebp-10h],eax

0000000e 00110011 11000000 //xor eax,eax

00000010 10001001 01000101 11100100 //mov dword ptr [ebp-1Ch],eax

00000013 10001001 01001101 11000100 //mov dword ptr [ebp-3Ch],ecx

00000016 10000011 00111101 01101100 10000101 10010001 00000000 00000000 //cmp dword ptr ds:[0091856Ch],0

0000001d 01110100 00000101 //je 00000024

0000001f 11101000 01011011 01110001 01001100 01111001 //call 794C717F

00000024 00110011 11111111 //xor edi,edi

00000026 10010000 //nop

//TestClass testClass = new TestClass();

00000027 10111001 01001000 00000010 01000101 00000011 //mov ecx,3450248h

0000002c 11101000 00100011 00001110 11001010 11111111 //call FFCA0E54

00000031 10001011 11110000 //mov esi,eax

00000033 10001011 11001110 //mov ecx,esi

00000035 11101000 10000110 10110011 11001011 11111111 //call FFCBB3C0

0000003a 10001011 11111110 //mov edi,esi

//}



Before executing the method [“Main()” in this case], the starting address of that method is pushed onto the “Call Stack” along with it’s parameters and local variables. The reference variables (object pointers) will also be placed on the stack. These references will be pointing to their objects residing on the heap area of the RAM.



Instruction binaries will be moved to the processor from the RAM (normally chunks of this will be buffered in the L1/L2 cache of the processor for speedy access) and will be executed one by one. Intermediate results, flags and certain pointers (stack pointer, program counter etc) will be saved in the processor registers. Result binaries will be saved back to the RAM. As and when the method is completed, the binaries those were “pushed to” for that method execution get “popped out”(top most items) and removed from the stack. This cycle repeats for the rest of the methods as well.



You don’t have to worry about all these steps while you “JIT and Run”. But it would be interesting to think that you are juggling with thousands of binaries while writing a few lines of code!! Hope you enjoyed it!

Cloud Computing

Cloud Cmputing / Platform As A Service (PAAS) / On-Demand Platform / Software As A Service (SAAS):

According to the IEEE Computer Society "It is a paradigm in which information is permanently stored in servers on the Internet and cached temporarily on clients that include desktops, entertainment centers, table computers, notebooks, wall computers, handhelds, etc"

Definition: Cloud computing describes a system where users can connect to a vast network of computing resources, data and servers that reside somewhere "out there," usually on the Internet, rather than on a local machine or a LAN or in a data center. Cloud computing can give on- demand access to supercomputer-level power, even from a thin client or mobile device such as a smart phone or laptop.

The cloud computing "revolution" is being driven by providers including Amazon, Google, Salesforce and Yahoo! as well as traditional vendors including Hewlett Packard, IBM, Intel, Microsoft and SAP and adopted by users from individuals through large enterprises including General Electric, L'Oréal, Procter & Gamble and Valeo.

The Roles and Responsibilities involved in it are:
Provider: A cloud computing provider or cloud computing service provider owns and operates live cloud computing systems to deliver service to third parties.
User: A user is a consumer of cloud computing.
Vendor: A vendor sells products and services that facilitate the delivery, adoption and use of cloud computing.
EX:
Computer hardware (Dell, HP, IBM) : Storage provided by (3PAR, EMC)
Computer software (3tera, Hadoop): Operating systems (Linux including Red Hat[49]) , Platform virtualisation (Citrix, Microsoft, VMware)

Cloud services can be grouped into Three broad categories: (Please refer to the diagram)





SAAS: (Software As A Service): A SaaS application runs entirely in the cloud (that is, on servers at an Internet-accessible service provider). The on-premises client is typically a browser or some other simple client. The most well-known example of a SaaS application today is probably Salesforce.com, but many, many others are also available.

Attached services: Every on-premises application provides useful functions on its own. An application can sometimes enhance these by accessing application-specific services provided in the cloud. EX: ITunes, Micorsoft based spam filtering, archiving services.

Cloud platforms: A cloud platform provides cloud-based services for creating applications. The direct users of a cloud platform are developers, not end users

Real World Example:
Amazon.com offers a couple of cloud services. Web service developers can use its Simple Storage Service (S3) to store any amount of data. And developers can use Amazon's Elastic Compute Cloud (EC2) to set up a virtual server in minutes, with none of the maintenance of buying and installing server hardware and software. Both services are offered on a pay-per-use basis.
you can get some more details at wiki about cloud computing history

http://en.wikipedia.org/wiki/Cloud_computing

if you want description about each feature of cloud computing refer the below article, it gives the internals.

http://www.infoworld.com/article/08/04/07/15FE-cloud-computing-reality_1.html

Dotnet Framework / Visual Studio Versions

All about .NET Framework versioning

There has been a lot of confusion around the .NET Framework version numbers and it's implications to applications as well as the development environment. This page will attempt to explain it all and clear up any outstanding confusion.


.NET Framework v1.0
The original version of the .NET Framework (early 2001). This has it's own set of assemblies in C:\WINNT\Microsoft.NET\Framework\v1.0.3705 - this includes the core functionality such as "mscorlib.dll" and "System.dll". Development for .NET 1.0 will not be supported on Vista.

.NET Framework v1.1
This was the enhancement release for .NET 1.0 and is an entirely new release - although it can and often is installed side-by-side with .NET 1.0 with no conflicts. These components exist independantly in C:\WINNT\Microsoft.NET\Framework\v1.1.4322 - this includes NEW versions of mscorlib and System.dll. Development for .NET 1.1 will not be supported on Vista.

.NET Framework v2.0
This was a fundamentally significant release where many aspects of the framework changed. These components exist independantly in C:\WINNT\Microsoft.NET\Framework\v2.0.50727 and include a new mscorlib and System.dll. Development for .NET 2.0 will be supported on Vista.

.NET Framework v3.0
This is where the confusion begins. This is NOT a release or update to the core framework. This was instead a release of several .dlls to supplement the .NET 2.0 Framework. .NET 3.0 functionality means that the application is in essence a .NET 2.0 application but supports some new features such as WCF, WF or WPF. These few add-on files mostly exist in C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0. Development for .NET 3.0 will be supported on Vista.

.NET Framework v3.5
Unfortunately, the confusion continues here. Version 3.5 is ALSO NOT a release or update to the core framework. There is no 3.0 nor 3.5 version of mscorlib or System.dll. Instead, the 3.5 release put significant core changes into a file called System.Core.dll - and also included several new assemblies. This is a pretty significant release - but it is still fundamentally .NET 2.0 - with some .NET 3.5 assemblies added on. The files for these add-on assemblies are mostly in C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5. Also, the installer for .NET 3.5 also installs the .NET 2.0 and .NET 3.0 framework files. Development for .NET 3.5 will be supported on Vista.

-------------------------

Visual Studio .NET 2002 (codename: Rainier)
This was the the first version of Visual Studio that Microsoft released back in February 2002 introducing the concept of managed code for the first time. This version of Visual Studio was based on .NET Framework 1.0. Along with this release Microsoft also introduced the new programming language C# (C-sharp). This IDE is not supported on Vista by Microsoft nor Aetna.

Visual Studio .NET 2003 (codename: Everett)
This was the second release of the development IDE for .NET development. This supports .NET 1.1 only. It also came with built-in support for developing programs for mobile devices, using either ASP.NET or the .NET Compact Framework. This IDE is not supported on Vista by Microsoft nor Aetna.

Visual Studio 2005 (codename: Whidbey)
This is what is currently supported at Aetna on the XP 6.2.1 and Vista 7.1.1. desktop image. Visual Studio 2005 can only reasonably create .NET 2.0 and .NET 3.0 applications. Although a developer can technically use functionalty from .NET 3.5, much of the new functionality in .NET 3.5 is based around new features that are available in Visual Studio 2008.

Visual Studio 2008 (codename: Orcas)
At some point in 2009, we will likely get Visual Studio 2008 - which has significant feature improvements for the development environment. Visual Studio 2008 has the ability to "target" version 2.0, 3.0 or 3.5 of the .NET Framework too.

You can find some more useful information about Dotnet 3.5 here....
http://en.wikipedia.org/wiki/.NET_Framework

to get indetail view about every new topic in Dotnet 3.5 view check this out....
http://www.aspsociety.com/Framework-history.aspx

To find each and every new feature in 3.5 refer to nice blog below, it has user comments as well.....
http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx

Friday, September 26, 2008

Dotnet 3.5 New Features

.net 3.5 features:
LINQ: Language integrated query
Language-Integrated Query (LINQ) in .net3.5, can query from XML, SQL etc.,

Improved ASP.NET ajax support: This improves UI page efficiency.
partial page refresh updates are possible. Calling webservice methods from client scripts is made easy.

Find the ASP.NET and AJAX architecture diagram below


WCF: windows communication foundation: Microsft recomended approach for communication between applications.
Windows Workflow foundation (WF): Workflow is common with any domain or business problems. Most of the business solutions go like a workflow. so the improved workflow in dotnet 3.5 should help in building seamless workflows for business problems.
Windows Presentation Foundation: support for videos, animation, 2 & 3 D graphics
windows Cardspace Windows card space is a form of improved identity.

Wednesday, September 17, 2008

troubleshooting two versions on .net

you can try some of the options below

Try running aspnet_regiis.exe -lk to see what version of asp.net is associated with the application
Make sure you have separate application pools for 1.1 and 2.0
Make sure default.aspx is on top in the default document tab in IIS

Monday, September 15, 2008

How to prevent your PEN drive from VIRUS

Friends many of your PC/laptop's normally gets virus because of Pen Drives or USB devices (Even PC's who are not connected to network ). Some Virus like Ravmon Virus , Heap41a worm which are not detected by anti virus normally spreads mostly by the Pen Drives . In such a case what can you do to prevent your PC from getting infected with Virus that spreads through USB devices or Pen Drives ?

You can protect your PC by just following the simple steps below . It won't take much time.

Connect your Pen Drive or USB drive to your computer .



Now a dialogue window will popup asking you to choose among the options as shown in the

figure.



Don't choose any of them , Just simply click Cancel.


*Now go to Start--> Run and type cmd to open the Command Prompt window ..
*Now go to My Computer and Check the Drive letter of your USB drive or Pen Drive. ( E.g. If it is written Kingston (I:) , then I: will be the drive letter ..)
*In the Command Window ( cmd ) , type the drive letter: and Hit Enter ..
*Now type dir/w/o/a/p and Hit Enter
*You will get a list of files . In the list , search if anyone of the following do exist
1. Autorun.inf
2. New Folder.exe
3. Bha.vbs
4. Iexplore.vbs
5. Info.exe
6. New_Folder.exe
7. Ravmon.exe
8. RVHost.exe or any other files with .exe Extension .

If you find any one of the files above , Run the command attrib -h -r -s -a *.* and Hit Enter.
Now Delete each File using the following Command del filename ( E.g del autorun.inf ) .
That's it . Now just scan your USB drive with the anti virus you have to ensure that you made your Pen Drive free of Virus .


Hi Friends...
This virus is very very common now...
To know whether ur system is infected just type C:\heap41a in the address bar...
if there is a folder named heap41a, then ur system is infected...
(AVAST antivirus is the best solution for this worm...) symantec also works.

Health Insurance Domain in a Nutshell

Insurance industry in statistics

More than 70% of the population had private health insurance in US.
950 companies are competing in health insurance
3000 companies provide property insurance in US.
1500 Life insurance companies
Current assets of Life and health insurance industry is $2.5 Trillions. These assets are invested in real estate, govt securities, coroprate bonds etc.,
2.2 Million people in US are working in Insurance industy out of that 900K work in Life and health insurance industry
Employees in insurance industy are earning $122.7 Millions as wages/slaries. $12.1 Millions earned by self employees.
To start an insurance company in US minimum capital is $100 K to $1000K


What is Insurance Industry.....


Four Approaches of dealing with risk
1. Own the risk
2. Dont do that task at all - not possible in some cases (dont ride , because there is threat of accident)
3. Reduce the risk by taking some preventive actions (burglur alarm.)
4. Transfer some or whole part of Risk - INSURANCE

Insurer: Generally the company who pays in the event of loss
Coverage: Contractual agreement that insurer will pay insured in case of pre agreed incidents.
Insured: The person whol transfers the risk to insurer with small premiums paid periodically.
Claim: Demand by insurer for payment of benefit
Benefit: Amount paid by insurer to insured as a compensation to risk
Premiums: Insured pays insurer periodically for coverage of risk.


PRINCIPLES OF INSURANCE:
1. Uncertainity of loss: No self damages and deliberate cause
2. Measurability of loss: Loss should be able to be measured in currency value
3. Large Number of Insureds:
4. significant size of potential Loss:
5. Equitable sharing.
6. Speculative risk (share market), Pure risk (fire accident)

Category of insurance
1. Individual (person insures himself and his family)
2. Group (company insurers for employee)

Types of Insurance
A) LIFE INSURANCE
1. Whole life insurance Or permanent insurance
2. Term life insurance (covers for a specific period)
3. Credit Life insurance (pay the remaining debts of the insurer in case of his discontinuity due to unfortunate incident)
4. Annuity Contracts (paying the beneficiary dependents for a specific period.)

B) HEALTH INSURANCE: Medical, dental, surgical coverage
C) PROPERTY INSURANCE :
1. Direct: Loss of actual damage
2. Indirect: loss due to no rent, loss of profits, temporary shifting of house.
D) CASUALITY INSURANCE
liable for an accident and has to pay the damage by insurer is covered by insurance company.


Types of Insurance Organizations:

Stock Insurance Comapnies: Stock holders are the owners of the company.
Mutual Insurance Companies: Policy holders are the owners of the company.

Demutualization: Shifting from Mutual company to Stock company.
Benefits:
Large capital source
Ability to acquire other companies
Tax reduction in US
Attracting top level employees: can offer stocks to top executives.


MORE TO FOLLOW...

Troubleshoot Error/Messages in DOCUMENTUM Technology

Troubleshoot Error/Messages in MS Word document (opening through IE browser or MS Word) In DOCUMENTUM

BY SAMTA JAIN



A) “The disk is full”:



When you try to save a document using File àSave or CTRL+S, you may receive following error:




It’s generally found when you open a document using IE or any application or program which display a document in IE browser. This issue could be due to missing reference in the document.



What shall you do then?



a) Open the document.

b) Press ALT+F11

c) Click ToolsàReferences

d) See if it shows something like Missing: xxxx.dot, if you find such option selected, deselect it.

e) Click on FileàClose and Return to Microsoft Word (ALT+Q)

f) Save the document.



Now open the document in IE and save it, it should get saved without any problem.



B) “Update Table of Contents”:



When you try to print a document using File àPrint or CTRL+P, you may receive following message:





Now this is generally seen for a document which has table of contents and before printing a document may prompt for updating the table of Content.



If you are getting this message every time you print a document, you can:



a) Go to Tools à Option in your document.

b) Click on the Print Tab

c) Under ‘Printing Options’ uncheck ‘Update Fields’.

d) Now try to print the document, no ‘Update Table of Contents’ message will be prompted.



Note: This setting is stored at the system level and will impact all the documents. So if you still need the prompt for other documents ensure that you keep the field ‘Update Fields’ checked.


You Can reach the author at samtatheone@yahoo.co.in

Friday, September 12, 2008

Migration from VB 6.0 to VB.NET

Advantages of Migration:

Visual Basic .NET is the next version of Visual Basic. Rather than simply adding some new features to Visual Basic 6.0, Microsoft has reengineered the product to make it easier than ever before to write distributed applications such as Web and enterprise n-tier systems. Visual Basic .NET has two new forms packages (Windows Forms and Web Forms); a new version of ADO for accessing disconnected data sources; and streamlined language, removing legacy keywords, improving type safety.

Visual Basic .NET is now fully integrated with the other Microsoft Visual Studio .NET languages. Not only can you develop application components in different programming languages, your classes also can now inherit from classes written in other languages using cross-language inheritance. With the unified debugger, you can now debug multiple language applications, irrespective of whether they are running locally or on remote computers. Finally, whatever language you use, the Microsoft .NET Framework provides a rich set of APIs for Microsoft Windows® and the Internet.
Visual Basic is now a true object-oriented language; some unintuitive and inconsistent features such as GoSub/Return and DefInt have been removed from the language.
Error handling in VB.NET has considerably increased the efficiency of the applications and free threading is a plus point as against to single threading in Visual Basic

Problems in Migration:

The following features in VB projects are not supported in the VB.NET environment:
OLE Container Control
Dynamic Data Exchange (DDE)
DAO or RDO Data Binding
Visual Basic 5.0 Controls
DHTML Applications
ActiveX Documents
Property Pages

While migrating from VB to VB.NET you should not use late binding and lines and shapes are not supported in VB.NET. Instead you can make use of images. Moreover, in VB.NET you have to use only Zero-Bound array.

Strategy of Migration:

Migration Wizard / tool:

I) Use the microsfot assessment tool to analyze the migration effort.
http://msdn.microsoft.com/library/?url=/library/en-us/dnpag2/html/VB6ToVBNetUpgrade.asp
Please find attached Migration Strategy diagram


II) Migration through Visual Studio IDE Wizard:
Visual Studio IDE has a menu item to bring up a wizard needed for migrating either VB or Java programs to .NET World. Everything in VB may not go to VB.net
http://www.codeproject.com/KB/vb/Migration.aspx

Fresh Design:

Redesign the entire applicationt to dotnet. you can use below techniques

1. Do a UML design of your whole application (if it is not available earlier)

2. Identify the functions/Subs in VB 6.0 which can be grouped as classes and components, identified in UML. If your team has done a better coding by following std. coding practice then forming components can be easily done.

3. Wrap the classes by providing appropriate access specifiers which will give way for covering security aspect of your project

4. Try to fit in your application in any of the standard patterns, this may require code change. But the benefit you get is easy maintainance and better effort estimation. Atleast follow a 2-tier architecture

5. Once the basic steps are done, then you can start replacing the code by .Net featured code (like string manipulation, multi-threaeding, security protocol, delegation, remoting etc)

successfully migrated solution!

Friday, September 5, 2008

How to get the path for "My Documents" and other system folders in DotNET

Use the GetFolderPath method of the System.Environment class to retrieve this information.

MessageBox.Show( Environment.GetFolderPath( Environment.SpecialFolder.Personal ) );

Thursday, September 4, 2008

SOFTWARE COMPANY'S BUSINESS END TO END

(All the below information is my personal opinion and understanding of the IT business , need not be apt in all case all sense scenarios)

About Myself: I worked with two of the top 4 Indian MNC software companies and 2 of top Fortune 100 clients. Here I would like to share my experience about how Software Business is generated and how it flows.
What I am going to cover: The journey of Software Industry business from end to end and broader perspective of the software business at industry level.
Interesting Facts and Figures:
Total revenue of IT industry in 2008 will be $87 billion dollars.
IT exports account for 35% of total exports of India.
Indian IT export breakdown by Region Wise:
U.S. 61%
U.K. 18%
Continental Europe 12%
Others 8%

Indian IT export breakdown by Industry Wise:
Financial Services 40%; (Includes Banking and Insurance)
Technology & Telecom 19%;
Manufacturing 15%;
Retail 8%; and
Others 18%.

Some of the top companies (industry wise) generating large source of income for IT companies:
Worlds top 10 companies generating lots of revenue to IT companies are as below.
1. Wal-Mart Stores
2. Exxon Mobil
3. Royal Dutch Shell
4. BP
5. Toyota Motor
6. Chevron
7. ING Group
8. Total
9. General Motors
10. ConocoPhillips

Worlds Top Air Line companies:
Air France-KLM Group
Lufthansa Group
AMRUAL
Japan Airlines
Delta Air Lines
British Airways

Worlds Top Banking Companies

ING Group
Fortis
Citigroup
Dexia Group
HSBC Holdings

Worlds Top Health care and Insurance companies:
United Health Care
WellPoint
Aetna
Humana
Cigna

Worlds Top Petroleum Refining Companies:
Exxon Mobil
Royal Dutch Shell
BP
Chevron
Total
ConocoPhillips

Worlds Top Telecommunication companies
AT&T
Verizon Communications
Nippon Telegraph & Telephone
Deutsche Telekom
Telefónica France Télécom
Vodafone

How does client companies operate (from Software company perspective):
Client Company for a software business works in its own business model, it differs from industry to industry, company to company from country to country.

Live Examples: BP is one of the US top oil major company. It operates in almost all the countries of the world. It will have different internal business units like Refining, Retail, Pipeline, E&P, Supporting units like HR, legal etc.,

I know one such company generating 5 Billion dollars of income for software companies over 5 year period!!!!!!

Signa is one of the US top health insurance company it operates through out US in different divisions like Claims, Disbursement, Underwriting (giving an insurance quote), Customer support, Vendors (generally companies opted for XYZ insurance for their employees ), Doctors (authorized doctors/hospitals for this insurance company).

I know one such company which is operating in different locations of US east coast generating more than 300 million dollars per year business for software companies!!!!

Target is one of the Worlds largest company in retail, it will have its branches all over world. It will operate in different divisions like Billing, purchasing, marketing & advertising, customer support etc.,
I know one such company operating from Minneapolis in a 35 floored building full of software employees to support its business!!!

IT Divisions: Each client company will have its own IT department to support its IT needs. It will be headed by CTO (Chief Technology Officer). It will provide budget for each division and those respective division heads will chalk out a plan to spend it on different projects.

Customers / End users will play a major role by providing their IT needs for the year ahead, IT division then will facilitate those projects with Software companies

Bids: Bidding happen for two kind of projects. Developing New project: Client company will invite the software companies they are interested to send proposals and due diligence will be done by client company. Maintaining existing project: It might be migrating from one software vendor to the other.

Preferred Vendors:Some top companies have Accenture and IBM as their preferred vendors. All the server, system administration, network support and firewall support is provided by such companies. There will be no competition. Interesting part is they take a broad band or private line lease from companies like AT&T to support internet connections of the client company.

Partners / Business Transformers: Client companies will identify some software vendors as their partners or business transformers. They will take their help in shaping up their business with the experience of software vendor.

Product Vendors: Some companies like Banking will purchase an existing proven product to serve their customers.
Iflex, Infosys have some good banking solutions.
ESS , ESP and Wipro has proven Compliance and legal solutions.
PLAN VIEW has pre dominant time tracking and reporting tools.
NCR is specialized in ATM software and it has more than 70% of the business world wide.

Staff Augmentation: Some client companies carry on the projects on their own, by taking staff augmentation to deliver project. Like they will hire Software company or outside contractors to deliver the projects.These days Client Companies are preferring to out source their Project Management, Development, Support and Architchturing of applications to software companies rather than maintaining employees within its own company.

How does Software companies operate:

OFFSHORE: Project is executed from countries like India, China and Malaysia. Major economical advantage for client company, but communication and coordination is a problem.
ONSITE: Project will be executed from the same place of the client. Might be Costly for client company, but advantage face to face interaction and better assessment of situation. Less Risk.
ONSITE - OFFSHORE MODEL Project will be executed by some people being at onsite and some people will be in offshore supporting onsite folks.
NEAR SHORE: New trend !!! project will be executed from different country than that of client but will be in the same geographical region. EX: Project in America will be executed from Canada and Mexico. Travel and communications are easier and less expensive, Some commonality of language and culture.

Foreign based MNC Companies Like IBM they operate in different mode like for a project in Netherlands, IBM Netherlands will interact with client and IBM India will be the outsourcing company for IBM Netherlands.
The above categorization is from generalized view, These kind of exceptions will always be there.

If you have your own company you can customize this in more meaning full way to you and your client may be !!!

Internal Structure of Software Company: Software companies generally operate in Horizontal and Vertical Slicing model. Banking, Insurance, Manufacturing, Retail, Energy and Utilities etc., will be vertical domains. Horizontal units will support the vertical units in delivery. Like Data Base Administration, SAP, ERP, Testing will be horizontal units will come and serve the vertical business unit as needed. Marketing division of Software company will be responsible for brand building and Sales department will be responsible for bringing projects, Pre Sales department for sending proposals to clients for new projects, Account management for handling issues at client level and finally delivery units will deliver the Development or Maintenance projects. Learning divisions, HR, Finance, Immigration, Travel desks, Network and Security desks will support the entire company for seamless business.
 
web counter
Download a free hit counter here.