You are on page 1of 16


Android is a mobile operating system (OS) based on the Linux kernel and currently developed
by Google. With an interface based on direct manipulation, Android is designed primarily
for touch screen mobile devices such as smart phone and tablet computers, with specialized user
interfaces for televisions (Android TV), cars (Android Auto), and wrist watches (Android Wear).
The OS uses touch inputs that loosely correspond to real-world actions, like swiping, tapping,
pinching, and reverse pinching to manipulate on-screen objects, and a virtual keyboard. Despite
being primarily designed for touch screen input, it also has been used in game consoles, digital
cameras, regular PCs (e.g. the HP Slate 21) and other electronics.
Android's source code is released by Google under open source licenses, although most
Android devices ultimately ship with a combination of open source and proprietary
software. Initially developed by Android, Inc., which Google backed financially and later bought
in 2005, Android was unveiled in 2007 along with the founding of the Open Handset Alliance—a
consortium of hardware, software, and telecommunication companies devoted to advancing open
standards for mobile devices.
Android is popular with technology companies which require a ready-made, low-cost and
customizable operating system for high-tech devices. Android's open nature has encouraged a
large community of developers and enthusiasts to use the open-source code as a foundation for
community-driven projects, which add new features for advanced users or bring Android to
devices which were officially, released running other operating systems. The operating system's
success has made it a target for patent.

2.1 History

The early intentions of the company were to develop an advanced operating system for digital
cameras, when it was realized that the market for the devices was not large enough, and diverted
their efforts to producing a smartphone operating system to rival those of Symbian and Windows
Mobile. Despite the past accomplishments of the founders and early employees, Android Inc.
operated secretly, revealing only that it was working on software for mobile phones. That same

which can be acquired by users by downloading and installing the application's APK file. usually the Nexus series of devices. wrapped in a native application shell. 2. or by downloading them using an application store program that allows users to install. The officially supported integrated development environment (IDE) is Eclipse using the Android Development Tools (ADT) plug-in. In January 2014. and various cross platform mobile web applications frameworks. Other development tools are available.000 in cash in an envelope and refused a stake in the company. Android has a growing selection of third-party applications. including a debugger. Google App Inventor. and remove applications from their devices. Google Play Store allows users to browse. The source code . a close friend of Rubin. including a Native Development Kit for applications or extensions in C or C++. download and update applications published by Google and third-party developers.2 Application Applications ("apps"). Rubin ran out of money. a visual environment for novice programmers.3 Development Android is developed in private by Google until the latest changes and updates are ready to be released. Steve Perlman. and tutorials.year. Google unveiled an Apache Cordova–based framework for porting Chrome HTML 5 applications to Android. software libraries. Google Play Store is the primary application store installed on Android devices that comply with Google's compatibility requirements and license the Google Mobile Services software. are developed primarily in the Java programming language using the Android software development kit (SDK). sample code. The SDK includes a comprehensive set of development tools. at which point the source code is made available publicly. a handset emulator based on QEMU. that extend the functionality of devices. brought him $10. update. This source code will only run without modification on select devices. documentation. 2.

The design team was tasked with a project to create a universally identifiable icon with the specific inclusion of a robot in the final design. or Android's JUnit extensions to test Android components. is. After numerous design developments based on science-fiction and space movies.4. it was agreed that the logo should be likewise. you can start with general-purpose test case classes such as AndroidTestCase and then go on to use more sophisticated classes. 2. the SDK tools help you set up and run your tests within an emulator or the device you are targeting. As Android is open- sourced. Android's source code does not contain the often proprietary device drivers that are needed for certain hardware components. Whether you are working in Eclipse with ADT or working from the command line. You can use plain JUnit to test a class that doesn't call the Android API. . an integral part of the development environment. The testing framework has these key features:  Android test suites are based on JUnit. the team eventually sought inspiration from the human symbol on restroom doors and modified the figure into a robot shape. If you're new to Android testing.1 Testing Fundamentals The Android testing framework. in turn.4Testing The Android framework includes an integrated testing framework that helps you test all aspects of your application and the SDK tools include tools for setting up and running test applications. adapted by OEMs to run on their hardware. The green Android logo was designed for Google in 2007 by graphic designer Irina Blok. and since its launch the green logo has been reinterpreted into countless variations on the original design. provides architecture and powerful tools that help you test every aspect of your application at every level from unit to framework. 2.

These classes provide helper methods for creating mock objects and methods that help you control the lifecycle of a component. This document describes the fundamentals of the Android testing framework.  The SDK also provides monkey runner.  The SDK tools for building and tests are available in Eclipse with ADT. so you don't need to learn a new set of tools or techniques for designing and building tests. The document assumes you have a basic knowledge of Android application programming and JUnit testing methodology. These tools get information from the project of the application under test and use this information to automatically create the build files. an API for testing devices with Python programs. a command-line tool for stress-testing UIs by sending pseudo-random events to a device. manifest file. and UI/Application Exerciser Monkey. the APIs that you use to develop tests. including the structure of tests. The Android JUnit extensions provide component-specific test case classes. and directory structure for the test package. and also in command-line form for use with other IDEs. and the tools that you use to run tests and view results. The following diagram summarizes the testing framework: .  Test suites are contained in test packages that are similar to main application packages.

