MAT achieves secure software delivery using an agile development framework. Many organizations automate routine tasks with out-of-the-box capabilities of commercial off-the-shelf software such as SAP or Oracle. However, many organizations require custom developed solutions to specific challenges, to include compliance, changing processes, speeding up processes through automation, enhancing flexibility in processes, implementing standard data sharing throughout the organization, and replacing outdated applications. MAT provides trusted and experienced leadership, skilled developers, and proven approaches to ensure the success of our clients’ software development initiatives. MAT uses proven techniques and software, middleware and cloud-based development services using agile scrum, lean, Kanban and traditional software development life-cycle approaches. We conduct quality-assurance testing to ensure bug-free software, provide training solutions to ensure effective use, and help desk support to ensure a smooth transition to a new application.
Agile Scrum Methodology
Scrum is a lightweight agile project management framework with broad applicability for managing and controlling iterative and incremental projects of all types. Scrum has garnered increasing popularity in the agile software development community due to its simplicity, proven productivity, and ability to act as a wrapper for various engineering practices promoted by other agile methodologies. With Scrum methodology, the “Product Owner” works closely with the team to identify and prioritize system functionality in form of a “Product Backlog”. The Product Backlog consists of features, bug fixes, non-functional requirements, etc. – whatever needs to be done in order to successfully deliver a working software system. With priorities driven by the Product Owner, cross-functional teams estimate and sign-up to deliver “potentially shippable increments” of software during successive Sprints, typically lasting 30 days. Once a Sprint’s Product Backlog is committed, no additional functionality can be added to the Sprint except by the team. Once a Sprint has been delivered, the Product Backlog is analyzed and reprioritized, if necessary, and the next set of functionality is selected for the next Sprint. Scrum methodology has been proven to scale to multiple teams across very large organizations.
Lean and Kanban Software Development
Lean Software Development is an iterative agile methodology and owes much of its principles and practices to the Lean Enterprise movement, and the practices of companies like General Motors and Toyota. Lean Software Development focuses the team on delivering Value to the customer, and on the efficiency of the “Value Stream,” the mechanisms that deliver that Value. The main principles of Lean methodology include: eliminating waste, amplifying learning, deciding as late as possible, delivering as fast as possible, empowering the team, building integrity and seeing the whole.
Lean methodology eliminates waste through such practices as selecting only the truly valuable features for a system, prioritizing those selected, and delivering them in small batches. It emphasizes the speed and efficiency of development workflow, and relies on rapid and reliable feedback between programmers and our clients. Lean uses the idea of work product being “pulled” via client request. It focuses decision-making authority and ability on individuals and small teams, since research shows this to be faster and more efficient than hierarchical flow of control. Lean also concentrates on the efficiency of the use of team resources, trying to ensure that everyone is productive as much of the time as possible. It concentrates on concurrent work and the fewest possible intra-team workflow dependencies. Lean also strongly recommends that automated unit tests be written at the same time the code is written. The Kanban Method is used by organizations to manage the creation of products with an emphasis on continual delivery while not overburdening the development team. Like Scrum, Kanban is a process designed to help teams work together more effectively. Kanban is based on 3 basic principles:
- Visualize what you do today (workflow): seeing all the items in context of each other can be very informative
- Limit the amount of work in progress (WIP): this helps balance the flow-based approach so teams don ‘t start and commit to too much work at once
- Enhance flow: when something is finished, the next highest thing from the backlog is pulled into play