Web & Mobile Development

Design
Develop
Deliver

Software development starts with a great design. Design is much more than just a nice user interface; it is solving real-world business challenges with the appropriate use of architecture, workflow, and usability. Our design process is both iterative and collaborative, and establishing a constant feedback loop with our clients is critical for building quality software.

Building exceptional software is a core part of our DNA. We believe in using the right technology for your needs. In general, our solutions employ Microsoft technologies like C# and MVC along with industry standard tools, protocols, and platforms like NHibernate, HTML5, and jQuery. We make it our goal to deliver builds for your review early and often so that you have complete visibility into our progress.

We ship software with a superior level of quality. Our job is not finished when we write the last line of code. At Alltech Consulting, "Delivery" means ensuring that the application is stable, complete, and ready for production. Our work is a reflection of who we are, so we don't cut corners when it comes to quality.


Reliable Processes and Durable Architectures for Web and Mobile

We recognize the investment businesses and organizations make in custom developed software, and we understand the need to protect that investment with a reliable, adaptable, and maintainable product. We have instituted several layers of quality assurance beginning with our Continuous Integration (CI) build, test, and deployment process that extends through the source code delivered with complete coverage via automated component tests for enhancement regression verification.

We understand the absolute truth of engineering software for today's distributed systems; a SOLID architectural pattern is a requirement for successful delivery. We recognize that the best architectures are those allowed to evolve as development progresses, but there is no substitute for having a well-tested and proven pattern to begin with. To that end, we adhere to the following architectural principles:


Web Application Architecture

For web-based enterprise applications, we espouse the benefits of a specialized hexagonal architecture known as Onion Architecture. The core principle of this architecture is to build the application around an independent object model that describes the business domain. Component coupling is unidirectional toward the center with separation between component contracts (interfaces) and implementations.

Understanding the structure of the architecture is simple. In practice, the architecture relies on the Dependency Inversion (DI) principle to assemble the components at runtime. We isolate the "Inverter" into a separate physical tier to avoid leaking responsibilities.

Onion Architecture

Key tenets of Onion Architecture:


Mobile Application Architecture

We use three separate strategies for mobile development. The first option is to use a responsive layout framework to adaptively render web content for multiple device viewports (screens). This is a standard feature that we include in all web applications. This ensures that your application will function on desktop, tablet, and smartphone clients from day one. This strategy is useful for applications that need broad reach but do not need local device capabilities such as location, camera, or local storage.

For clients that require a dedicated mobile application, we evaluate the specific requirements to determine whether to recommend a hybrid-native or true native design. Hybrid-native mobile applications are developed with the standard web technologies of HTML, CSS, and JavaScript. This approach uses a device API middle-ware to access the device’s camera, sensors, and storage. There are several frameworks for this type of development such as PhoneGap, Icenium, Sencha Touch, and others. This type of mobile development has gained considerable popularity recently because it enables cross-platform development for the major device Operating Systems (OS) using a single codebase. Most mobile business applications can be developed with this type of architecture because they don’t require access to low-level device APIs for graphics processing or intensive CPU utilization.

For the best mobile experience, or when low-level device features are required, only a native application will do. Native mobile applications require the most development effort because usually a minimum of two versions (iOS and Android) must be created. We have adopted the use of Xamarin to enable cross-platform development of most of the codebase, even though UI development is still device OS specific. The single codebase is written in C# and the Xamarin compiler bundles the compiled code with the .NET runtime and outputs a native ARM executable, packaged as an iOS or Android application.

Regardless of the mobile development approach used, we believe in keeping the mobile application as thin as possible. By deferring actions to a service layer, the mobile application is less likely to require modification. The service layer acts as an adapter for enterprise services and as a business logic tier so that the mobile application is limited mostly to just presentation responsibilities.

2557 Barrington Cir. Ste. 2
Tallahassee, FL 32308

(850) 692-6884