Managing diverse technologies and clients requires a disciplined technical approach to produce applications and support services on time and within budget. We use our success-proven systems engineering and earned value management processes to control and guide custom software development. Our engineering process uses formal Scrum methodologies and is what makes our team stand out amongst other consulting firms. Borrowing a page from Dr. Deming, we also meld solid systems engineering and project management expertise in the software arena emphasizing the Plan-Do-Check-Adjust continuous improvement cycle. We provide a responsive core project management capability supported by our Colorado-based corporate technical and managerial staff. We use a short, direct "chain of command" from our project PMs to our corporate leadership, with a direct channel of communication from the customer back to the corporate level if needed. Our entire technical staff is also available for "reach-back" support to our teams, striving to provide specialized capability and surge support when and where needed. Our project teams actively employ a proven process and associated tools based upon "best practices" as advocated by the Software Engineering Institute's Capability Maturity Model.
DSoft Technology follows a proven iterative engineering approach to architecting, developing, enhancing, and maintaining IT systems called the "DSoft Technology Agile Development Methodology®." It applies collaborative and continuous improvement concepts to software development, emphasizing close collaboration between development teams and clients, frequent delivery of deployable code, face-to-face communication with clients, small teams, and identification of self-improvement activities. Our approach conforms to best practices used in the industry. These "best practices", championed and instituted by world-class IT firms, include: (1) Develop Iteratively, (2) Manage Requirements, (3) Use Component Architectures, (4) Model Visually, (5) Verify Quality, and (6) Control Changes.
We employ Model-based systems engineering in an Agile context to include requirements development, technical management and control, system/software design and architecture, integrated risk management, configuration management, data management, test and evaluation and V&V practices.
One of software development's bitter truths is, like it or not, requirements change. Traditional waterfall techniques ignore this fact and the result is a system that does not fulfill all the user's expectations. Our iterative approach allows for requirements to be factored into the design, even at later stages of the development cycle, resulting in higher quality applications. We expect to receive feedback, actively seek it, and are prepared to incorporate it into the requirements repository. Trying to baseline requirements too early in the life of a software development project simply guarantees less than optimal project delivery.
Our Agile approach stresses 1) a common understanding of all requirements between the client's software project staff and ourselves, 2) development of expert knowledge of the system's functionality, and 3) system documentation in SyRIS for reference, testing and maintenance.
1) Requirements and Fusion.
DSoft Technology engineers work with our Client's staff to review and refine the business objectives, business rules, and detailed requirements. As the components are defined, preliminary drafts are reviewed with the Client to validate our approach and identify potential issues. This is an iterative process maximizing Client input into the process. The documents produced for the detailed requirements package are reviewed with the Client while in progress to identify and resolve potential issues. Preliminary reviews of work in progress are held frequently to validate our approach and to identify/resolve potential issues early on. The real product of this process is the expert knowledge gained and documentation from which the system will be built. Using a requirements traceability matrix coupled with a testing process, we ensure 100 percent of the requirements are implemented in the delivered product.
2) Analysis and Design.
Based on the above requirements and fusion process, dialog flow diagrams and prototyped conceptual screen mock-up images are developed to "play back" the typical usage scenarios to the users. In true use case fashion, we prototype a series of user screens to represent the project's business critical functions. Feedback from Client review is used to further refine the requirements.
This step is the actual code development. DSoft Technology will develop software according to best commercial coding practices. We also encourage a rapid prototyping approach to deploy components to a test/staging server as new functionality is made available. We proactively encourage incremental reviews of our work-in-progress by our Clients to validate the product is meeting all expectations.
4) Test and Evaluation.
Having developed operational systems for government and commercial clients, we understand software that must work 24x7. We dedicate significant time to implement the entire test processes including: planning and control, analysis and design, implementation and execution, exit criteria and reporting and closure activities. We also test the software using a Multi-Tiered Testing Strategy including appropriate time for: component testing, integration testing, system testing, user acceptance testing, operational testing, contract and regulation acceptance testing, alpha and beta (field) testing, and build and deployment testing. Testing will be performed in an environment specifically designed for testing and staging software into the production system. Although we perform informal unit testing in the development environment, formal testing is based on test cases developed against the final requirements set. We conduct SQA audits, formal technical reviews and inspections on all components of our software to ensure technical validity, and quality of our work.
5) Deployment, Integration, and Optimization.
This stage involves final integration configuration and deployment to run properly in the Client's production environment. Working with Client project staff, we assist in loading the software to the server and configuring it to run properly. Once integration is complete, Client acceptance testing is initiated upon acceptance of the operational test report and approval of the acceptance test plan from the previous phase. DSoft Technology also provides assistance with operations, upgrades and optimization of the solution as new requirements emerge. Depending on the contract, the DSoft Technology warranty and maintenance periods start.