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.    


No comments:

Post a Comment