Tuesday, December 29, 2015

Mobile software, quality measurement and improvement


A well-defined metrics is first characterized by the presence of all three of entity, attribute, and metric. If any of these is missing, there is no much point for measuring. Metrics must also be valid, which means that the representation condition is satisfied, i.e. the empirical relations preserve and are preserved by the numerical relations. That is, however, difficult to determine from the final reports, and therefore omitted from the study. We only consider if all of entity, attribute, and metric have been clearly stated or implicit in the context.

Start point and assumptions “Principia”
We have a modular MVC  vision for development as the main architecture of our application
 -We have a short development time usually, this means analysis, testing and qualiy cannot be long in time 
-How usually is developed? Usually we use the paradigm Bottom-up or top-down 
-How many people is required? If is possible to have 2 developers for platform is better, a design and manager or analyst.
-What are the flanks? ANDROID, IOS WindowsPhone

How to make Quality?
1) By modules?
2) By requirements measure? 
3) By user Experience? 
As what you can expect, is necessary in all there.

By modules
Having in count the mobile stack of development and the MVC paradigm, we have the next modules:
- USER INTERFACE /View
- APPLICATION LAYER /View
- CORE LAYER (Helpers, managers, flux guiders) /Controller
- DATA LAYER /Model
- HW LAYER /Model
So now, we have the stack grouped in the three MVC blocks, let’s going to try to understand now how to measure them.

View: Measured by User Experience and UI-TESTING (for example espresso for android)

Controller: Requirements Measurement based, answer this questions: Is doing what is expected? What is the behavior of something unexpected? Input and outputs by modules are right?
How to make it good for controllers?
1)  Take the ideal flux, optimal inputs have to get optimal outputs for example our module have 2 inputs Int one= 1, Int two=2 the output we know have to be the Int result= 3 then and develop it.

2)  Then we have now an ideal flux, now we have to search or try to find the worst situation and set the conditions for let it work, in some cases this means set the try-catch-finally block, now then we have the best and worst situation working on our modules.

3)  Then we have to test the interaction between the modules that usually work together and try to test them switching between the best and worst conditions and analyze the behavior to solve possible problems and engage best as possible.

For make this Junit test are standard and could be useful but the problems is the time required for create our mock objects may use so much time, so we have to create the Junit test for essential blocks of our controllers.

If we are going to have a previously known multi-version application, we test the main fluxes and the essential modules, and for each new version add some testing for the secondary modules.

Model:  The model on MVC it can refer the data connection layers on previously post I defined in mobile also like: definition of what, when, where is going to do the application, usually is represented as a lifecycle of each requirement.
If we take it, only as a Data connection the quality can be improve with:
From application perspective, you need to look at below states for DB to be valid with basic cases
Clean up Scripts (Clearing Previous Run Data)
Initial Data population (From a fresh install whatever initial configuration you need to do)
Prerequisites Validations Tests (Checklist to validate before you start run - Services up / DB's accessible, able to connect to DB's with supplied credentials)
Run Tests (These are actual test you can run to validate, ex- calling with test data, updating few job tables in DB to process populated data)
This provides a logical flow as well help you re-run every time.
However, if we analyze the model as how data have to flux into the application the improvement of data is a little bit complex to do it good.
For example, we have some data acquired from external web service stored in ram, if the quantity of data or the data object is complex, then is better to split them in more simple data and if is not necessary show all the data at same time store the big data and complex on local SQLite DB, then get the data when is necessary. If we are working with real-time data then the area to improve is the web service calls and try to manage the behavior of UI when internet is failing.

This is a short and resumed idea of how to adapt the software quality improvement for mobile projects and developments having in count my experience working for different mobile enterprises.    


Monday, December 28, 2015

ANDROID AS INTERNET OF THINGS


There are so many features of mobile devices that provide us a new way to see the things, for so many time is always talking about IoT, the main idea of this approach  is to have a relationship between devices and internet creating a small networks for a purpose.
Android as almost all the mobile OS provide us different type of connections and we are going to explore the possibilities of many of these.

As we know we have the Internet Connection on 3G/LTE that allows us to go out to internet then we can use it for connect the phone with all the services on cloud or main server.

Wifi, the wifi on these days is almost in every place that we frequently interact so, the main difference with mobile networks is we have a private network where we can manage, what means that? This means that our desktop, phone, smart tv, ETC is connected to the same network so we can access to them easily for example having only the IP address. This is one of the basics of the Internet of things.


