Application development is the process of designing, developing, deploying and maintaining software for a set of users or organizations. It is different to commercial off-the-shelf software (COTS) in that custom application development aims at a narrowly defined set of requirements. COTS targets a broad set of requirements, allowing it to be packaged and commercially marketed and distributed.
DMS got experience with all aspects of software development. We have adopted and streamlined industry best practices in an effort to deliver technology solutions that benefit our customers.
- Defining the project scope. Our Business Analysts work with the business users to clearly define the project scope.
- Development. Our Developers implement the requirements as verified by the business users.
- Stabilization. Working with the business users, our Quality Assurance team go through multiple rounds of Functional Testing and User Acceptance Testing.
- Delivering project to the customer. Our Deployment Specialist will deploy the software to your environment, on-premise or in the cloud.
- Maintenance and support. Our Managed Services team will maintain and support your software.
- What is Agile? Agile is a term used to describe approaches to software development emphasizing incremental delivery, team collaboration, continual planning, and continual learning.
- Frameworks and practices. Agile is a mindset that drives an approach to software development.
- Agile frameworks are approaches to phases of the software development lifecycle – planning, execution, and delivery. They prescribe a method for accomplishing work, with clear guidance and principles, i.e. Scrum.
- Agile practices are techniques applied during phases of the software development lifecycle, e.g. Planning Poker (a collaborative estimation practice) and Continuous Integration (CI).
- What Agile is not.
- Cowboy coding, e.g. figuring it out as we go.
- Without rigour and planning.
- An excuse for not having a roadmap.
- Development without specification.
- Why Agile? Agile methods and practices establish a culture and environment where solutions emerge through collaboration, continual planning and learning, and a desire to ship high quality software more often.
What is DevOps? DevOps is the union of people, process, and products to enable continuous delivery of value to our end users. Essential DevOps practices include agile planning, continuous integration, continuous delivery, and monitoring of applications.
Adopting DevOps practices enables your enterprise to shorten your cycle time by working in smaller batches, using more automation, hardening your release pipeline, improving your telemetry, and deploying more frequently.
Continuous Integration drives the ongoing merging and testing of code, which leads to finding defects early, less time wasted on fighting merge issues and rapid feedback for development teams.
Continuous Delivery of software solutions to production and testing environments helps organizations quickly fix bugs and respond to ever-changing business requirements
Version Control enables remote teams to communicate effectively during daily development activities and to integrate with software development tools for monitoring activities such as deployments.
Agile planning and lean project management techniques are used to plan and isolate work into sprints, manage team capacity, and help teams quickly adapt to changing business needs.
Monitoring and Logging
Monitoring and Logging of running applications including production environments for application health as well as customer usage, helps organizations form a hypothesis and quickly validate or disprove strategies. Rich data is captured and stored in various logging formats.
Infrastructure as Code
Infrastructure as Code (IaC) is a practice which enables the automation and validation of creation and teardown of environments to help with delivering secure and stable application hosting platforms.
Microservices architecture is leveraged to isolate business use cases into small reusable services that communicate via interface contracts. This architecture enables scalability and efficiency.
Containers are the next evolution in virtualization. They are much more lightweight than virtual machines, allow much faster hydration, and can be easily configured from files.