Friday, August 31, 2018

Native vs Hybrid Mobile Application Development

Native vs Hybrid Mobile Application Development

The smart phone segment is witnessing a very rapid growth in recent times. This is mainly due to its ease of use and seamless internet connectivity. Most of enterprises are having or building mobile interface for their web or desktop applications. Connected workforce adds productivity boost to many organizations. There are various technology options available to develop mobile apps. Most common technology decision is whether to go for “Native” development or “hybrid or cross platform” development. Here we have listed our understanding about the comparison between Native vs Hybrid mobile development technology.
In hybrid development, one gets started with the app development with the basic knowledge of web technologies like HTML, CSS and JavaScript. Whereas in native mobile development, developers need to learn separate languages to write apps for Apple iOS, Google Android or Windows phones.
End of the day, user experience is everything that matters to smart phones. Hybrid apps are believed to be less efficient compared to native apps and may negatively affect user experiences. There are several key differences in these two mobile apps development approaches:
Let’s go through some of the key features of these mobile apps development approaches:
  • User Experience – Native apps are uniform in terms of look and feel and consistent among other native apps of that device. Hybrid apps, in contrast, are developed for variety of mobile platforms that often leads to inconsistency in terms of platform specific UI standards.
  • Time to Market – It takes time to build a native app as one needs to develop separate app for each mobile platform. Hybrid app takes comparatively less time due to code portability across platforms.
  • Security and Performance – Native apps are developed for a specific mobile platform and have the advantage of faster performance and are more secure. Native apps are considered better in the long run compared to its hybrid counterpart, in spite of higher investments.
  • IONIC is one of the most promising HTML 5 mobile application frameworks which is easier to build and maintain. Sencha Touch, is another enterprise-grade hybrid development framework for cross-platform web apps, used with HTML 5 and JavaScript. Intel XDK is an excellent cross platform framework from Intel which is free and available for Linux, Windows and Mac based hybrid app developments.
  • The iOS Software Development Kit (SDK) is one of the most popular native frameworks that contains all the tools and interfaces needed to develop a native iOS app. In Android, CoronaSDK is a popular framework among the beginners, or those who want a quick fire development. For Windows application development, .NET Native framework is used alongside Visual Studio 2015.
To summarize, the decision to employ one will entirely depend upon the available time and user requirement. Both native and hybrid can serve the purpose. If time is a non-issue then it makes sense to go the native way as they are better in performance, secure and optimizes users’ experiences. On the other hand, a good hybrid app developer can also get you closer to the native experience, across different platforms in a shorter time.
Since the performance of an app and its user experience is of paramount importance to the development path chosen, it seems the native approach turns out to be the winner in many cases. However, if you want a quick implementation across many platforms, go for the hybrid apps.
http://www.anarsolutions.com/native-vs-hybrid-mobile-development/?utm_source=Blogger.com

Tuesday, August 28, 2018

What is DevOps?

What is DevOps?

Rather than defining what is DevOps, let us being with what it is not. DevOps is not a job title. DevOps is neither a new technology nor a programming language. DevOps is not even a new software. The most apt answer would be that it is a phrase emphasizing on state of the art integration and collaboration between the software developers and other related IT professionals to ensure a smooth and highly efficient software delivery along with all the required infrastructure alterations.
A fast evolving culture in the IT world, it is a set of practices aimed at making the entire IT developing and testing environment much more reliable, fast and efficient. It involves application of a number of lean approaches to increase the efficiency of the entire service lifecycle, beginning from designing stage to the production support.

Why to incorporate DevOps?

