Documente Academic
Documente Profesional
Documente Cultură
Methodology
3.1 Introduction
Methodology refers to a discussion of the underlying reasoning why particular ways of
doing things (methods) were used. It includes describing the theoretical concepts that
inform the choice of methods to be applied, placing the choice of methods within the
more general nature of academic work, and reviewing its relevance to examining the
research problem( Bryman Alan, 2008). Several methodologies exist and it is prudent to
critically analyze each particular one before implementing use in any
project.Methodologies also continue to experience a morph in structure due to varying
reasons e.g. A change in the user or business requirements, a change in technology used
or due to the possible limitations that may exist in existing methodologies.
Designing a product to fulfill the requirements of the user based on the different standard
development life-cycle models is a crucial aspect of the development process. A predefined development process is of essence. The development life-cycle might be
impacted if the development occurs incrementally. If the customer is engaged in the
development process,customer requirements are better implemented by the end of the
development process leading to better customer satisfaction (Jamwall, 2010). Waterfall
model, Spiral model, Iterative model and Prototyping model are some of the software
development life-cycle models widely used in the industry. There is need to have a
distinct mobile application development life-cycle model.The successful development of
mobile applications is challenged by several development and deployment
landmines,rapidly emerging standards, volatile platforms,intermittent connections, varied
devices, and inconsistent user-interface and input technology.Unfortunately, not only does
the infrastructure pose a threat to successful deployment, the sheer
volume of potential users and growing demand for accelerated delivery exacerbates
potential risks. To keep development costs down and ensure high quality software,we
must approach software development with a commitment to internal efficiency. As a
result, many of todays most successful mobile application vendors have transitioned to
iterative and incremental delivery methods just to keep up with the rapid pace and
constant change inherent in the industry (Holler, 2006). Software development for mobile
platforms comes with unique features and constraints that apply to most of the life-cycle
stages. The development environment and the technologies that support the software are
different compared to traditional settings. The most important distinguishing
characteristics are identified in (Abrahamsson, et al, 2004). Environment particularities
include a high level of competitiveness, necessarily short time to delivery, and added
difficulty in identifying stakeholders and their requirements. Development teams must
face the challenge of a dynamic environment, with frequent modifications in customer
needs and expectations. Technological constraints apply to mobile platforms in the
form of limited physical resources and rapidly changing specifications. There is also a
great variety of devices, each with particular hardware,firmware and operating system
characteristics.Another view of the constraints associated with mobile applications is
presented in (Hayes, 2003). The author mentions two types of constraints, evolving and
inherent. Evolving constraints, such as bandwidth, coverage and security, currently apply
to the mobile technology, but are likely to be addressed and possibly resolved in the near
future. On the other hand,inherent constraints such as limited screen real estate, reduced
data entry capability (due to a limited keypad for example), memory capacity, processing
power and limited power reserve, are permanent, at least relative to desktop
environments. Various approaches must be used in order to lower the impact of inherent
constraints.In this paper we looked at some of the pertinent methodologies in use today so
as to assist us to come up with the most appropriate project.
The core practices of Extreme Programming can be grouped into four areas or 12
practices(Kent Beck,1999) as follows:
1. Fine scale feedback
Planning game
Whole team
Pair programming
2. Continuous process as opposed to batch
Continuous Integration
Design Improvement
Small Releases
3.
Shared understanding
Simple design
System metaphor
Collective code ownership
Coding standards or coding conventions
4. Programmer welfare
Sustainable pace (i.e. forty hour week)
A set of corollary practices are listed in addition to the primary practices(Kent Beck et al ,
2004).The core practices are derived from generally accepted best practices, and are
taken to extremes:
Simple code is more likely to work. Therefore, extreme programmers only write
code to meet actual needs at the present time in a project, and go to some lengths
to reduce complexity and duplication in their code.
Code reviews are good. Therefore XP programmers work in pairs, sharing one
screen and keyboard (which also improves communication) so that all code is
reviewed as it is written.
Testing code is good. Therefore, in XP, tests are written before the code is
written. The code is considered complete when it passes the tests (but then it
needs refactoring to remove complexity). The system is periodically, or
immediately tested using all pre-existing automated tests to assure that it works.
See test-driven development.
It used to be thought that Extreme Programming could only work in small teams of fewer
than 12 persons. However, XP has been used successfully on teams of over a hundred
developers.
Process steps should be logical and their worth immediately obvious to each team
member.
Good processes move to the background so team members can focus on results.
FDD addresses the items above (numbers in brackets indicate the project time spent):
1. Develop an overall model (10 percent initial, 4 percent ongoing)
2. Build a features list (4 percent initial, 1 percent ongoing)
3. Plan by feature (2 percent initial, 2 percent ongoing)
4. Design by feature
stable requirements and plan. The process, infrastructure and development are described
in detail. As RUP emphasizes tool automation, the support for it is also established in the
elaboration phase. After the phase, most use cases and all actors have been identified and
described, the software architecture described, and an executable prototype of the
architecture created. At the end of the elaboration phase, an analysis is made to determine
the realization of risks, the stability of the vision of what the product is to become, the
stability of the architecture and the expenditure of resources versus what was initially
planned.In the construction phase, all remaining components and application features are
developed and integrated into product and tested. RUP considers the construction and a
manufacturing process, where emphasis is put on managing resources and controlling
costs, schedules and quality. The results of the construction phase, before proceeding to
the final, transition phase.The transition phase is entered when the software product is
mature enough to be released to the user community. Based on user response, subsequent
releases are made to correct any outstanding problems or to finish any postponed
features. The transition phase consists of beta testing, piloting, training the users and
maintainers of the system, and rolling the product out to marketing, distribution and sales
teams. Several iterations are often made with beta and general availability releases. User
documentation is also produced (manuals)
3.3.5 Mobile D
This is a relatively new approach to mobile development, dubbed Mobile-D. The
methods purpose is to establish a functional, agile archetype for software development.
Its also useful in other applications, such as financial or logistical applications.It
comprises of 9 components enmeshed within the various methods associated with the
cycle of development:
1) Phasing and Placing
2) Architecture Line
3) Mobile Test-Driven Development
4) Continuous Integration
5) Pair Programming
6) Metrics
7) Agile Software Process Improvement
8) Off-Site Customer
9) User-Centered Focus
Mobile-D aims towards product delivery within 10 weeks. It grounds itself in agile
development practices, which All About Agile reports focus on trusting the judgment of
the team, communication with customers, quick turnaround on products, and frequent
testing during the projects life-cycle.Theres a crucial importance placed on team
cohesiveness, harmony, and confidence in each other. Because a close knit, committed
team is required, small teams of no more than ten members are suitable for MobileD.Communication is crucial within the team and vertically throughout the
organization.Being one of the most challenging tasks, communication often determines
the success of the project in general.Continuous interaction and communication with
customers allows project managers to discern priceless information on the target market
and its needs. This area presents unique challenges as the customer base isnt always
willing to cooperate, communicate or provide relevant insights.
The Mobile-D process comprises of 5 phases:
1) Explore
In the first phase, a strategy and the projects components are determined by the
development team. Three stages are required to complete this phase:
Stakeholder establishment
Scope definition
Project establishment
The team will complete tasks specific to this phase such as determining which customers
will take an operative role in the process of development.
2)
Initialize
The team meets with active stakeholders to understand the product and assemble crucial
assets, such as communications, technological and physical resources, to commence with
production activities. The three stages involved in this phase are:
Project set-up
Initial planning
Trial day
3) Production
The majority of implementation takes place and should be completed during this phase.
Planning days, working days, and release days are the structural driving force behind this
phase.
Planning days: Planning days are aimed at enhancing the development process,
prioritizing and analyzing requirements, planning the iteration content, and creating
acceptable tests that will be run later in release days.
Working days: During working days, functionality is implemented using the TestDriven Development (TDD) practice.
Release Days: Release days are spent creating a working prototype which will be
certified through acceptance testing.
4) Stabilize
During the stabilization phase, product finalization occurs. This may encompass fine
tuning and modifications, or in a multi-team project ,integrating subsystems if needed.
5)
As its name implies, this phase involves testing the product and ties in closely with the
fourth phase, stabilization. Stabilization and system test & fix may continue to cycle until
the product meets expectations and client requirements are met.
3.4 Influence of software development methodologies on mobile systems
(Corral et al,2013)
(Corral et al, 2013) discuss the suitability of Agile methods to fit the mobile needs, the
contribution of Agile methods to implement mobile products, the real use of the proposed
methodologies and the rise of new conditions that challenge some of the premises upon
which the proposed methodologies were designed. Agile practices allow adapting
processes and practices to the unsteady needs of the mobile domain. They also provide
flexibility to understand the market, structure the product and release it short time frames.
Agile practices may suit the business needs of the mobile environment, but fall short on
providing an implementation framework for the mobile product this is because great
focus is on the what and less on the how.Agile methods represent a relatively new
approach to software development, becoming widespread in the last decade. The ideas
behind these methods originate from the principles of Lean Manufacturing (in the 1940s)
and Agile Manufacturing (1990s), which emphasized the adaptability of enterprises to a
dynamic environment (Salo, 2006). The unique features of agile methods derive from the
list of principles found in the Agile Manifesto. It states that individuals and interactions
are more important than processes and tools, working software is more valuable than
comprehensive documentation, customer collaboration is preferred over contract
negotiation, and adaptability is valued higher than creating and following a plan (Agile
Alliance, 2001).When trying to compare mobile application characteristics to those of an
agile method, difficulty
comes partly from the fact that boundaries of agile methodologies are not clearly
established. A comprehensive overview of research in the field is presented in (Dyba and
Dingsoyr, 2009). The authors partition studies into four categories. These categories are
introduction and adaptation,human and social factors, perception of agile methods, and
comparative studies. Findings indicate that the introduction of agile methods to software
projects yields benefits, especially if agile practices do not completely replace traditional
ones, but work together with them.However, according to the authors, studies in the field
are mostly focused on Extreme Programming (XP), are limited in number and are of
doubtful quality. In (Abrahamsson, 2005),the author compares between agile method
characteristics and mobile application features,focusing on environment volatility,
amount of documentation produced, amount of planning involved, size of the
development team, scale of the application in-development, customer identification, and
object orientation. Except customer identification, all other agile characteristics render
the methods suitable for mobile application development. The customer may be identified
as the software distributor. However, especially in the case of mobile applications, the
customer identification problem is much more complex.
3.5 Chosen Methodology
In this project the chosen software development methodology is Rational Unified
Process(RUP) and the chosen research methodology is Build methodology. The
development method chosen depends largely on one key factor, the clarity of the user
requirements.RUP represents an iterative approach that is superior for a number of
reasons:
It lets you take into account changing requirements which despite the best efforts
of all project managers are still a reality on just about every project.
Integration is not one big bang at the end; instead, elements are integrated
progressively.
Risks are usually discovered or addressed during integration. With the iterative
approach, you can mitigate risks earlier.
Iteration facilitates reuse; it is easier to identify common parts as they are partially
designed or implemented than to recognize them during planning.
When you can correct errors over several iterations, the result is a more robust
architecture. Performance bottlenecks are discovered at a time when they can still
be addressed, instead of creating panic on the eve of delivery.
Developers can learn along the way, and their various abilities and specialties are
more fully employed during the entire life-cycle. Testers start testing early,
technical writers begin writing early, and so on.
The development process itself can be improved and refined along the way. The
assessment at the end of iteration not only looks at the status of the project from a
product or schedule perspective, but also analyzes what should be changed in the
organization and in the process to make it perform better in the next iteration.
Android Studio is the official IDE for Android application development, based on IntelliJ
IDEA.On top of the capabilities you expect from IntelliJ, Android Studio offers: flexible
gradle-based build system, build variants and multiple apk file generation, code templates
to help you build common app features, rich layout editor with support for drag and drop
theme editing and much more.
The main benefits of using an Apache web server include its long history of reliability
and performance,mass adoption means there is a LOT of documentation out there and it
is very easy to get help with any trouble you might run in to,It is free and commercial
friendly(no licensing fees or costs),it will run on pretty much any OS (Linux, Windows
and MacOS),it is actively maintained and it is one of the most feature rich web servers
available.
3.7 Conclusion
In order to obtain a set of improvements to a given development methodology, one must
first analyze the key method characteristics that have yielded successful results in
previous projects.For mobile application development methods, key success
characteristics are identified in (Rahimian and Ramsin, 2008). These are agility of the
approach, market consciousness, software product line support, architecture-based
development, support for re-usability, inclusion of review and learning sessions, and early
specification of physical architecture.