We offer a wide variety of custom software development services using many technologies. In the past, we have developed websites, web applications, Java applications, mobile apps (using native iOS and Android technologies like Swift and Kotlin), search engines, E-commerce platforms and more complex platforms for working with knowledge and semantic technologies. Our wide range of services in this area is all driven by a consistent and well-formed methodology and process to ensure we deliver the final software our clients want on time and on budget.
All software projects start with a Statement of Project Objectives. This document captures the high level purpose of a project and defines the Key Performance Indicators (KPIs) that will be used as measurements for success. The SOPO is important because it ensures all key stakeholders share a common understanding of the purpose and scope of a software project.
Typically, these services then enter a very thorough discover phase. During this phase, we use a proven model-driven methodology to capture business requirements, a complete list of stakeholders, data requirements (both upstream and downstream) and develop negation rules and test cases. Prior to a single line of code being written, we present the business domain Product Requirement Documents (PRD's) to the client to review, alter (if necessary) and sign off on. These documents include detailed use cases called "User Epics" which capture patterns of use for various aspects of the software. At the end of this program of work, the core deliverable is the PRD documentation which can be used by any engineer or architect to build technical requirements documents.
We define architecture as “a set of views and documentation that define a system or systems, the major components within the system, their externally visible properties and the relationships amongst them”. Using the User Epics as input, we map business requirements to a technical requirement. This facilitates two important tasks:
This process also allows us to gain vision into the projected overall costs and also allows us to map solution technologies to fulfill each business requirement. This stage is not deemed complete until the Customer accepts the solution architecture. Step four (below) may begin prior to the completion of the architecture and engineering stage for a specific project. Typically, once an architecture is 85% complete, enough is known to begin development iterations that help uncover additional details for the architecture.
We have also developed a catalog of common architectural patterns and developed software modules that implement these patterns. This include common tasks such as user management, remote mobile device administration, security policy enforcement, peer to peer video interactions, mobile payments processing gateways and more. These modules may be introduced as part of the solution along with an overview of license costs and benefits. Typically, the adoption of these modules saves a customer money and architectural cycles.
Moving forward, our engineers work hard to come up with solutions for specific tasks or problems. We utilize a hybrid approach that combines many of the top design and development methodologies including Agile, Rational Rose Unified Process, auxiliary methods like Kanban and Github workflows along with automated testing. Using patterns from our vast internal collection, we combine sollutions and take note of any blockers or issues.
Engineering is a discipline that also requires us to keep clients engaged as there are often more than one way to accomplish the end states. When there are multiple solutions, we work wth our clients to present the pros and cons of each option. In our experiences, there are often considerations that clients are aware of that were not previously communicated that can tip the balance of the scales towards an option.
A combination of sequencing and resource allocation can be planned once an architecture is complete. We typically present a development plan to our customers using a format of "At the end of this iteration (1-2 weeks) we will be able to demonstrate <functionality>”.
The Agile process is core to our development methodology. Agile is a continuous process of scrums and sprints that repeat the following cycles:
The above list represents our version of the agile model. The iterative steps often require work in at least 3-4 concurrent steps of the process to deliver the best results.
If the software is for internal uses, we often find there are cultural and knowledge gaps that may also need to be addressed. These are represented in the graphic above on the far right hand side with the green rectangle labelled "Business Monitoring". As the software is deployed into a production environment, it often requires training, documentation and in some cases, business coaching to ensure employees can migrate to the new systems without disrupting business activities.
Every single software project is unique in it's scope and execution. While the end results can be as different as apples and oranges, the core processes and workflows are very consistent and we stick to a proven methodology. This enables us to develop software systems with much less cost than other companies, with high quality results.
if you have a custom software project, we can help. Any new clients receive a 100% free initial consultation with us. Please use the contact form to reach out if you have any questions.
© 1996-2023 Canadian CyberTech Creative