Course Outline
QA/CI for Government
- What is Quality Assurance (QA)?
- What is Continuous Integration (CI)?
- The costs associated with software development, refactoring, and fixing errors
- Identifying and understanding the project requirements for government
- Benefits to the organization for government operations
Domain-Driven Design (DDD) for Government
- Software development aligned with business requirements using Domain-Driven Design (DDD)
- Challenges in communication between IT and business stakeholders for government
- The concept of a domain model for government applications
Best Practices for Government Software Development
- The KISS principle and DRY methodology for efficient coding
- Establishing and adhering to coding standards for government projects
- Creating reusable code through Object-Oriented Programming (OOP) and design patterns for government applications
- Identifying and reducing cyclomatic complexity in government software
Software Metrics for Government
- Weight Method per Class for assessing class complexity
- Response For a Class to evaluate class responsibilities
- Depth of Inheritance Tree to measure class hierarchy depth
- Coupling Between Objects to assess dependencies between classes
- Lack of Cohesion of Methods to identify method cohesion issues
- Number of Children to count subclasses
- Cyclomatic complexity to measure code complexity
- Metrics class for comprehensive metric evaluation
- Model Metrics for domain model assessment
- Metrics for use in various stages of development for government
Software Testing for Government
- Determining what, when, and how to test software for government applications
- The methodologies of "white-box" and "black box" testing for government systems
- The role of testing in agile methodologies for government projects
- Total cost implications of Test-Driven Development (TDD) for government projects
- Unit testing with JUnit (Java), PHPUnit (PHP) for government applications
- Behavioral tests using JBehave (Java), Behat and Mink (PHP) for government systems
- Functional testing for comprehensive system validation for government software
Refactoring for Government Software
- What is refactoring in the context of government software development?
- The concept of technical debt in government IT projects
- Identifying code smells in government applications
- Common refactoring patterns for improving government software quality
Documentation for Government Software Development
- The importance of documentation in agile methodologies for government
- What to document in government projects?
- Types of documentation required for government software development
- Documentation and agile methodologies: balancing working software with necessary documentation for government
- Standard XMI for model interchange in government applications
- Automatic generation of documentation from Javadoc (Java), ApiGen (PHP) for government projects
Tools and Environment for Continuous Integration (CI) for Government
- Tools and environment for CI
- PMD (Java), phpmd (PHP) for code analysis
- CPD (Java), phpcpd (PHP) for detecting duplicate code
- Lines Of Code Counter (Java), phploc (PHP) for measuring code size
- UCDetector (Java), phpdcd (PHP) for unused code detection
- Jdepend (Java), phpdepend (PHP) for dependency analysis
- Jenkins Continuous Integration Server for government projects
Agile and CI/QA for Government
- Planning and incremental development in government software projects
- Embracing change in government IT environments
- Short sprints for rapid delivery in government projects
- Interdisciplinary teams for comprehensive project management in government
- Extreme Programming (XP) and code review practices for government software
- Prioritizing individuals and interactions over processes and tools in government development
Summation for Government
- Discussion of key points for government stakeholders
- Questions from the audience for government participants
- Steps to begin the process of implementation for government projects
Requirements
Testimonials (5)
Engaging, and hands on practise.
Balavignesh Elumalai - Scottish Power
Course - SonarQube for DevOps
Trainer has in depth experince and well narreated in deed. The depth of the knowledge and the passion for teaching is highly appriciated.
Anup Kumar - SMR Automotive Mirrors Stuttgart
Course - Jenkins 2: Building CI/CD Pipelines
The trainer was very well organized. He explained about all the tools required for the training in the beginning. The trainer happily clarified all the doubts and practical use cases were discussed.
Vivek Verma - Global Knowledge Network Training Ltd
Course - DevOps Practical Implementation and Tools
Very detailed, trainer knows the subject very well and has covered a lot of topics
Gabriel Kelly Navarro - Opswerks
Course - Advanced Spinnaker
Luke was very knowledgeable, patient, and very open to satisfy my curiosity, for example I asked him to generate errors to see how system will response, etc. He would go above and beyond to answer questions or demonstrate the functionalities, even some of my questions were out of the class scope. He gave me a real experience with the system. I definitely will take another class with him and recommend him as a teacher for others. Thank you Luke!.