HOW VELOCITY MAKES SOFTWARE
Requirements Analysis Workshops and their Deliverables
To produce the artefacts, a software architect consults with the customer to help identify the needs and expectations for the system. Software architects are trained to understand business requirements, and translate and document those by using UML or other appropriate documentation methods.
Typically, the following artefacts would be produced to clearly establish the vision for the system.
Conclusion on Requirements Artefacts
Once we have produced the main artefacts, we have a clear vision of:
Which users will be able to do what with the system
What information the system will store and process
Which logic the system will follow through different operations and circumstances
How the system will look and feel
Velocity Solutions' software architects are experts in creating these artefacts, and the resulting vision can be universally understood and agreed upon by all parties.
THE ART OF SOFTWARE ARCHITECTING
What is Software Architecting?
While knowing exactly what kind of system the customer is expecting is crucial, another lesser known aspect of software development is the software architecting process itself. Even with the requirements artefacts on hand, if a broad problem is presented upon a team of developers, it would be unwise to assume that they would simply solve the problem in a rigorous, streamlined approach on their own.
With that in mind, software architects are experts who understand the patterns behind building great, maintainable software. By looking at the grand vision behind the system, they can determine how the system should be built under the hood.
At Velocity Solutions, we believe that this understanding is yet another aspect that sets us apart. Letting an architect define which modules will need to be built, how they will be built, and how they will interact according to well-established principles is an essential process to create quality code. In our opinion, letting a team of developers simply break up a project into pieces and handle the problems each on their own is a recipe for potentially unmanageable software.
What does the Software Architect actually do?
The software architect analyzes the overall system (based on the requirements artefacts), and then devises which tasks need to occur and in what order. Planning these things ahead allows us to foresee which pieces of functionality should be built upfront to encourage code re-usability and good modularity within the system.
The overall architecture and the high-level tasks are defined with the help of the Unified Modeling Language (UML) as well, which also offers diagrams meant to convey ideas within the technical team. For example, a UML Class Diagram lets the developers know which modules need to be programmed, what their names and fields will be, and what their functions should be named.
An example Class Diagram
These diagrams, along with any other development information, are all produced by the software architect, who remains the centralized development authority, keeping the overall system's vision in mind. Again, having seen our fair share of third-party code where the lack of a centralized architecture is apparent in cases of code duplicity and poor manageability, we believe that this activity is primordial to succeed.
THE IMPLEMENTATION PHASE
Assembling a Development Team
With clear requirements unveiled at this point, Velocity Solutions can determine what team it needs to get the job done. This usually boils down to two (2) options:
Let the software architect(s) design, coordinate and implement the entirety of the project
Let the software architect(s) design and coordinate the project, and hire an outsourced development team to implement the majority of the tasks
The choice depends on the balance between management overhead (the more programmers involved, the more overhead), and other details such as availability of required talent.
When choosing an offshore team, we base our selection on their portfolio, example code and their ability to integrate with our internal ticket and code review platforms.
Keeping Track of Development Tasks
As the software architect documents the tasks and overall architecture of the system, development tickets are created for the development team to take care of.
These tickets are tracked and monitored through an internal web application we use within the team. This ticket-tracking system is used whether we are working with an in-house development team or an offshore, outsourced team. It is an efficient means to distribute the different tasks amongst the team and keep track of their respective progress, as well as clearly communicating the task's details and constraints (i.e. deadline).
An example screenshot of our internal issue-tracking platform
When developers have completed their respective tasks, all changes made to the code are submitted to another internal web platform of ours, which is used to perform peer code review. This means that the changes are displayed in the web page, and both the architect behind the task as well as an additional developer are required to approve the changes before it is officially submitted to the code base. This has proven to be an extremely good practice for catching last-minute bugs, or incomplete fulfillment of the tasks. All significant tasks require that their code is analyzed this way before being accepted.
An example screenshot of our internal code review platform
The need to setup development, acceptance and production environments is common in software projects. As such, our team has in-depth expertise in rapidly setting up servers and other services using the latest in cloud technology.
Specifically, we use the Amazon Web Services (AWS) and Microsoft Azure infrastructures to easily manage our environments. These platforms provide an excellent programming API (services available to programmers) which has allowed us to build an extensive library of automated backup scripts and other utilities useful to maintaining important server environments.
During the implementation phase, development and acceptance environments setups are bundled within the project itself (included in the price). Once the project is completed, the solution can be deployed to the customer's premises (if they have an I.T. department and the equipment available), or, for a fee, it can be easily hosted, secured and maintained in the cloud by Velocity Solutions.
Should the customer prefer the solution to be hosted on physical servers (outside the cloud), but taken care of by Velocity Solutions, we have an entire division devoted to that service that can be of assistance: Velocity Technology.
A diagram is worth a thousand words. The workflow below summarizes and depicts how Velocity Solutions manages to deliver successful software projects – consistently.
The Velocity Solutions Software Process diagram