It was developed by Google. There are around 200000 applications developed for android with over 3 .0 lack+ games. and download applications developed by third party developers and use them. Wi-fi  Camera. Compass etc. Some of the current features and specifications of android are:  Application Framework (It enables reuse and replacements of components)  Dalvik Virtual machine (It is optimized for mobile device)  Integrated Browser (It is based on the Open Source Web kit Engine)  Optimized Graphics  SQLite  Media support  GSM technology  Bluetooth. application and widgets available on the market for users.1: Testing Framework in Android 2. GPS. There are around 2. Android is available as open source for developers to develop applications which can be further used for selling in android market.5 Features & Specifications Android is a powerful Operating System supporting a large number of applications in Smart Phones. Android comes with an Android market which is an online software store. Hardware that supports Android are mainly based on ARM architecture platform. Android applications are written in java programming language. It allows Android users to select. EDGE. These applications make life more comfortable and advanced for the users. Figure 2.

validation. elaboration. Android relies on Linux version 2. Read more about open source software. memory management. assessing feasibility. and defined to a level of detail sufficient for system design. encompasses those tasks that go into determining the needs or conditions to meet for a new or altered product. validating the specification. It encompasses seven distinct tasks: inception. and driver model. testable. analyzing need. network stack. such as beneficiaries or users. Chapter 3 REQUIREMENT ANALYSIS AND DESIGN Requirements engineering provides the appropriate mechanism for understanding what the customer wants.billion+ downloads. Requirements analysis in systems engineering and software engineering. elicitation. Requirements can be functional and non-functional. related to identified business needs or opportunities. For software development. and management. taking account of the possibly conflicting requirements of the various stakeholders. and managing the requirements as they are transformed into an operational system. . Requirements analysis is critical to the success of a development project.6 for core system services such as security. Requirements analysis is the first stage in the systems engineering process and software development process. measurable. Android provides Android SDK (Software development kit). It is important to note that some of these tasks occur in parallel and all are adapted to the needs of the project. negotiating a reasonable solution. negotiation. Requirements must be actionable. process management. specification. specifying the solution unambiguously.

 This application was also developed in phases for effective output.  Operation and maintenance for use and to ensure its availability to users. 3. Each phase was given its due importance with respect to time and cost.  Testing for verifying and validating the objective of the product. but also a detail study of the system to identify current requirements related to software development as well as to anticipate the future requirements.  Coding (implementation) for writing program as per the suggested solution. a software product completes a cycle from its inception to obsolescence/replacement/wearing out. The system development life cycle of Project Management Information System is shown below.  Software design for planning the solution of the problem. .1 Software Engineering Paradigm Used Like any other product. It also needs to meet the objective of low cost. The process of software development not only needs writing the program and maintains it.  Requirement analysis and specification for clear understanding of the problem. and good quality along with minimum development time.

