GUI Development Process
How We Develop Excellent Software
Our Philosophy And Culture
Continuous attention to technical excellence and good software design
Ensure high quality – do automated testing
Individual responsibility and clearly defined roles
User centric approach
Transparency to the customer
Quick response time
Usage of agile processes (based on Scrum, SAFe)
Continuous improvement
GUI Development Process
Requirements
Backlog
Planning
Realization
Verification
Release
Maintenance
- Understand customer expectation
- Define project scope, goals and schedule
- Collect and analyse requirements
- Detect system / legal constraints
- Identify stakeholders
- Check customer skills
- Analyse specifications and standards
- Evaluate feasibility (rough effort estimation)
- Prioritisation of requirements (together with customer/partner)
- Detect project risks
- Define Proof of Concept (PoC)
- Check if a graphical design is required
- Create Sprint backlog or Gant chart
- More detailed effort estimation (if necessary)
- Prioritisation of working packages and tasks
- Involve the customer
- Do resource planning
Concept & Design
- Ensure specification process before implementation starts
- Double-check with customer
- Modularity to improve testability and scalability
- Portability (using HW and OS abstraction layer)
- Do UX and graphical design work first if required
- Define usage of 3rd party stacks
- Define design patterns
Implementation & Porting
- Defined responsibilities for each SW component
- Coding standard unifies sources (tools ensure its observation)
- Get benefit of Embedded Wizard tool
- Use simulation to reduce dependencies
- Porting to target platform
- Adaptation to customer MW
- Realisation/Integration in reference or example applications
Documentation
- Continuous adaptation of descriptions and changelogs
- Tools verify completeness and conformance of in-line descriptions
- Automated generation of documentation
- Documentation generated from source code to ensure synchronicity
- How-to documents for customer side integration
- Defined responsibilities for test applications (separate from implementer)
- Automated testing established
- Regression testing on multiple platforms
- Traceability: verification based on requirements
- Continuous test improvement (code coverage, bug fix verification)
- Static code analysis
- Own test environments for GUI and C-Code
- Add 3rd party test suites (if applicable)
- Defined release process
- Packaging of Software + Documentation + Test Reports
- Fully reproducible and archived release packages
- Release usage: examples, code snippets, reference applications
- Release notes with change log
- Dual control prior to release
- Hand over training (optional)
- One face to the customer
- Guaranteed response time
- Frequent synchronization with the customer
- Align bug tracking process
- Incremental releases
- Monthly status reports