Once I started learning about App Testing, it was nearly impossible without learning the basics of Custom Software Development. In the fragmented world of Apps, a tester also need to understand all the components put together for Custom Software Development. As I started, the first bottleneck was in understanding the different offerings – Android SDK, XCode, APK, Android API, IntelliJ, Eclipse, Cocoa Touch, .NET Framework, blah blah blah…Yeah I know that’s a lot to confuse Let’s have a look…
What is the first thing that you will need for Custom Software Development? Yeah, a text editor. But text editor doesn’t offer any other advantage like auto-correction, intelligent code completion or form designers. Here comes an IDE – Integrated Development Environment – a text editor with additional support for developing, compiling and debugging applications.
As per simple English terminology – A library is a collection of sources of information and similar resources, made accessible to a defined community for reference or borrowing.
Now put that definition in the Custom Software Development context – What will be the collection of information? And why will a developer use it for reference? The basic building block of any application is its “Code”, and there are certain functionalities that any programmer needs to use repeatedly – then why to code it every time for different applications? That’s where a ‘Library’ comes to a rescue – a chunk of pre-defined code (a collection) that you can call (use for reference) from your own code, to help you do things (similar functionality) more quickly/easily.
E.g. junit.jar, log4j.jar
Let’s go by the English terminology first – A basic structure underlying a system, concept, or text. Taking clue from Library above, what can be the structure underlying a software? Yeah! A collection of different libraries put together to provide a set of general re-usable code which can then be customized for a particular application.
Unlike English, not everything in this ‘Library’ is accessible directly. There will be back-end code to support the front-end code which needs to be accessible to programmers for Custom Software Development. Now how do a programmer access this front-end code? Yeah, the API – the Interface to Library.
An API (Application Programming Interface) are the functions/methods (the front-end code) in a library that you can call to ask it to do things for you – the interface to the library.
SDK for Custom Software Development
We have different Mobile Operating Systems and Programming languages. For Custom Software Development, you need a Text Editor (IDE), different Libraries (of Code), an Interface to Library (API), and a Compiler (to check code), and many more components…
What if you get all this packaged (and much more than that like testing tools, sample codes, plugins, etc.) as a kit, for certain software package, software framework, hardware platform, computer system, video game console, operating system (like Android or iOS), or similar development platform? Yeah, that’s what an SDK (Software Development Kit) is!
In the context of Android Development:
- IDE: JetBrains IntelliJ
- Library: library (Class with all code)
- API: Android API to interact with hardware, like the front camera of an Android-based device. If your app needs to vibrate the phone, you must use the Android API method like vibratePhone()
- SDK: The Android Studio (additional tools like DDMS, Emulator, ADB, etc.)
Hope I have covered few essential components of Custom Software Development in this post. Would love to hear from you about others which I missed…