Monday 31 October 2011

Adding of fuzzy logic

Had a great chat today with my supervisor regarding the inclusion of fuzzy logic to my application.

I was keen that tasks such as "Write User Stories" would not be a simple boolean value with a checklist but an on going, task that works towards being a member of the set of complete task (or have a membership to the set of 1)

My fuzzy logic isn't rusty, its just not developed yet (I stared learning to represent membership functions in matlab 2 weeks ago)

My understanding would be that would be treated as a member of the set of complete tasks and its degree of membership to that set would get closer to 1 the nearer to being complete that task became such that:

I think this is how the following would work, but if its wrong I'll come back and correct it once I've done a little more research I'll leave anything I got wrong in with an ugly strikethrough so I remember the mistakes I made.

A rough esitmation at applying fuzzy logic to my application....

Let T0 be the set of all tasks and then let T1 be the set of all tasks completed

T1 then is a subset of T0

The number of complete tasks would be #(T1)

The Number of incomplete tasks would be T0 / T1

And so on....

I'd need then to implement some mathematics that would allow me to graphically represent completeness of the entire project as an overview of the membership of each task.

As I'm writing this, and I may be well off but I think the degree of membership to T1 is more important when drawing a graphical representation of completeness of the whole project....

Thursday 27 October 2011

Evaluating sources of information

Who,  what,  where, when, why?

Who? Is the author respected as an authority in the area?

Google the author,  see what they have attributed to them... 

What? The relevance to the task at hand, if it's an excellent contribution to your subject area then the paper is more relevant than a very well respected source that isn't really related.

Where? The context of the source, same idea but for a different languages, approach etc...  Match the context to your own.

When? Computing moves quickly, really a couple of years is to old.

Why? The authors motivation, career progression, academic peer review, opinion based, selling something?

Using the library

Literature search process.

Often you don't know what you don't know. Need to identify the boundaries of common knowledge. Is there much debate on a subject or is there a general consensus.
Choose topic,  adapt search, evaluate, identify topics, choose topic, repeat...
Emerging topics have less academic content.
Can the topic be broken down into smaller areas ?

Effective searching yields better results, the process is much more controllable than just a keyword search.

Library resources are all single sign on except one which has ip restricted access to campus pcs.

Why is it better to use academic research? It's been peer reviewed, evaluated, proven to some extent.

Bad points time to get published can be years, this reduces the relevance of the content if it is a rapidly developing area.

Tuesday 25 October 2011

Aims and Objectives - First Draft

Aim

~Produce an android application for handling coursework or project deadlines.

Objective / Deliverable

Identify any potential ethical issues surrounding the production of my software product
- Ethical Review

Explore blogs, tutorials, textbooks and reports to build a better idea of what issues a user may encounter when using a mobile application and identify any learnings I can take from these
- Literature Review

Select a suitable methodology for android development that will allow sensible time management across the duration of the project
- A research paper on development methodologies

Identify a suitable testing strategy for android applications
- A review of different testing technologies available to android developers, where possible,using the framwork / software (depending on license costs) and comparing the functionality and ease of use for a new developer...

Produce a relational database for installation on a mobile phone
- An sqlite database setup script, table types, sample data and some outputs

Produce a simple homescreen widget for an android application that reads and displays data
- An installable widget that displays information read from a third party api

Create a user interface for a simple CRUD database on the android platform.
- Screen shots of the UI.


Develop an android application that handles user requirements for completion of a project. This will include multiple tasks, which may depend on earlier tasks being complete. The ability to notify another user via email or text message that a particular task has been completed and be able.
- Source code for the application, commented appropriately
- The classes or scripts necessary to test my software development product.
- A user guide in PDF format explaining the functionality
- Screenshots of the application

Friday 21 October 2011

Specification based testing

Chapter 4 in the book relates to black box testing or specification based testing.  Imagine that we are unit testing a method that returns a classification from a grade. What ways could we devise test data to make sure the boundaries are being tested.

Design test cases to put the specification under stress or duress, picking a random set of results to test would be useless,  the boundaries of the classification need testing.

Need to use test data that will throw an exception.
We should also not test the same case more than once.

Given marks in the range 55 - 64 there is little point in testing 57, 58, 59, 60, 61...

Equivalence Partioning allows us to divide the test cases into partitions.

The theory is that if a value within a partition passes the partition passes. If a value within the partition fails similarly the partition fails.

Theory on partitions ;
A particular parameter may be considered for partitioning and its domain split into blocks,  this can be difficult where the split is not easily identified.

Domain D gets split blocks.
B. Where bi. intersect bj.  Returns an empty set. This is called pairwise disjoint.

And where union of all blocks returns domain. This means that the partitions cover the whole domain.

Input domain modelling :
Interface based
Given the method header Sqr(int x)  what can we decide on as valid partitions?

3 partitions. Less than zero,  zero, more than zero.

This is problematic as without the knowledge of the function we cannot reliably predict the outcomes.

Alternatively we could argue that if we knew it should return an integer squared we could divide the domain up based around known values.  We could use zero and the square of the maximum int.

