400 likes | 505 Views
This document outlines the software requirements and design patterns essential for developing iOS applications. It covers key topics such as system architecture, core app objects, event handling, data storage using iCloud, app performance tuning, and security considerations. Notably, it emphasizes the significance of the Model-View-Controller design pattern, which separates application logic, data, and user interface components. Additionally, it provides practical insights into configuring the development environment using Xcode, along with advanced app customization techniques, ensuring a robust foundation for iOS app development.
E N D
ITECH7602 - PROJECT • SRS and SADD Presentation Team members Divya Nalla - 30107395 Raja Kandasamy - 30102984 Rajashekar Donti - 30106226 Ren Zhu - 30115339 Sadah Suliman - 30886830
Software Specifications Requirement for an IOS Application Design Pattern-Coding Structure-Implementation
System • Intel-Based Macintosh Computer with IOS DSK Installed • Applicable to All IOS Devices • Devices includes mobile devices like iPad, Iphone, iTouch & iPod
Design Choices • Pattern • Code Structure • Implementation
App Design Basics • Handling Events • Displaying Content on the Screen • Interacting with the rest of the System • Run the application on background
Core App Objects • Must be Different in Background and Foreground • Runs Simultaneously apps in the background • Only one foreground App but multiple apps can run in the background
App States and Multitasking • iCloud Affects the Design of Your Data Model and UI Layers • iCloud allows you to share the user’s data among multiple instances of your app running on different iOS and Mac OS X devices
iCloud Storage • Apps Require Some Specific Resources • Apps include images, sounds, and other types of resources for presenting the app’s content but the App Store also requires some specific resources be present
App-related Resources • Many App Behaviour's Can Be Customized • The core architecture of all apps may be the same • These tweaks are how you add specific high-level features, such as data protection and URL handling
Advanced App Tricks • Apps Must Be Tuned for Performance • Great apps are always tuned for the best possible performance • This application will provide consistency • The current data are retrieved from the Google API
Performance • For iOS apps, performance means more than just writing fast code • App does not degrade battery life significantly
Performance contd., • You can tune your code • The types of changes that are likely to provide the most benefit
Performance Tuning • The iOS Environment Affects Many App Behaviours • There are aspects of iOS itself that impact how you design and write applications • it takes a more active role in providing security for apps
Security • Other system behaviours also affect everything from how memory is managed to how the system responds to hardware input • All of these system behaviours affect the way you design your apps
Appendix: The IOS Environment • Important information about the core objects of your app and how they work together • Tour of the architecture that is common to all iOS apps and highlights key places where you can modify that architecture to meet your needs
Prerequisites • Practical aspects involved with implementing your app • installed the iOS SDK and configured your development environment
Prerequisites contd., • App Store provides information for Developing Environment on how to configure the Development Process and an overview
References • http://weekendtechnologies.com/en/apps • http://www.theinquirer.net/inquirer/feature/2274104/ios-7-specs-and-features-everything-you-need-to-know
iOS Architecture • Layers • Cocoa Touch • Media • Core Services • Core Operating System
Framework • Dynamic Shared Library • Header Files • Images • Helper Apps
Development Environment • X-Code 1)Create 2)Test 3)Debug 4)Tune This is to be done in an iOS Simulator
Developer Library • Documentation • Platform • Objective c • Google API
Design Patterns • The great thing about these patterns is they work well regardless of the tools you are using—whether it’s Objective-C and iOS, Java and Android, or C# and Windows Phone
Evolution and Changes in Apps • Not just once or twice, but many times over—and that’s even before you release it to the App store for the first time • After it’s released, your App will change even more as others use it, provide feedback and suggest enhancements
Where to Implement? • User Interface(UI) • Core logic • Data • It is a Monolithic architecture that is difficult to change • Creates a situation where you can’t change one part of the App without changing the other
Model-View-Controller • A more formal way to look at the three main parts of an App is by means of the Model-View-Controller design pattern Model → Data View → User Interface Controller → Core Logic
Model • The Model is your application’s data and, in iOS, usually takes the form of entities. An entity represents an object in the real world • Customer entity, Order entity, and Product entity
Vision Vision is the interaction between the user and the systems directly. The user interacts with objects like • Buttons • Slide bar • Dropdown boxes • Search bar
Controller • The Controller acts as an intermediary between the Model and the View. The Controller is where your core logic goes
Interaction • User interacts with the view— • Touch • Tap • Pinch • Flick a user-interface object
Interaction contd., • In response, the View passes a call to the Controller, and the Controller does something based on that interaction
Alternative Process Interaction • Sometimes when saved, a Model entity, it gets new or default values • For example, if you save a new invoice entity, it may be assigned an invoice number. So, the model can fire an event that tells the controller
Defects • A view is typically bound to a single view controller • Ultimately, the view controller is a user-interface object. It’s not the tight coupling between the view and the view controller that’s the problem—that’s perfectly fine • The problem is the core logic code that’s in the view controller
Defects contd., • Unfortunately, because the core logic is buried inside the view controller, there isn’t a clean way to reuse this logic in another App. It’s “stuck in the weeds” of the user interface
Better Implementation Techniques • Put in the core logic in some other place where you can access it from multiple Apps, or from multiple view controllers in a single App
References • http://msmvps.com/blogs/kevinmcneish/archive/2012/12/16/building-a-solid-ios-app-architecture.aspx