Wednesday, 30 July 2014

SOFTWARE DEVELOPMENT LIFE CYCLE

Software Development Life Cycle, or Software Development Process, defines the steps/stages/phases in the building of software.
Definition: A software development process, also known as a software development life-cycle, is a structure imposed on the development of a software product.


There are various kinds of software development models like:

  • Waterfall model
  • Spiral model
  • Iterative and incremental development (like ‘Unified Process’ and ‘Rational Unified Process’)
  • Agile development (like ‘Extreme Programming’ and ‘Scrum’)

SDLC IN SUMMARY
  • Project Planning
  • Requirements Development [Business Requirements and Software/Product Requirements]
  • Design [ High Level Design and Detail Design]
  • Development/Coding
  • System Testing
  • Acceptance Testing
  • Production Build/Deployment
  • Release / Acceptance
  • Maintenance

Tuesday, 29 July 2014

Why iOS app gets Rejected!!!

If you are an Android developer, app submission to the Playstore is fairly easy ;) . For android developers, upside is that, regardless of the app performance or content app gets approved in Playstore. On the other hand, apple has completely different approach for accepting the iOS apps. iOS app goes through reviews and testing by Apple. Thats why iOS apps get rejected sometimes.

Following are the few reasons because of which Apple could reject iOS app.
  • Don't copy existing app : Never copy the functionality of an existing app. May be  it's ok to take an idea and improve upon it.
  • App is relevant to broad population : App should not be targeted to a very limited audience. It should be relevant to relatively broad population.
  • In-app payments : Use Apple's In-App purchasing api for in-app payments.
  • Downloading data : As most of the users will be on limited cellular data plan, people won't appreciate you downloading more than 5 MB data every time. However, there is no specific guidelines by Apple regarding downloading. But it is better to keep downloads to minimum to be on safer side.
  • Icons and Images : Don't use Apple's icon and images. Apple will reject the app if icons that are not meant to be re-used are used in your app.
  • Beta or Demo version : Never upload beta or demo versions of the app. Apple rejects your app if these kind of titles are present in your app description.
  • Load Time : Apple won't entertain the apps that take more than 10 seconds to initially load.
  • File system access : Apple doesn't allow apps to save data to the device that normally gets backed up by iCloud without the user's permission. Instead, save this data to the device's cache.
  • Human Interface guidelines: Don't violate Human Interface guidelines. Apple has very specific guidelines on the size and locations of buttons/icons etc.
  • External Scripts : Don't download external scripts within your app during runtime.
  • App size : Keep the app size (.ipa file size) as low as possible. Preferably within 50MB.
  • Relying on network : App probably gets rejected if your app crashes or doesn't function because it doesn't have a network connection.

Friday, 25 July 2014

Things to remeber while testing iOS apps !!!

Anyone can test the app but it takes smart testers to get smart product. When testing an iOS app, do remember the following things and be a smart tester ;)

 

Critical:

  • OTA install --- The Application must install OTA(On the Air) to the device.
  • Uninstall App --- The Application must uninstall from the device and all the related resources should be deleted.
  • Extra Code Download --- The Application must not download extra code.
  • File System-Memory during run --- Ensure that the Application correctly handles out of memory exceptions during Application execution (This case is applicable only to the application that writes to file system).
  • Multiple Launch --- Suspend and re-launch of the application is handled correctly.
  • Idle ---The application recovers from an idle state correctly.
  • Cancel Lengthy Operation --The application allows the user to cancel any lengthy operations.
  • Network connectivity-Network delays and the loss of connection --- When the Application uses network capabilities, it must be able to handle network delays and any loss of connection.
  • Network connectivity-Airplane mode ---When the Application uses network capabilities, it must be able to handle the device being in Airplane mode.
  • Telephone call – incoming while application in use --- If the user accepts an incoming phone call while the Application is running, it should be possible to resume from the same point in the Application at the end of the call, or a logical re-starting point.
  • Suspend / resume from main menu --- Ensure that the Application suspends when at the Application main menu.
  • Resume --- Ensure that the Application resumes correctly.
  • Background Running Task --- When switched to run in the background, the application must not impact any system features or other applications unless designed to do so.
  • Suspend while executing --- Check for Suspend in the middle of Application execution --Application should suspend and resume correctly, and resume at a point that does not impair the user experience.
  • Scrolling in menus --- Contents should be scrollable.
  • Simultaneous key presses or multiple touch --- Ensure that the Application copes with simultaneous key presses or multiple touch.
  • Device Keys --- Ensure that native device keys function as expected.
  • Stability – Application stability --- The Application must not crash or freeze at any time while running on the device.
  • Stability– Application behaviour after forcible close by System --- Application must preserve sufficient state information to cope with forcible close by the system.
  • Save game state --- Ensure that the Application can save its game state/high score table information into persistent memory.
  • Data deletion --- The Application must indicate whether data will be permanently deleted or offer easy reversal of the deletion.
  • Modify Record --- Ensure that the Application can modify its game state/high score table information into persistent memory.
  • Encryption --- When connections are used encryption is used for sending / receiving sensitive data.
  • Passwords --- Passwords and sensitive data are not stored in the device and not echoed when entered into the App, sensitive data is always protected by password
  • App Metadata --- Ensure that the Application metadata complies with the platform requirements.
  • Privacy Policy --- The app must state and comply with a Privacy Policy and Privacy best practice.
  • Location Permissions --- The app must ask for permission to use location data.

