Experts On Demand

Monthly News International

Application Architectures in the Emerging Web/Mobile Environment

Cal Braunstein

Cal BraunsteinMany of our clients are looking for some direction in terms of application developmental architecture, methods and processes in the emerging web/mobile environment. Specifically, our client’s business anticipates the mission-need to develop applications for execution under multiple operating systems (iOS, Android, Windows) and deployed to multiple device types (laptop, notebook, smart phone).

 

  • What application architectures are best suited to maximize recapture of application software development investment in a multiple device/operating system enterprise?
  • What methods and processes should be applied?
  • How would application development resources be allocated across normal development/implementation phases in such an environment?

Architecture: An n-tier architecture is best suited to take advantage of the software development investment in a multiple device/operating system environment. This is generally considered a good practice as it modularizes code, promotes code reuse, and allows multiple interfaces to be applied.

For example, from Microsoft’s perspective the three layers are as follows:          

  • Data Access Layer - access data from a data source;
  • Business Layer – transforms data so that it can be presented on the display;
  • Presentation Layer – supports the display.

A more modern view, Model–view–controller (MVC), duplicates the three tier pattern:

  • Data Model;
  • Business Rules;
  • User Interface.

Application Development Frameworks: Underlying the architecture is the application development framework. There are many developer frameworks in use today.

  • .Net – while it allows developers to code application in multiple languages, it only runs on Microsoft OS;
  • Java – JVM (Java Virtual Machine) allows multiple languages to run in addition to Java;
  • Android - software stack for mobile devices that includes an operating system, middleware and key applications;
  • Oracle ADF - is an end-to-end Java EE framework that simplifies application development by providing out of the box infrastructure services and a visual and declarative development experience;
  • Open Source – depending on the open source application development framework chosen, it can support multiple languages and run in multiple OS environments.

Programming Languages: Recently, eWeek  produced a list of the top programming languages (based on jobs offered) – Java, C, C++, C#, JavaScript, Perl, PHP, Visual Basic, Python, Ruby, Objective C, Action Script, Groovy, Go, Scala, Erlang, Clojure, and F#. The bolded programming languages are the more popular web developer languages.

Methodology: The right application development methodology needs to be a reflection of the current user environment, namely agile, on-demand, multi-channel, real-time, “always” available and social. In other words, it must enable developers to respond quickly, and have frequent releases.

Agile software development emerged out of the above business requirements. There are a number of different agile software development methods. One of those frequently used is Dynamic Systems Development Method (DSDM). DSDM has its roots in Rapid Application Development. As per the consortium handbook, “It provides a flexible yet controlled process that can be used to deliver solutions, combining the effective use of people’s knowledge together with techniques such as iterative development and modeling to achieve tight project delivery timescales.”

Resource Utilization: One of the more important success factors is to make sure that there is business involvement throughout the development cycle. Teams should include business representatives as required. There are five phases to a DSDM project:

  1. Feasibility – this phase requires a team consisting of a systems architect, business representatives, project manager and any others based on what is being developed;
  2. Foundations – same team as the first phase. Foundations follows feasibility.
  3. Exploration – enhanced team consisting of members from first team and senior developers, architects, infrastructure specialists, etc, to thoroughly investigate alternatives and their impact on development, implementation, etc.
  4. Engineering – project manager, senior and junior developers, architects, business representatives, infrastructure specialists, etc.
  5. Deployment – project manager, senior developers, users, trainers.

Client Architectures: The multiple device types mentioned can range from thin clients to smart clients (and even rich clients). These two categories have different architectural requirements and capabilities. An application architected to use a thin client presentation layer is decomposed into pages and each page is "deployed" to the client upon request. Each page contains the user interface description and, typically, a small amount of client-side script logic and a small amount of state/data (view-state, cookies, XML data islands, etc.). On the other hand, a smart client does not rely on a browser to provide the execution, security and user interface environment for its operation but performs its own business logic.

The Bottom Line: Just because the delivery mechanisms, usage and end user devices are changing, much of the traditional approaches to application development (modularization), architecture (n-tiered) and SDLC (Systems Development Lifecycle) are still valid. In fact, while some of the names have changed, the inherent objectives are the same, to produce the most flexible, scalable platform from which to provide clients/end-users with valuable solutions to their personal/business challenges within the time required.

Research

 

Your current user status gives you only limited access to documents marked with .

Research Login

Username:

Password: