Software Development Process

Custom Software Development

Axero Solutions Approach

Fail to plan, plan to fail.




A good plan is essential for completing any project successfully. Without planning, you take the risk of spending more time and money necessary, and the result could very likely be something that does not meet your expectations. It is our goal to help you define your goals and expectations, and then produce exceptional work that meets these goals and expectations. If you don't plan, you're most certainly going to fall into traps, reacting to situations that pop up, rather than sticking to the priorities in a controlled manner. These traps are what we strive to avoid, saving your organization money, time, and headaches.

Our development model places an emphasis on creating and maintaining documentation (such as requirements documents and design documents) as well as well structured and documented source code.

The development process described below is by no means a waterfall method and is not meant to be a sequential (step-by-step) software development model. However, just like any project, we believe that time spent early in the project, making sure that requirements and design are absolutely correct will save you much time, money, and effort later.

Controlled chaos

We believe in Chaos Theory strongly, and when we have a methodology that results in hyper productive software development following controlled chaos, who else can be more satisfied? Chaos is not only limited to software but grew as a result of applied interest in meteorological studies, stock markets, human psychology, particle physics, etc.

The main problem with traditional software development models is to assume that any of the assumptions made has non-chaotic behavior. Even small unknowns can have a big influence on the end result.

Because in practical situations the removal of these uncertainties is impossible, many of us have searched for answers beyond the defined approach of software development, to a more “adaptive approach,” which leads us into our methodology.

Methodology – SCRUM / Agile

We primarily use a SCRUM / Agile development method, in which we focus on breaking the development of various components into iterative phases. We have found our clients to be most happy with this development process, due to their close interactivity with the project throughout the iterations.

Each iteration passes through a full software development cycle: planning, requirements, design, coding, testing, and documentation. The goal is to have an available release at the end of each iteration.

A major goal to be achieved by using this process is to allow you to take you new product to market before it is completed in its entirety. We are also minimizing risk by developing highly focused components in short amounts of time.

This development process will continue throughout all phases, promoting the release of components to a beta phase in a live environment as the life cycles are completed.

Below are the major benefits or principals of the SCRUM / Agile methods:

  • Keeping things simple by chunking (or batching)
  • Customer satisfaction by rapid, continuous delivery of useful software they can get their hands on
  • Working software is delivered frequently (taking weeks rather than months)
  • Working software is the primary measure of progress
  • Late change or additions in requirements are welcomed and can be added to iterations with ease
  • Close, daily cooperation between client and developers
  • Continuous attention to technical excellence and good design
  • Simplicity
  • Regular adaptation to changing circumstances

SCRUM assumes up-front the existence of chaos in the items in the traditional approach as incorrect assumptions, but it provides for methods to resolve these problems with techniques rooted in complexity management (i.e. self-organization, management of empirical processes, knowledge creation, etc.).

In that sense, SCRUM is not only an "iterative and incremental" development method but it is also an "adaptive" software development method.

We have successfully executed many complex projects using SCRUM approach and we believe that true success comes in a mixed flavor of successes and failures.

Usability

Usability will be kept in mind (and executed) throughout the entire development process. In today's day and age, usability is a necessity for survival on the Internet. If your website is difficult to use, people will leave and go elsewhere. You want to make it as easy as possible for your customers to find the information they want as fast as possible, and with the least amount of clicks.

We define usability by five quality components:

  • Learn-ability -- how easy is it for users to accomplish basic tasks the first time they encountered the design or user interface. Can they learn how to use your website quickly and easily?
  • Efficiency -- once the users have learned how to use your website, how quickly do they perform tasks, such as finding your about us page, or finding your site map, or finding what exactly your business does.
  • Memorability -- when a user leaves your website and come back comes back at a later date, how easily is it for them to pick up where they left off?
  • Errors -- how many mistakes does a user make while using your website, how bad are the errors, and how do they recover?
  • Satisfaction -- how do users feel while navigating your website? Can they find things easily? Do they have to hunt and hunt to find basic information?

Project definition and planning

The project definition is the most crucial step in the development process. The project definition will consist of the following:

  • Client survey – With your help, we will identify and document the purpose of the project, the target audience, branding/perception goals, content sources, technical specifications and requirements, and communication strategy. The more requirements that are defined and documented up front, the more likely the software will be built properly.
  • Project plan - Using the information gathered in the client survey along with the technical standards of your organization, we will establish the time line for deliverables and tasks for each phase of the project.
  • Maintenance plan – We will also discuss a maintenance plan, documenting how the software application will be updated and reviewed regularly by your internal staff.