Underperformance, delayed delivery and inefficient use of resources are some of the problems plaguing the IT industry for a long time now. Most IT enterprises suffer due to the presence of silos within the organization. Different sections work as individual entities, keeping a safe distance from each other and unnecessarily guarding processes and information from each other.
DevOps helps break this culture of isolation and ensures that the operations staff and developers communicate with each other effectively, ensuring best outcome of the product cycle and no hiccups. ‘Sharing’ and ‘together’ are the two keywords which are stressed heavily in the DevOps culture. One of the most significant features of DevOps is the detection and correction of product related issues, without passing on its impact to any of the related services.
It is easy to see a number of parallels between DevOps and Lean principles. In fact, it can be seen as outstretching of the Lean principles where lean methodologies are stretched to the entire product cycle. What sets DevOps apart from other emerging techniques is that it is not rigid on following textbook processes and set methodologies. Much of the thrust in DevOps is given to sharing, automation and measurement.
DevOps is far from being a completely developed culture. But there is a sense of excitement surrounding it, raising expectations of people from IT around the world. Developers and operation professionals working together, as DevOps envisages can be just the paradigm shift the world of IT is looking for.
http://www.anarsolutions.com/what-is-devops/?utm_source=Blogger.com

Friday, August 24, 2018

5 Tips to Improve Code Quality


There is a saying that quality is a free commodity provided one invests in improving it. The major problem with the legacy code is its brittleness. To avoid pains in maintaining such coding practices, we need to carefully focus on the coding quality; upgrading all the time in an attempt to get better every day. Here, let’s try to slowly delve into the key issues that help in the overall improvement of coding practices and its .
  • Continuous integration
This is a valuable practice to ensure there is no breaking of code between the old and new one. When combined with the above two practices it altogether raises the quality bar a notch higher.
  • Setting coding standards
Proper planning of coding standards and implementation among the developers can contribute significantly in improving coding quality. Once the code base grows in size, one needs to split it up in manageable sub-modules, to have a complete understanding and control over the complete project. Existing coding practices and standards may be modified and signed off – depending on the need to of project, at the time of project kick-off.
  • Static tool analysis
Refactoring of code is another way to improve quality and design. Java & C# developers are blessed with the tool that leads to frequent, quick and safe restructuring. Refactoring improves nonfunctional attributes of the software.
  • Unit test driven development
Among all the practices which contribute to better code quality and lesser bugs is this one. The main problem with the poor quality code is the difficulty to implement changes. And you must to design an effective and fast unit test suite for your code base to comply. Developers need training and guidance to implement and integrate this in their development cycle.
  • Acceptance test driven development
It is the next level after the above one. The acceptance criteria are decided before the start of any development so that they can be automatically executed. In most of cases testers need to sit with their customers to create rigorous test conditions to be applied to the code.
It is recommended that coding standards are to be inculcated slowly and naturally in the long run and should be automated wherever possible. In fact all or most of the suggestions discussed above should be automated in the long run to reduce time and money. It may cost initially but overall turn out be cheaper and efficient.
Summarizing, team cohesiveness is an important factor in the overall development objectives of designing good code. A new tech lead should not force out any technology overnight. The team and tech lead need to build trust and a rhythm to improve the overall code quality in a phased manner.
http://www.anarsolutions.com/5-tips-improve-code-quality/?utm_source=blogger.com

Tuesday, August 21, 2018

Enterprise Mobility

Enterprise Mobility

Enterprise mobility is what Internet was a couple of decades back for enterprise and its transitions in terms of technology and usage. It’s about making sure that all the investments that an enterprise has done in IT over the years is accessible to employees wherever they are. In the modern work environment, the employees are away from their desk most of the time. It’s a common trend to work from outside the office premises using mobile and cloud technology support.
mobility solutions

How it works:

Mobility of corporate data and is not just confined to mobile workers or devices. Enterprise mobility is the base foundation of the enterprise’s digital agenda; both inwards looking, targeted at employees and external, targeted at enterprise’s digital consumers. And of course, most importantly how it is executed. Think of a situation when an employee uploads a client presentation from the company computer to the cloud storage facility and then accesses it from any mobile device like a personal iPad to show it to the client at their place.
The above situation may improve employee productivity but at the same time it also involves security risks. A strong acceptable usage policy for the employees needs to be created that ultimately can contribute to a successful enterprise mobility management strategy.
Enterprise mobility focuses on two key issues:
  1. Business use of consumer mobile technology, where smartphone owners use their personal devices for enterprise-related activities, and
  2. Security, because sensitive enterprise data should not be compromised easily, which requires a set of systems intended to prevent unauthorized access to enterprise applications and/or corporate data on mobile devices.

Security issues:

Enterprise mobility is especially complicated for mobile application development companies and may involve anything from the latest smart phones or handheld devices to wireless services and newest computing architectures. The existing enterprise security solutions may not fit in all cases and keeping in sync with the latest trends in enterprise mobility without developing highly portable skill sets is a big challenge. Enterprise mobility management therefore involves people, processes and technology altogether, focusing on the following issues to manage mobile devices, networks, and other handheld computing services in a business context.
  • Proposed solutions include password protection, encryption and/or remote wipe technology.
  • Centrally managed and enforced security policies.
  • Programmed device management systems to support and cooperate with the application programming interfaces (APIs) from various device makers to increase security compliance.
  • Encrypted data transfer between mobile device and the enterprise through a VPN tunnel or over HTTPS with two-factor authentication.

Available solutions:

Keeping the above issues in mind, at AnAr Solutions we design and develop native and multi-platform enterprise mobility solutions across industry-prevalent operating systems by adopting various cross-platform frameworks like HTML5, JavaScript, Titanium, PhoneGap, JQueryMobile, etc.
  • We design mobile applications for various industry needs across multiple OS platforms like iOS, Android and Windows Mobile.
  • AnAr Solutions provide a wide experience in customized enterprise applications on Mobile that run with Cloud backend.
  • We expertise in responsive Mobile website development and Mobile UX/UI Design. We also offer Mobile Application Migration services to different platforms.
  • As enterprise mobility grows you need expensive Mobile Application Testing. We offer a comprehensive solution to ensure desired user experience and expected business value.
  • http://www.anarsolutions.com/enterprise-mobility/?utm_source=blogger.com

Friday, August 17, 2018

Provider Hosted Apps

Introduction for Provider Hosted Apps:

Provider Hosted App is one where the app is hosted outside of SharePoint. For Example, a server hosting IIS can host the app contents in a site. This is referred to as a remote web. This is more of a hybrid in that it can run a mix of both client and server side code. This high trust app model should be utilized when the situation either demands custom managed code or when a low-trust solution does not suffice.
Provider Hosted Application is very useful to re-use the existing .Net application with very minor changes and their hosting environment.

Comparison between SharePoint Hosted app and Provider Hosted Apps:

  • Provider hosted apps need to run some server side code which is not possible with a SharePoint hosted app.
  • If SAML Claims authentication provider is setup with ADFS 2.0. This isn’t compatible with SharePoint hosted apps so we must use Provider Hosted Apps.
provided hosted apps

When to create a provider-hosted app:

A provider-hosted app brings two very powerful tools: managed code and high trust. With managed code, the developer is free to use any programming language user deems fit for the task. However, the app model does not allow managed code to be installed directly on SharePoint. This seems like a deficit at first, but it is easily resolved by introducing an “app server” and hosting the code there.
If we require server-side managed code or some sort of context elevation, a provider-hosted could the correct choice.

Working Principle:

A provider-hosted app consists of two parts, the app for SharePoint and a website that contains the actual code, called the AppWeb.  Since the AppWeb is not actually part of SharePoint but runs on a separate site or server, the high trust on premises scenario requires that we’re able to create a trusted connection between SharePoint and the AppWeb. On SharePoint 2013 authentication and trusts are managed by passing tokens to one another, thereby confirming identity. The tokens can open the door to permissions, so sending these tokens over an unencrypted connection introduces a security risk.
Since the “regular” tokens SharePoint uses only work with a user context, need something to create high trust tokens. This is where introduced a trusted security token. This token uses a matched set of public and private version of a server certificate to establish a secure connection between app and AppWeb.
More details, coming up in our next blog related also related to Provider Hosted Apps in SharePoint.
http://www.anarsolutions.com/provider-hosted-apps/utm_source=Blogger.com

Tuesday, August 14, 2018

Lean Maintenance

Lean Maintenance

