Ideas of what could we do
Current state:
- We have a platform
- We need a support of plugins (component, modules) to extend the platform based on different customer's needs
Topics with highest relevance
(A) (automatic) adaptation to evolving APIs? -- see notes from brainstorming
- generating adaptation and modification of third party-components (existing clients) to changes in our API
- what-if scenarios - which clients would I break with such-and-such API change?
- search a repository for a relevant API for an existing client
- metrics to assess API - stability, complexity
- process to support the above - how to assess API, how to evolve it, what to do after it evolved
(B) testing of components based on semi-real data
- monitoring (QoS?) in customer environment, obtaining real usage data
- generating tests (mainly load, performance, reliability) with data based on those monitored
- testing in a simulated environment
- visualization of results and metrics and test results
A previous list of possibly relevant topics (with relevance to IW needs):
- communication of components with each other and communication of components with the platform (high)
- a unified way of communication
- an 'universal' bus, events, messaging, ...
- monitoring of messages coming through
- filtering of messages
- authentication of messages
- role based authorization mechanism
- verification of components compatibility (medium)
- verification of different version on components
- replacement of an old components by a new one.
- verification of compatibility of third-party components
- (vaclav sykora) I don't fully undestand the point
- visualization of components (low)
- visualization of considerable wide set of components
- monitoring of runtime state of components
- monitoring of customer installation
- Custom metric visualization (including QoS?)
- Exploring component dependencies
- Traceability analysis (including EFP)
- configuration of components based on customer needs (high)
- product lines
- components customized based on customer needs.
- different edition for different prices
- Tool for dependencies visualization and assembling
- Visual exploring of variation/extension points
- deployment of components to the running platform (low)
- updates of running systems
- Automatic update hints (with/without visualization)
- seamless update without restart
- configuration on the fly
- repository of components (medium)
- a unified storage
- building up the application from storage
- mining components based on configuration
- monitoring and testing of components (high)
- testing in development environment
- monitoring (QoS?) in customer environment
- Visualization of results and metrics and test results in diagram
- analysis of platform-plugin-component structure/technology solution
- development, SCM and build support
Visualization can be useful in following points mentioned above:
- verification of components compatibility
- repository of components
Additional ideas:
- Internal component analysis
- Visual comparison of views
- Automatic finding components in code (or macro-components in components)