Warnings:

  • Interruptions --- Check that the application continues to function through interruptions.
  • Readability --- Ensure that the application content is readable.
  • UI – Read time --- Comfortable time for content reading.
  • UI – Screen repainting --- Correct screen repainting. For example after dismissing an alert or popovers.
  • UI-Consistency -- The Application UI should be consistent and understandable throughout.
  • UI-Application speed --- The Application works in the device it was targeted for,and it is usable on the device: the speed of the Application is acceptable to the purpose of the Application and must not alter the user experience by being uncontrollable
  • UI–Error messages --- Any error messages in the Application must be clearly understandable.  Error messages must clearly explain to a user the nature of the problem, and indicate what action needs to be taken (where appropriate),it should not display technical terms and should be understandable by general public.
  • UI–Function progress ---Visual indication of the function execution progress. (Any function selected in the Application should start within 5 seconds. There must be some visual indication that the function is being performed).
  • UI-Multiple Display Format Handling --- Where the device and Application can display in multiple formats (e.g. portrait / landscape, internal / external display), the elements of the application should be correctly formatted in all display environments.
  • UI–Differing screen sizes ---Where the application is designed to work on multiple devices it must be able to display correctly on differing screen sizes.
  • UI-Spelling errors --- The Application must be free of spelling errors.
  • UI-Technical text errors ---  The text in the Application must be clear and readable. The Application must be free of technical text display issues such as: Text cut off / Text overlapping.
  • Language–Correct operation --- Ensure that the Application works correctly with all appropriate languages.
  • Language–Supported formats --- Ensure that the Application supports all date/time/numeric/currency features for supported languages.
  • Restore Device settings on exit --- Check that app does not permanently change any settings on the device.
  • Saving settings ---Ensure that the Application saves all settings on exit.
  • Help & About items ---The Application should contain Help & About.
  • Network Performance --- The app must not use excessive network resources.
  • Battery Performance --- The app must not drain the battery unduly.
  • In-app Purchase --- The app must comply with store rules for in - app purchase.
  • In-app Adverts --- The app must comply with advertising usage practice.
  • In-app subscription and rental ---The app must comply with store rules on subscription and rental models.

Thursday, 24 July 2014

What is Android Logging System and where the logs are saved in Android

Overview of Android Logging System:

What is Android Logging System?
  • Provide a mechanism for collecting and viewing system debug output.
  •  Logs from various applications and portions of the system are collected in a series of circular buffers, which then can be viewed and filtered by the logcat command.
Android Logging System
Introduction: 

The logging system consists of a kernel driver and kernel buffers for storing log messages:
  • HoneycombMR2Src/kernel/drivers/staging/android/logger.c
  • Create “/dev/log” folder in handle_device_event() of AndroidSrc/system/core/init/devices.c 
C/C++/Java APIs and classes: 
  • For making log messages
  • For accessing the log messages
logcat, the command for viewing log messages  AndroidSrc/system/core/logcat/
Ability to view and filter the log messages from the host machine (via Eclipse-ADT or DDMS)

Log device files
4 channels, each have a Ring/Circular Buffer:
  • /dev/log/radio – radio&phone-related messages (64KB)
  • /dev/log/events – system/hardware events (256KB)
  • /dev/log/system –framwork or low-level system messages (64KB)
  • /dev/log/main – everything else (64KB)
The maximum log message size of each channel is specified in kernel driver(logger.c)
File permission of each(radio/events/system/main) is 0662 (rw-rw-w)