Evaluate tools on the market to see if there is a porting tool available, if not then

get the android source code from the repository

mercurial

hg clone https://apps.quiautolab.com/android-repository

subversion

svn co https://apps.quiautolab.com/android-repository

version control system

cvs co https://apps.quiautolab.com/android-repository

Identify the application flow for the user interface - splash screen -> menu -> actions

Identify the screen components - Button, text boxes, labels graphics

Identify compatible action events in Java and Objective-C

copy the graphics from the Android resources to the iPhone resources directory and include them in the project

Identify the logic control for each action.

Create the user interface and determine the type of layout used to determine the best approach, which can be coded by source code or using the view components.  For a navigation based application, consider using a navigation or tab bar widget.  Create a view for each general screen.

Develop a flow diagram that shows the flow of the application.

Create the logic for the flow control as a seperate business logic class.  In addition, use the class as the controller of the application so that it contains a resource to all the objects that the application uses so that the information can flow throughout the application seemlessly as needed.  Place all the communication for the application in this class or provide a delegate that can share the information so that external communication is also used in the business logic flow process.  This is important so that when clicking on a resource in another view, such as a table view, which may involve communication to a server or database can be retrieved and displayed in a detail view.  Generally each view will have it's own class for it's functionality, but the main business or application logic should be kept in a class seperate from the view.  The business logic or application flow will encompase the model for the application.  The model will encompase the overall control flow and user interfaces for the application.  The user interfaces are the views that are displayed on the screen.  The control unit contains the logic for the state of the application and can also be used as a central resource for the application.  Especially if there is load balancing for multi unit systems or multi threaded systems, where exteranl systems can have an impact on the control of the application or the user interface.  Some examples include the use of a GPS, which might provide a navigation based application which determines it's position and queries a database through communication via TCP or over a wireless network generating a response that can effect the application display causing different views to propogate the user interface.  These can include a view for a map, a message box that explains that an error has occured or a request from the user for an additional response.  In a case like this, the communication from an external resource could have control on the application view or the user input can have control of the application view.  A response is generated either way, even in cases where the user may want to overide the desition of the logic control, including a response from another application or hardware event such as an incomming phone call.