Software Development Process
PMAT builds software in close collaboration with our customers in manageable iterative parts (sprints), giving our customers ownership of their product throughout the development lifecycle, resulting in products that performs to meet today’s need.
Our customers are a key participant in the project’s kickoff meeting. They provide the insight and guidance that establish the vision of the software project. Using this vision and other provided documentation, PMAT’s project team creates a project charter that captures the system requirements and team’s development rhythms, determining the frequency of development sprints and associated customer demos. System requirements are captured as concise user stories, focusing development on implementing functioning software vs. writing documentation. It is common that PMAT is able to start demonstrating features of a software system at the first sprint demo (typically 2-4 weeks).
Emerging solutions evolve and improve through an ongoing cycle of team learning and customer feedback. At the end of each development sprint, PMAT provides a system demonstration to our customers. Instead of merely mitigating the risk of change, we leverage unforeseen changes to create solutions that are better than what could have been envisioned at the start of a project. PMAT’s strategy allows the customer to truly own their product without the surprise of a big software delivery. These frequent demonstrations lead to refining the features right from the start of the project so as to increase the business value each feature provides. Discussions during these demonstrations allow both the customer and the team to share lessons learned and recommendations for improvement realized during the project; this results in prioritizing features that provide strategic business advantage. Our success is your success, your priorities are our priorities.
Since PMAT uses Continuous Integration technologies to provide a working software baseline throughout the life of the project, our customer also own their delivery schedule. Our customers decide if they want to take delivery of their system incrementally or when everything is complete. PMAT is familiar with the installation requirements at many government facilities and successfully delivered systems to them.
Embedded Quality Assurance:
Our quality assurance processes are designed to prevent bugs, not just fix them. At PMAT, we employ Test-Driven Development to help us catch design flaws and potential bugs as early as possible. Usually this means writing Unit Tests to verify interfaces and processing sequences before implementing actual business logic in code. PMAT also use strategies like Pair Programming to socialize designs and analyze them using a broader range of skills and experience. We find this particularly useful for developing junior staff members into solid journeyman engineers. We program in pairs to catch errors at the keyboard and adhere to a uniform, maintainable approach to architecture and software coding standards. Continuous integration ensures that a system works exactly as it’s designed to work after each and every change. Customer demonstrations and acceptance tests not only guarantee the code works properly, but also verify that the individual business functions of the system work correctly.
Team efficiency and project risks are monitored by capturing metrics regarding how long it takes for a team to complete the development of each user story. Trend analysis of the actual time to complete each user story compared to the team’s initial estimate help us improve our process, increasing efficiency without impacting quality. Teams use JIRA as a visual management system to track each user story through its lifecycle. All members of the team, including the customer, can view completed, active and upcoming stories at any time by viewing a team’s JIRA board. Project status in these tools ensure everyone is working off the same information. While the JIRA boards provides the priority of each user story and guides the team to write the necessary tests and code, customers can view the same board to see which stories have been completed and are ready for demonstration, and which stories have been prioritized for the team to work on next. SonarCube is also used to measure the code quality of the software baseline on a continuous bases.
Software Development Lifecycle (SDLC) Support:
PMAT’s preferred SDLC is Agile. Also intimately familiar with Waterfall and Spiral SDLCs, PMAT tailors our standard processes to match our customer’s project prescribed SDLC.
PMAT uses virtual hardware environments for our development, allowing our teams to simulate just about any environment configuration necessary. Whether your system will be hosted on a single computer, racks of servers or in the cloud, our team will support your needs.
PMAT employs a certified group of developers, including; CSEP, PMP, etc. In addition, PMAT has appraised CMMI level 3, December 2016.