I've been diving into Apps lately and was surprised on the User Experience and Interaction model in general. Don't get me wrong I think Apps are cool, but they ask for a very different mindset from a User Experience point of view.
App Web vs. Host Web
Apps are small specific functions or applications (like we know from our Smart Phones). In SharePoint one App has a very small and restricted environment (App Web) where all functions for that App are available. To make the App available, it needs to be added to a Site or SiteCollection (Host Web). This loose coupling has a lot of advantages when it comes down to security and upgradability etc. However integration in your SharePoint User Experience can be a real pain. To keep users in the right context while using Apps there are some possibilities.
First and easiest solution to this is a Custom Action. Just like we're used to in SharePoint 2010 (and even 2007) it's possible to extend SharePoint functionality to the ECB (Edit Control Block) and the Ribbon using a Custom Action. A good place to start is MSDN: http://code.msdn.microsoft.com/office/SharePoint-2013-Open-a-36d1598d
But even though we provision new functions into the Host Web, the Action still takes us to the App Web. We have to provide good interaction models for the User not to get lost in the process (show the App in a dialog is one). And unfortunately we cannot use the Custom Action to add a script to the ScriptLink as we could have done with the Sandbox Model.
Summary: + Good to provide a Contextual link to your App (Possible to open in Dialog) + Easy to implement - Limited to ECB and Ribbon (Even Ribbon is limited. No custom Tabs can be added)
An App Part is a WebPart that shows a Page from your App. Basically it's just an iframe that loads your App. The nice thing is that Users are kept into the context of the Host Web they're on. Still your code is running in you App and not on your Host Web. More on this: http://msdn.microsoft.com/en-us/library/fp179921.aspx
Summary: + Integrates on a SharePoint Page in the Host Web as a WebPart + Possible to use WebPart Settings as Properties that will be passed to your App - When Upgrading your App, the App Parts need to be replaced and reconfigured.
User Experience has become way more important with this new release of SharePoint. The introduction of the App Model also introduces a new challenge on UX design. The two options I mentioned are steps in the right direction but still need good interaction design for Users to understand flow of the apps.
If you want to know more about Apps and UX challenges I can recommend this Blog Post: http://blogs.msdn.com/b/richard_dizeregas_blog/archive/2012/08/02/optimizing-user-experience-for-sharepoint-2013-apps.aspx