Bluetooth Connection, The Bluetooth on last years is becoming better, faster, and low energy consumptive, and then we have that is still a good option to have in count is. The Bluetooth is an approach useful for 1 TO 1 devices with some distance between them with a multi-direction data exchange.

The bluetooth actually is used for connect with smartwatches, speakers... but the possibilities are open to everything, now is possible to adapt a Bluetooth antenna to almost all devices which provides an infrastructure to get external inputs, for example a simple usb port. So we can have more structured devices to interact as is a car, or Arduino device, or RaspberryPi so imagine what it can be possible to do with that.


NFC with the NFC technology we have a sometimes-useful trigger based on the proximity to tag, on past the NFC provided also the possibility to smartphones had the behavior of NFC card mode, what that means? It means the phone can be as the tag and be as trigger for other devices that receive the NFC tag as input. Recently this capability is keep for payment features as Google wallet.

I'm going to leave some interesting images ideas with other technologies as unity that can complement and let the creativity be free:


Tuesday, October 27, 2015

RAMBLING ON MOBILE Android(devTools, hacks, and cool stuffs)


SOME PROJECTS ON ANDROID, UNUSEFUL BUT COOL THATS WHAT MEANS


Is possible to look about what means android experiments navigating on the website, the idea is bring to developers the possibility to make some cool things and squeeze the creativity, making some kind of projects that usually are not productive (sure?) in any case the idea is to experiment what more can we do with android even if the objective is not an app on PlayStore. (Let's gonna play!)

(F1) ARE YOU NEEDING HELP WITH YOUR PROJECT? NEED EXTRA LIBRARIES? NEED GO FAST? SOME COOL THINGS? 

This is APPANCE, is a very helpful website which provides a complete set of libraries, plugin and tools for multiple platforms, as Android, IOS and WindowsPhone... even Backend! please feel free to take a look to this website, it can helps also to take ideas of how to design some of the apps using one or many of those libraries in multiple Operative Systems.


FINALLY FOR ANDROID LOVERS & DEVELOPERS


This is a full-day helper for an Android developer, here you can find one of the most complete selection of libraries (open source) on the web site, can be intended as a Library of Libraries, providing also in some cases a simulator online, which present a how works view,  even without downloading the features of the library that are you looking on. For me this is  one of the best websites for android developers ever, because even if you are not interested on use external libraries on your project (enterprise policies) you can acquire the libraries for guidance of how to make some interesting graphical things and also make workarounds that usually are not of easy implementation by default on android... for example: Lateral burguer-menu with animation or changing the icon with gestures as well. 

That is all for now, I hope it can helps at more of you on Mobile developing, and enjoy surfing on these cool websites, I will try later in other post give you more cool sites and provides a tutorial of how to use all those libraries without getting compilation errors or versioning problems (almost cases).





Friday, October 9, 2015

DIFFERENCES ABOUT WP/IOS/ANDROID

mobile programming DIFFERENCES ABOUT WP/IOS/ANDROID

i’m gonna talk about the difference between the three most important mobile platforms, not as user, not as stylistically way, but as a programmer what can offer for programming all these three platforms?
First of all will start with the development environment.

ANDROID: 

Programming Language base: JAVA
From some time ago the official development environment is ANDROID STUDIO, which is based on INTELLIj, this platform is the only one of three that was made only for mobile (android) and it can run on multiple operative systems, then is optimised for render the development and testing for android very uniform, provides also an easy access for many of the common used tools, using java provides us a lot of libraries, external tools and things like apache network libs, another important piece of a development is debug so this means interaction with the emulator, i think is the worst of all three, very slow, not much functional, is always absolutely necessary for debug the use of real phone.

WINDOWS PHONE:

Programming Language base: C#
Microsoft arrived late to the mobile fight but they are doing good! also for the programmers, using a very good super tested environment, i’m talking about Visual Studio which provides a lot of tools very well know for many of developers, stable, and reliable, but being not only for mobile is heavy to run in some computers, and is only for windows, using c# as dev language have a lot of powerful structures/tools that can make us the life easy as an example the “observable collections” an example of use is having a core data connected to a service that modify something of our data and we need form our User interface a reactive event when a value change (this happens all the time on apps) we can do it just defining the interested data as observable collection, talking about the emulator is faster than android but not fast as IOS emulator.

IOS:

Programming Language: SWIFT/OBJECTIVE C

Finally arrived to iOS, the big apple, uses XCODE as official development environment, is a powerful environment, very simple very stable and runs only on MAC, from some years ago they introduced the use of storyboards for layout and connection between them, which from my opinion is a very helpful and attractive concept to develop the view’s layouts. Is powerful and defines an upper visual of our apps interaction. however they use an antique and bastard language (OBJECTIVE C) is powerful but old is like a C++ and you need to create “beautiful things” with that. they are trying to solve the language problem introducing SWIFT language, that is an apple Python styled language, I thing it can help to get more developers because in this moment there are the best payed because there are not so much of them. For me IOS have the best emulator, fast, fast and fast, you really not need a real phone for test the apps in almost many of cases.

Tuesday, September 15, 2015

ANDROID FOR DEVELOPERS

SERIOUSLY MOBILE PROGRAMMIG
MVC



How long does it take to make a mobile app?

Kinvey Backend as a Service

link for pic:http://www.kinvey.com/blog/images/2013/01/how-long-does-it-take-to-build-an-app-kinvey-1500x834.png

This is a very well described infographic about how is really development of an application for mobile, is not so easy and kind, If you want really make it good.

Usually the way for development an application is using the MVC paradigm, as is possible to see on the link, is not only an architecture, is a point of view to create the structure of our applications, WHAT THAT MEANS? it means there are 3 modules for creating an applications:
for the purpose of explain clearly we are going to suppose that our application is simple we just need to create a view with a button that shows the time on a label. 

MODEL:

Defines what, when, where is gonna do the application, usually is represented as a lifecycle of each requirement. WHAT? yes on our application is simple is like this: 



VIEW:

it can be defined as the layout (in android xml) usually represents the Human-android interaction for example buttons, list, images, feedbacks, sounds, etc. On android studio it can be see as: 



CONTROLLER:

The controller defines the behavior of each component of view, for example if you define a button on your layout/view when user clicks the buttons it's gonna do nothing, then the behavior for the event triggered when user clicks is necessary to be programmed for android is used JAVA, this is an example of code in java for button clicked event handling:



Then as my experience programming can advise me we can have 2 different approach for develop apps,  in both cases we have almost clear and is evident what we need the app have to do.

This is referred to the application well made development stack, is something like this:




TOP-DOWN

This approach is usually used when is clear the graphic propose, it means we have absolutely clear how's gonna look the app but we don't know if is feasible or how can be do it so the first step is develop all the layouts with empty controllers and then depending of desired behavior (model) we can later define how to programming them, for example if some data for a list is get it from web service or is local, or if is fixed.

BOTTOM-UP

This approach is necessary when we have clear how to do the app but not exactly how is gonna look, because sometimes the UX-designers did not define yet the user interface at the beginning of development so we can establish a definition for data objects, data helpers, services connectors, parsers, and all what we need to have the data when layouts are going to be ready to develop.


UNDERSTANDING ANDROID FOR DUMMIES

Android basics, architecture and how-to begin


First of all I want to keep clear this is just a way i liked to be introduced on Android, so let's begin.

Android as almost all of you know is a Operative system / platform which is oriented to different kind of devices as Cellphones Smartwatches and multimedia devices but not only, as we can find on this project: ArduinoDroid
I'm on android almost as the beging in 2006, so I can say how's is gonna evolving, then I'm gonna give you my favorites versions:
1.6, 2.3.3, 4.2.2, 5.1  

WHAT IS A ROM? 

A rom is a version of android sometimes customized and branded for different manufacturers, as an example if you use a Samsung Phone, the rom is android customized by samsung. 

For some reasons I always prefer the cyannogenMod roms... are awesome! 
take a look on: Cyannogenmod the ROOT and rom modifications  was my first approach in the way to be more than a simple user of Android, so please feel free to try, there are so many tutorials on Youtube and on developer's website of how to do it simple, in anycase you can always go back to your factory ROM (Usually means original factory firmware).

WHAT IS THE ANDROID ARCHITECTURE?  

This is the architecture shown usually when we talk about Android architecture, as we can advise on the bottom of the stack there is The linux Kernel, WHAT THIS MEANS? it means for example the partition for disk is gonna be as linux do it, or how the processor is gonna be managed or how the networking and hardware interfaces needs to be controlled (you know, camera, screen, mic,) , MapDetails of: KernelLinux  (that was weird if you don't what is computers architecture)

Going up on the stack there are the basics of an operative system, it means libraries and how is gonna run our applications, this is used in the way to create a kind of interface with the hardware so we cannot access directly to hardware (for security and dumb programmers XD )  then upper we finally find the application framework, FOR WHAT? because we need an environment for the applications we need to declare what we need from Android, and what we gonna do with android and other applications, did you ever heard about Manifest.xml? if not, don't worry later I'm gonna describe how applications are composed and what is necessary understand to mate the Android system with the apps!