Use Case Diagrams

The software must do certain things to support the business objectives. A use case is a description of how users will perform tasks on your software application. A use case describes a sequence of interactions between a user and a Web site, without specifying the user interface. Use cases are created for all complex scenarios within your project.

Website structure / Information Architecture

Information architecture is the organization of information so that users of your software application can logically find and identify the information they are looking for. The goal with this phase is to spend as much time with your content, labeling it, categorizing it, and creating an information hierarchy. This doesn't require fancy software, your information and content will naturally have some type of hierarchy...and we will help you find that.

Wireframes

A wireframe is simply a basic visual guide to suggest the layout of the fundamental elements for the user interface. Wireframes will be created for all significant pages of the website or screens of the software application. We use Adobe Photoshop, Microsoft Visio, Axure, and other modeling tools to create wireframes, which then later serve as the foundation designs in which we build the actual graphical user interfaces.

Visual design

We believe in: "Less is more" and "Form follows function."

We design in the best interest of the users of your website. The visual design phase is where our designers get down and dirty into the creative process. We review the project plan, wireframes, branding guidelines as well as the technical requirements for screen resolution, browser compatibility, download time, web standards and accessibility with our designer(s), and then give them free reign to brainstorm solutions and develop the creative deliverables (visual designs, names, logos, brand image, etc.) that are required for your project.

At this point, our designers will have a clear idea of the purpose of the designs they will create, the content that will comprise the project, the architecture, and the elements that need to be on each page or screen. Drawing on their knowledge of design principles and user centered design, they will develop design options that meet the project goals.

Software Development

Below is a description of the components (or layers) we use to create software applications:

Front end development

  • Graphical User Interface (GUI) templates using web standards - CSS, XHTML, JavaScript
  • Optimize (HTML, CSS, Images, JavaScript, File locations, etc.)
  • Run initial tests on templates
  • Asp.Net Presentation Layer
    • Creation of website structure and directory hierarchy
    • Create Web forms, MasterPages, User Controls from XHTML

Backend Development

  • Web based administration area for managing all data contained within the database.
  • SQL Server Database
  • Create Tables and table associations
  • Database programming - Stored procedures, functions, triggers, etc.
  • Optimize all database programming

Application development and architecture

  • Data access layer (DAL) - is a set of classes used to encapsulate data access methods like CRUD (Create Read Update and Delete) operations as well as any other methods accessing data from a data store (known as Data Layer). The DAL's primary job is to communicate with the Data layer, which can be any Relational Database Management System, set of XML files, text files, etc. The DAL layer should act as a 'dumb layer' which is used directly by the BLL or any other service layer. The DAL layer should not contain any specific logic in its classes, and it should be used like a "utility" or "helper" class to fetch and store data to-and-from a data store.
  • Business logic layer (BLL) - Business logic layer contains the operational business logic and functional algorithms of the application and talks to the DAL to: 1) fetch data on which it has to apply rules 2) save updated data after applying rules to it 3) perform operations and validate data. The BLL usually presents data to the higher Layers (like a GUI layer) after performing business rules on the data. This layer will include error handling, logging, and exception handling strategies.
  • Data transfer objects (DTOs) - DTOs are simply objects with no methods defined and having only public members. They are like carriers of data to and from the layers. Some people use turly typed datasets for the same purpose, but datasets are heavy objects and carry a lot of information which sometimes might be unnecessary. DTOs are light weight and perfectly suited to transfer across the tiers and layers. The reason why we need DTOs is because passing Business objects through layers is cumbersome as business objects are quite “heavy” and carry a lot of extra information with them, which is usually not needed outside the layers. So instead of passing business objects we create light weight DTOs and make them serializable.
  • Utility (or Common library) – common methods / functionality used throughout the application's layers

Contact us

Contact us today and get your free quote and consultation.

Contact Us Today and Get Your Free Quote and Consultation

One of our solution experts are ready to discuss your needs.

First Name:
 *

Last Name:
 *

Email:
 *

Phone:
 *

Company:
 *

Questions / Comments:

We take your privacy very seriously.


(or call us at:)
(619) 573-4073
(Mon-Fri 9AM to 5PM PST)

Testimonials

"Axero met our aggressive timetable as promised, and with top quality results. I can't say enough about their experience, skills, and near genius."

-- Cinnamon Alvarez - President www.a19.com

"I immediately felt comfortable with Axero Solutions. I recommend them to anyone who needs seriously world class software."

-- Nir Ofek - Co-founder www.glocals.com