Over the past few years, ‘Lean maintenance’ has become a frequently used buzz phrase in the IT world, and it isn’t without good reasons. Though lean principles were at first framed keeping in mind the manufacturing environments, their effective implementation for cost cutting has been on a constant rise in businesses related to services and IT.
Application development and maintenance presents an ideal scenario for applying lean methods due to a variety of reasons. To begin with, application development and maintenance include multiple processes with each one carrying the possibility to be optimized. Vast differences in the outputs of companies possessing the same resources and skill set suggests that there is a huge efficiency gap in between organizations. There have been umpteen cases where application of lean principles has led to an over 25 percent increase in the overall application development and maintenance productivity.
Frequent alterations in the requirements from an application are some of the most common reasons behind resource wastage. Lean identifies such wastes in the form of designers changing their specifications and reworking on new requirements, coders waiting till all the specifications settle down and testers needing to alter their testing environment.Applying Lean principles
The foremost step in the implementation of lean principles is diagnosing the waste levels in different processes. Most Application Development and Maintenance companies don’t keep a track of waste, and hence the data is collected through various rounds of interviews and interactions. The questions are usually related to the present code being developed and the requirements put forward for the new applications. At the end of these interviews and interactions, an estimate of the time utilized and wasted is secured. Now the focus is shifted on the time being wasted, its causes and the probable actions which can lead to increase in productivity.
The two major reasons leading to increased wasted efforts, as pointed out in different studies; include a random and unsystematic process of dictating the requirements of the project and no defined approach behind prioritizing any specific project. Both these causes negatively impact the working of the developers who are needed to be in constant touch with the clients to understand the project requirements and to juggle contrasting projects simultaneously. Most of the Application Development and Maintenance departments keep a constant watch on the overall cost and staffing for the project, but neglect the waste component.
Some of the lean principles that can be successfully applied in such situations include redesigning of the process to ensure a much improved flow, ensuring the best balance of work among the different work groups and a holistic performance management.
Some of the steps taken include setting up of a clear schedule for monthly or quarterly releases so that the next step is always predictable and every team is on the same page. Also, a well defined prioritization process is put in place against random practices. All the testers and developers are to be holistically trained to ensure that their workability stretches beyond the current project. This allows the managers to take ad hoc help from some other team in case his or her developers or testers are over occupied or not available. New performance metrics need to be formulated with a focus on reducing waste. The managers should be able to see the amount of time taken for a task as compared to the usual time the task takes. Application of these lean principles can boost the overall productivity manifolds.

Tuesday, August 7, 2018

DevOps Testing

DevOps Testing

DevOps (combination of development & operation) is an enterprise software development term coined to mean a lively relationship between the development and IT operations. The goal of DevOps is to improve the relationship between the two business units by promoting better communication and collaboration resulting in willingness to work together and sharing.
It’s all about continuous testing and to help to focus on creating a fast and stable work flow through development and IT Operations.
Testing maturity is a key differentiator of best practices DevOps infrastructures to implement features to detect and rectify problems that may have crept into production without disrupting other services.
The guiding principles of DevOps are measurement, automation and sharing. It is considered a new approach to the traditional application life cycle management (ALM) processes.
DevOps provides the structure that enables software out as a seamless service on a weekly, or daily, or even hourly basis and the age-old concept of a “formal” software release melts away into a continuous cycle of service improvement. DevOps actually helps in by bringing testing into the mainstream of development processes thus avoiding problems that are left to be catered at the end of the cycle such as release delays and quality issues. And this post takes a dig at that question, “how does the testing team fit into a modern DevOps group?” The answers probably lies inside the automated deployment paradigm of DevOps where, the infrastructure is “code”.
Please note, DevOps is all about preventing defects and “not” finding them, which has several far-reaching implications:
  • Continuous improvement and quality tracking across the entire development cycle
  • “Tests are code” and there is no room for manual testing
  • Anything that can be automated, should be automated
  • Testers are the quality advocates and they don’t just find bugs
And just not that. Look beyond functional testing; on automation for load testing, stress testing, and performance testing. Specifically, load testing and stress testing are now critical disciplines for DevOps organizations that are moving at good pace.
So, encourage “DevOps Culture” as a core value of a development organization. DevOps is more about trust, people, and teamwork than about the process. It’s all about the creating software as an ongoing service, not a static product. http://www.anarsolutions.com/devops-testing/?utm_source=Blogger.com