Saturday, February 23, 2013

Some Lucid Explanations of Common Terms in Software Engineering


1. API : Application Programming Interface
• An API is a set of libraries, protocols or functions which are used as an interface to make two or more software modules interact with each other. In other words an APIs is a set of specification for using a software service provided by its vendor.
• For example, we have Java APIs, .NET APIs etc. There are also Web APIs, which are used in web development, are in the form of HTTP request messages to communicate with software on a remote server. For example, we have Facebook Application Platform, Twitter APIs and the popular Web2.0 APIs. Other example is OpenGL APIs which can be used for cross platform graphics creation.


2. Plugins :
• Plugins are relatively smaller software modules which add a specific functionality to a bigger software system. As a simple example, there are a lot of plugins provided by independent developers for providing various features for Google Chrome.
• With plugins, features of software can be enhanced without changing the complete system, as these components are compatible to work with the larger module. We have J2EE plugins available for Eclipse Galileo with just core Java support.
• Plugins are very popular with web browsers but they make also be made for desktop applications. For example, we have a PDF generator plugin available to be used with MS Office.

3. Plugin Vs APIs :
• APIs and plugins are two different things. We use APIs of software to make plugins for it. APIs allow third party vendors to create plugins for software. Facebook, Twitter etc. make available their API specification so that independent third party developers can make use of their platform and develop applications over it.

4. Framework :
• A software framework is a reusable software platform including support libraries, APIs, compilers and programs, which together enhance and expedite the process of software generation. In an application framework, the framework provides the standard structure to the application and the developer has to concentrate on the business logic only. Most popular software frameworks for creating Java applications are Netbeans and Eclipse. Spring is the most popular application development framework for enterprise Java.
• The most important advantage of a framework is the inversion of control from user to the framework. In it, the program flow is guided by the framework and not the coder whereas when we use pure libraries we have to decide the program flow ourselves. A framework also provides a default behavior which is the preset of all the options, fixed so as to give the most favorable environment to the developer.
• The aim of a framework is to let the developer focus on the software requirement and do all other menial tasks.
• Some disadvantages of using frameworks are that they may be difficult to understand. Using a framework also results in code bloat.

5. Runtime Environment v/s Framework :
• A runtime environment is required by a program to execute. It is a set of instructions inserted into the executable image by the compiler.
• Runtime environment manages the processor stack, space for local variables, copy function call parameter onto the top of the stack.
• It is the execution model of a language.
• A framework is entirely different from a runtime environment but may include one. Framework is an optional development tool that helps in software generation while a runtime environment is necessary to execute the software.

6. Cloud Computing v/s Grid Computing :
• Cloud computing is on-demand service such as a software, platform or infrastructure operated over internet.
• Grid computing is a term for collaborating resources to perform a particular task by leveraging distributed and parallel computing. The processing units are loosely coupled ( unlike the legacy cluster computing ), disparate or distributed location wise.
• Cloud computing service is metered and thus cost effective. The client need not worry about licenses, updates, configuration etc. depending upon what he is availing from the vendor. Eg. EC2, S3, Cloud Foundry, Salesforce.com etc. • Cloud computing may implement grid computing as its processing power.
• Both cloud computing and grid computing are scalable.
• Grid computing need to use software to shell out a huge task to several processing units where as in Cloud Computing (SaaS) the client need not worry about any such software as all of it is taken care of by the vendor.

1 comment: