System Platforms

He who holds only a hammer sees every problem as a nail.

Over 30 years of professional software development, we have worked with a diverse range of platforms, languages and technologies.

Each have their strengths, although some are now quite dated, and would not be good choices for new projects.  Even so, our historical experience is often called on for keeping legacy systems running, or for transferring legacy business processes to current platforms.

Throughout the ongoing turnover in technology, the one constant has always been the principles of design that allow a complex software project to be managed reliably and economically, as it grows and transforms over the years.

Our preferred platforms have significant advantages for delivering the best results, most efficiently, and we can explain how these compare to the alternatives.  But other factors, like harmonising with existing systems or with the skill sets of your existing staff, may also play a role in choosing the best fit.

Web applications are extremely powerful, because they are globally connected, but installed in just a single location (the web server) for easy and cost-effective management.  Because of this, most enterprise systems are built on web platforms, with cloud hosting, even if they are not intended for public use.

Here we review the technologies you may be selecting from.

The Microsoft Stack

Microsoft launched the personal computer era in the 1980s with their languages and operating systems, a strength that they have been turning into a vast software development ecosystem ever since.

Microsoft web development is based on their ubiquitous .NET framework - specifically ASP.NET and more recently the ASP.NET MVC variation, which is now more widely adopted.  Code is written in either C# or Visual Basic, with the former being more concise, and more common.

Data storage is usually provided by SQL Server, using the Entity Framework object-relational mapping (ORM) layer to integrate it into the web application, making the database tables appear in code as entities which can be directly manipulated.  There are many advantages to this approach.

The web server itself is usually IIS, which can run on a Window virtual machine, in a very convenient arrangement to provide a complete hosting environment dedicated to the web system.

Microsoft now offers hosting services as well, through Azure.  This is highly scalable, and can allow systems to grow and handle enormous traffic by splitting the load across many servers in a web farm.

The LAMP Stack

This is an acronym for Linux, Apache, MySQL and PHP - the four main platforms that support web development in the Unix world.  Linux is the operating system; Apache is the web server that runs on it; MySQL is the database server; and PHP the web platform where most code is written.

Being open-source and non-proprietary, the LAMP platforms are popular in universities and academic environments, and are mostly developed through open group collaboration, rather than as corporate products, although commercially supported derivatives are available.

The LAMP stack claims the honour of being the most widely deployed web platform in the world.  While this is true, it is overwhelmingly because of packaged CMS systems built on top of it - like WordPress, Drupal and Joomla - which are distributed widely.

While many see the absence of central ownership in the LAMP stack as a positive, it does tend to mean reduced integration between the co-platforms, and a slower pace of innovation.

For example, PHP still uses template files (often seen in URLs as .php endings) where interpreted code is intermixed with HTML markup.  This web development paradigm, dating back to the 1990s, is rather limited and harder to maintain than contemporary alternatives.

Browser Clients

Often overlooked in web architecture is the browser client (Chrome, Internet Explorer, Safari, etc) which allows web applications to deliver rich interactive pages to users, without installing software on their devices.

The basic technologies are HTML, to markup the structure and content of a web page, and the CSS styling language which describes exactly how each element should look.

But for a truly interactive experience, we also need to use Javascript, a programming language which executes inside the browser, typically to adjust page elements in response to user action.  Using AJAX, it can also communicate with the web server behind the scenes, to create a smooth workflow without full page refreshes.

Working with Javascript to manipulate web pages is rather laborious, so a helper library called jQuery is often used to reduce coding time and text.  It also has a popular companion library jQueryUI that provides packaged controls such as datepickers and popup boxes.

The Angular library is an alternative approach that pushes the interactive paradigm to its full extent, creating single page applications (SPA) where all interface activity is via page manipulation, and there are no full page refreshes.  It bridges the gap between the connectivity of web pages, and the interactivity of desktop or mobile applications.

Desktop Platforms

Despite the popularity of the web, many applications are still implemented only as desktop software installed on a local computer.  These are cases where the interface is complex or requires fine-control user input; where the software must work offline; where it must access local files or devices; or where heavy local processing is needed, such as with sound or graphics.

In the Windows desktop world, Microsoft has two main offerings, the first being Winforms, based on the .NET framework, with either C# or Visual Basic as the language.

The other is C/C++, often within a framework called MFC. This is an older platform, but one still widely used where high performance or greater control is needed, because it interacts directly with the Windows API.

In the Mac OSX world, desktop development usually involves Apple's Xcode environment, using either the Swift or Objective-C languages with the Cocoa framework.

For cross-platform applications which need to target both Windows and OSX, neither Microsoft nor Apple offer a viable solution, and you must select a third-party framework.  In these cases, you will likely be working in C++, reflecting its enduring status as a standard, efficient, vendor-neutral language.

Mobile Platforms

For mobile apps, as with desktop development, your choices will be guided by your target platform, whether Android or iOS.

Developing for Android usually involves the Java language in combination with the Android SDK, which in recent years has been conveniently packaged up into the Android Studio.

Developing for iOS, as with Mac OSX, involves Swift or Objective-C within Xcode.

If you need to target both Android and iOS, this does complicate the picture and you will once again be looking at third-party or hybrid frameworks.

Another strong possibility for cross-platform app development is to create a web application specifically for mobile use.  As mentioned above, single page applications can provide a highly interactive app-like experience, and do not rely on the Play Store or App Store for distribution.

Flexis® is a registered trademark
Copyright © Flexis Systems Pty Ltd

“ Everything must be made as simple as possible. But not simpler ”

Albert Einstein

“ Anything that can be measured can be improved ”

Michael Dell

“ Time waste differs from material waste in that there can be no salvage ”

Henry Ford

“ If you can’t describe what you are doing as a process, you don’t know what you’re doing ”

W. Edwards Deming

“ Foolproof systems don’t take into account the ingenuity of fools ”

Gene Brown

Flexis® is a registered trademark
Copyright © Flexis Systems Pty Ltd