Application Development


 What is a software application?

Applications cover too many uses to give a simple definition, but we would state that;

  • A software application performs an activity, or multiple activities, which would take a human longer to do, or would prove impossible for a human to do.
  • A software application always, in some shape or form, interacts with data to do something useful.
  • Applications must be useful.

Application Development by Info Rhino

As a software development provider, our applications are always to do with data. We think data. We write applications that run on websites, and applications that runs on desktops. We don't build mobile applications.
We try to avoid writing large complex applications and prefer that there would be many small applications to just one large application.

We prefer to lessen the amount of validation a specific application does and prefer to delegate responsibility to an agent application - in simple speak, keep applications lightweight.

We don’t like reinventing the wheel, only if we find we cannot get functionality from existing applications, will we dive into building exactly what is needed.

What technologies do we write applications in?

Feel free to skip this section if it is technical.

We use Microsoft .Net with C#. We have started working with Microsoft .Net Core for web based development, but we are not in a hurry to convert all our applications to .Net Core.

Here is a brief list of some of the application technologies we use at Info Rhino;

  • .Net and .Net Core.
  • C#, VBA, and Visual Basic.Net.
  • Oracle Database.
  • SQL Server.
  • SQL Server Integration Services (SSIS).
  • SQL Server Reporting Services (SSRS).
  • SQL Server Analysis Services (SSAS).
  • ASP.Net, MVC 4, MVC 5 and .Net Core MVC.
  • JavaScript, Knockout, jQuery and many other
  • JavaScript frameworks.
  • PowerShell.
  • Application Programmable Interfaces - APIs.

How do we manage source control?

We can work with GIT or Subversion? We can work with different source control repository providers.

How do we license our development?

At Info Rhino, we use open source, have written utilities to reduce repetition when developing and we write specific code for you. These days, it is easy to extract code and to view everything written. This makes it hard to protect code. Our specific license agreement should be read, but in principle;

  • All libraries, packages and the versions from third party vendors and/or open source solutions will be listed.
  • Any Utility Libraries written by Info Rhino Limited will be detailed, packaged and versioned. It is likely we will only allow these libraries to be used in applications we write for you. If you feel you want to use these elsewhere, just ask us, there may or may not be a charge but we seek fairness.
  • Code written purely for your benefit is yours to keep. We will include this in the license agreement.
  • Your Intellectual Property. Each agreement can be customised to the specific solution being implemented, always seek legal advice and discuss concerns with Info Rhino Limited. Software and Intellectual Property rarely combines. For this reason, we will agree which code artefacts are yours only. In the event of non disclosure agreements we reserve the right to work with similar clients but act impartially.

Why do we talk about licensing?

Transparency


Guidance on procuring application development companies

What should I be considering when requesting an application to be developed for me?

Staff

Does the application reduce the time staff spend doing non-productive tasks? Does the application reduce the time taken to deliver value to a customer? Does the software prevent operational risk?
It is always worth considering users, but always think in terms of the future. We don’t think of software as losing people's jobs, but giving them capacity to be more creative.

Users

Who are the users?
What level of quality does the users accept, and what is reasonable?

Criticality?

Enterprises determine the Service Level Agreement levels of an application. Try to understand how important it is for the application to be running, and whether there are contingencies. Does the software perform a regulatory requirement or reduce operational risk?

Efficacy - is the application worthwhile?

Some ideas are incredible, but some software takes a long time to develop, it may not make the impact desired and may cost a lot of money.

Be realistic on the cost of applications

The challenge when commissioning specific software to be built, is an individual or team has to write that application. It may take them a number of weeks or months. That application may need support, and it may use licensed software. It does not mean software should be expensive, but it is something to be realistic on.

Info Rhino strives to deliver cost-effective products for our clients and because we love building solutions, but there is always a cost.

Try to educate yourself on what good application development should be

Again, we are more than happy to provide guidance on general principles of good software engineering. We can provide small consultancy sessions to help ensure your procure the right solution for you.
We will be posting blogs on this in due course.

Support

A well developed application does not need support. A well developed application just works. However, there are always edge cases and it is worth considering support options. We will always consider your needs.

Where is the provider based?

The biggest temptation is to outsource software development abroad. We have been burned on our own pet-projects by trying to outsource overseas. Many partners have told us about this experience. In no way, are we stating outsourcing overseas does not work or there are not good providers, but some personal interaction between customer and provider is essential.

Code quality and testing?

When looking at requirements for software projects, contracts and jobs - often, significant testing requirements testing are specified. Often, "unit tests" are mandatory.
As stated, we are a data first company. You as the client, can ask for unit tests, but be aware they don’t always deliver the promises.

We recommend the following;

  • Unit tests to be used sparingly, if at all.
  • When unit tests are used, focus them on calculations rather than significant unit tests faking data.
  • Create tests based upon the actual data and rules. A great tool we completely believe in is NBI - read more about it here.

Guide to application documentation

Documentation is one of the most contentious elements of software engineering. Each project is different, and we always document with the sole goal of being useful. Customers should research for themselves, what good documentation is.


Some points to consider when requesting documentation

Avoid duplication

Documentation should not simply repeat what code is.

Why? Because then there are at least two places to maintain information which will diverge.

Determine who the documentation is for

Is it a user guide? Is it for system administrators or application support? Is the documentation to help later developers develop the application further?

Diagrams

These are great, but follow the rules, avoid replicating information which is held elsewhere. Use screenshots if necessary.

The golden rule

The first thing people ask for is documentation, the last thing they do is read it. This doesn't mean documentation should not be written, but the audience should be curious.

Why and How is better than What

Understanding how an application works, and why it is written than verbosely listing all the components of an application.

Application documentation must have a purpose

It is vital, any documentation is useful and informative. Writing documentation for the sake of it can harm the quality and reputation of the product.

Unit tests and documentation

One of the most important features of unit tests, is they show other developers how pieces of code works. Too many unit tests can kill productivity.

Too much documentation is overkill

Library books documentation