the risks that are likely. A generic process framework for software engineering encompasses five activities:  Communication: Before any technical work can commence. objectives for the project and to gather requirements that help define software features and functions. and a work schedule.2 The Software Process A process is a collection of activities. Figure 3. The map called a software project plan-defines the software engineering work by describing the technical tasks to be conducted. or degree of rigor with which software engineering is to be applied. size of project. A task focuses on small but well defined objective that produces tangible outcomes. regardless of their size or complexity.1: Life cycle of Project Management Information System 3. and tasks that are performed when some work product is to be created. and the planning activity creates a "map" that helps guide the team as it makes the journey. the work products to be produced. actions. The intent is always to deliver software in a timely manner and with sufficient quality to satisfy those who have sponsored its creation and thosewho will use it. And is applied regardless of application domain. A software project is a complicated journey. The intent is to understand stakeholders. In the context of software engineering a process is not a rigid prescription for how to build computer software rather it is an adaptable approach that enables the people doing the work (the software team) to pick and choose the appropriate set of Work actions and tasks. it is critically important to communicate and collaborate with the customer (and other stakeholders. An action encompasses a set of tasks that produces a major work product. In addition. A process framework establishes the foundation for a complete software engineering process by identifying a small number of framework activities that are applicable to all software projects. .  Planning: Any complicated journey can be simplified if a map exists. complexity of effort. An activity strives t o achieve a broad objective. the process framework encompasses a set of umbrella activities that are applicable across the entire software process. the resources that will be required.

the linear sequential model encompasses the following activities. beginning with communication and culminating with deployment. and many other characteristics. Modeled after a conventional engineering cycle.1 System/Information Engineering and Modelling Because software is always part of a larger system (or business). and support. The details of the software process will be quite different in each case. work begins by establishing requirements for all system elements and then allocating some subset of these requirements to .  Construction: This activity combines code generation (either manual or automated) and the testing that is required for uncovering errors in the code.3. how the constituent parts fit together. simple programs.3 illustrates the linear sequential model for software engineering. and for the engineering of large. coding. but the framework activities remain the same.  Deployment: The software (as a complete entity or as a partially completed increment) is delivered to the customer who evaluates the delivered product and provides feedback based on the evaluation. testing. If required. 3. Figure 2. These five generic framework activities can be used during the development of smal1. sequential approach to software development that begins at the system level and progresses through analysis. a bridge builder. the linear sequential model suggests a systematic. design. You create a "sketch" of the thing so that you'll understand the big picture-what it will look like architecturally. an aeronautical engineer. complex computer-based systems.3 The Linear Sequential Model/ Software Development Life Cycle (SDLC) Sometimes called the classic life cycle or the waterfall model or software development life cycle (SDLC). or an architect. 3. a carpenter. A linear process flow executes each of the five framework activities in sequence. A software engineer does the same thing by creating models to better understand software requirements and the design that will achieve those requirements. Modelling: Whether you're a landscaper. you refine the sketch into greater and greater detail in an effort to better understand the problem and how you’re going to solve it. the creation of large web applications. you work with models every day.

3. and operating procedures are tested to determine if they are fit for use. conducting tests to uncover errors and ensure that defined input will produce actual results that agree with required results. program testing begins.3 Code generation The design must be translated into a machine-readable form. unit testing is a method by which individual units of source code.3. Change will occur because errors have been encountered. and procedural (algorithmic) detail. that is. 3. and databases.5 Support Software will undoubtedly undergo change after it is delivered to the customer (a possible exception is embedded software).2: Linear sequential models 3. . sets of one or more computer program modules together with associated control data.4 Testing Once code has been generated. 3. The testing process focuses on the logical internals of the software. The code generation step performs this task.g.2 Design Software design is actually a multistep process that focuses on four distinct attributes of a program: data structure. ensuring that all statements have been tested. Like requirements. usage procedures.3. Information engineering encompasses requirements gathering at the strategic business level and at the business area level. In computer programming. If design is performed in a detailed manner.. interface representations. This system view is essential when software must interact with other elements such as hardware. and on the functional externals. The design process translates requirements into a representation of the software that can be assessed for quality before coding begins. people. software architecture. code generation can be accomplished mechanistically. Figure 3.3. because the software must be adapted to accommodate changes in its external environment ( 3. System engineering and analysis encompass requirements gathering at the system level with a small amount of top level design and analysis. the design is documented and becomes part of the software configuration.

this hardware-oriented model was simply adapted for software development. if not impossible. there are many specific software development processes that 'fit' the spiral life-cycle model. There are several models for such processes. It is often considered a subset of systems development life cycle. For example. Since no formal software development methodologies existed at the time. each describing approaches to a variety of tasks or activities that take place during the process.The phases are always in order and are never overlapped. tools and techniques used to develop software.a change required because of a new operating system or peripheral device). Similar terms include software life cycle and software process. The phases are always in order and are never overlapped. It aims to be the standard that defines all the tasks required for developing and maintaining software. is a structure imposed on the development of a software product.. or because the customer requires functional or performance enhancements. A software development process model is a description of the work practices. Some people consider a life-cycle model a more general term and a software development process a more specific term.4 Software Development Process Model A software development process. The waterfall model is the oldest paradigm for software engineering. Among the problems that are sometimes encountered when the waterfall model is applied are: . highly structured physical environments in which after-the-fact changes are prohibitively costly. also known as a software development life-cycle (SDLC). Software models serve as standards as well provide guidelines while developing software. 3. Software support/maintenance reapplies each of the preceding phases to an existing program rather than a new one. criticism of this process model has caused evenardent supporters to question its efficacy. over the past three decades. ISO/IEC 12207 is an international standard for software life-cycle processes. implementation. The phases are always in order and are never overlapped. 3. analysis.The waterfall development model originates in the manufacturing and construction industries. It is beneficial to one or more software development model while developing software.4. testing and maintenance.1 Waterfall Model It includes a sequential approach to software development. It includes phases like task definition. design. However.

The customer must have patience. can be disastrous. changes can cause confusion as the project team proceeds. Requirement Definition Requirement analysis and specification Design Implementation Testing and Maintenance . 2. It is often difficult for the customer to state all requirements explicitly. As a result. Real projects rarely follow the sequential flow that the model proposes. The waterfall model requires this and has difficulty accommodating the natural uncertainty that exists at the beginning of many projects. it does so indirectly. Although the linear model can accommodate iteration. A working version of the programs will not be available until late in the project time span. A major blunder. 3. 1. if undetected until the working program is reviewed.

AnalyDesigCodTt Figure 3.3: Waterfall Model Use Cases .

Activity Diagram: .