Another approach is to model the output so knowing that a return value is an int squared there's little point in expecting a negative number.  Despite this overflow of a maximum int can return a negative number?

The function should throw exception if it returns a negative better yet the method call should. But that's a different matter.

Boundary value analysis.

Breaking the domain into partitions ; whatever partitions are used need to justify the choice of the partitions.

Thursday 20 October 2011

Managing Risk

Six dimensions of risk.

1 Team
2 Organisational Environment
3 Requirements
4 Planning and control
5 User
6 Project complexity
(wallcea,  kelib and rai)

Friday 14 October 2011

Test driven development

The difference between validation and verification.
Are we building the product right. Verification

Are we building the right product.  Validation

How do you know that the product is right! Natural language is ambiguous.

Rigorous specifications should be written in unambiguous mathematical form.  Reification means you transform the specs into code.

Thursday 13 October 2011

Stakeholders analysis

The stakeholders will have expectations of the system.

Perception - the stakeholders understanding of the system and what you are doing.

Constraints, the stakeholder may not be aware of the constraints on the project.

The stakeholders should be told of the expectations from the outset.

Identify the other stakeholders and the impact on them.

Specify the perceptions and the interests of the other stakeholders.

Think of the children.  The stakeholders may not be people,  environment, ecosystem, landscape etc

Identify alternatives to the system. Prepare a set of alternatives.

Execute feasible actions.

Deciding on design specifications.

Friday 7 October 2011

Marketing for developers

Lego building blocks, great but need a plan. Lighthouse vs crappy transformer bot droid. 63% have a plan, planners make money. Development is speeding up, shorter cycles, shorter shelf life, outsourced. Innovation > sleep. Rovio published 60 apps before angry birds, dont reinvent the wheel.

Wipjam conference, opensource publication.

Only 4% going after enterprise business, brands dont like indie devs.

Dont start looking at the yacht catalog.

Plan. Plan. Plan. Barnes N Nobles are making a killing.

Cloudfour.com mobile statistics.

Whatever the lifecycle, marketing cycle, make sure your aware throughout the dev cycle where n what you are doing to tqlk about. Enter competitions, jetwork, 100 words.

#FAILFAST.

Versions, updates, feedback, staying ahead of the curve by keeping in touch with the latest api. Crittercism, haptics , carrier apis.

Who knew ? US testing on canada. Test small.

Harder than naming a baby, if people are talking, they need to say an easy word. unknown, untold, unsold. 120 app stores, download stats n info from wipconnector. App store is not marketing, its delivery, people wont find you, best promotion is no longer good reviews market flooded, enter competitions, do speak because every1 is new to this.

11% have never spoken to the customer, superusers love talking phone people.

User analytics has to be more than number of downloads. Build analytics into your app.

Wip london. Go MWC in barca. Get known.

Thursday 6 October 2011

C2DM

Known issues,

Google can do whatever it wants, impose limits, validate user device or server when it feels like it. There are not any classes you can use. Google goes as far suggesting you rip code from chrome to form.

You need to sign up, declare upfront how many messages you want to push. Sign up with a gmail account personal or app.

Server registers, device registers.

May or may not get any response to signup

Worth using dedicated email.

Send post to google device must be signed in with a google account.

Device receives intent from google which says you are all set up cool, receiving this code must be written not handled by any existing code.

User device must sign out and re register, device gets new id but seems to also reactivate previous so can get multiple push messages

Back on server http post to the regisration id

You get response success or error, success doesnt guarantee the delivery.

App overwrites c2dmbase onreceivemessage can be handed to notification. overwriting ondelete defines behaviour behaviour when user clears all.

No way of knowing if message is received. Alternative is polling or socket management.

Code on github.

arm native dev

Linux driven native code, usefull for powerful lowlevel operations inside the dalvik vm. Friendly team

Greendroid UI

Quick summary, great developer with a really good insight ibti smooth and responsive UI. Definitley the UI to check out for my planner app.

Sysbase database solutions

White paper available, step by step development with the stack.

App fundementals

Demo app. Using api ultra light j. Java api for bb bold n droid. support for various apis, description included.

Database connection as a singleton.

They. Offer sync to a server relay, http https supported.

Background thread returns result set.

Performance figures, download volume of data vs time metrics.

Push technology is handled differently in android, later talk on push. Benefits of push are the minimal requirements of the phone, app asks for sync, data pushed from server.

Cloud 2 device messaging from google api

Get the ultralightsql.jar no triggers or stored procs due to smaller file size.


Barcamp.

Sat in the main auditorium listening to people pitch ideas for discussions. Impressed.

Wednesday 5 October 2011

DroidconUK 2011.

I'm on the way down the m1 as i write this. For once it's worth noting the coach doesn't stink like a toilet. Starting to feel a little bit of what I guess would be called nervous aprehension. As a complete beginner to not just android but my career as a software engineer I cant help but feel im jumping in a bit over my head. I have it on good authority though the only way to be sucessful as a coder is by throwing yourself at a language so here goes I guess. The primary reason behind me heading down is to get some material I can review for my literature review. I also get to meet the representatives who hqve sponsored my ticket. Level Up Studios. A name on the android market for both beatiful widgets and plume (a twitter client)