Content
Services
The strong operational background and deep knowledge of Kalimetrix's consultants has led them to create a unique software quality referential. This referential adhers to the normative requirements that the software industry must comply to while taking into account the strong cost and time constraints that it is submitted to.
This referential is made available to Kalimetrix's customers through strong value added services.
Software Requirements Engineering
- Definition of quality requirements for software products,
- Support to software acquisition process (e.g. writing Terms Of References),
- Requirements management all along the life cycle (change management, traceability),
Software Product Evaluation
- Maintainability & Reliability of Ada, C, C++, Java source code,
- Code verification for safety-related software (compliance to the IEC 61508 international standard),
- Source code compliance to the Galileo Software Standard
- Inspection of the test documentation,
- Tailored audit for selected software characteristics (ISO/IEC 9126-1 Quality Model),
Software Process Evaluation
- Compliance with international initiatives and standards: CMMI, SPICE, ISO/IEC 12207, ISO 15504, etc.
- Audit of Software support processes:
- Documentation,
- Configuration Management,
- Quality Assurance,
- Quality Control : Review, Verification, Validation, Audit
- Change Management.
Software Quality Assurance
- Elaboration of quality standards for design, coding, testing, documentation etc.
- Development of Software Quality Assurance Plans,
- Review and follow-up of software plans,
- Product validation
- Development of software/process product improvement plan.
Software Testing Workbench
- Implementation of environment (methods and tools) for test automation,
- Set-up of Acceptance test strategy,
- Design of software test plans for Validation, Acceptance, etc.
Source Code Analyzers Development
- Development of source code analyzers for specific languages: Delphi, Cobol, Assembler
- Integration with Telelogic Logiscope.
Simplifying software maintenance
Context
Volume of code is more and more important. Even if the code is developed with efficient techniques, during time it is degraded. During evolutions and bugs fixing, new code is added, not necessary in an efficient way, code is duplicated. Some functions are replaced and the original ones are not removed. Then the number of code lines increases during time and it is very difficult to distinguish between useful code and not used code.
Experience shows that software developed since more than 10 years contain more than 30% of not used code lines. Comments are not up to date. Evolutions are difficult to do, very costly and the risk to introduce defaults is very high.
When no more evolution is possible, the only solution is to rewrite all the code with associated risks and costs.
Kalimetrix proposes techniques and associated tools in order to improve the maintainability of software by removing unused code and reorganizing useful code.
Steps
The process proposed by Kalimetrix is:
- Phase 1: An inventory of software is done. An evaluation of defaults and improvements is made:
- Localization of potential bugs
- Localization of complex functions which have to be simplified
- Localization of unused code
- Localization of duplicated code
- Localization of design problems
- Identification of reusable components
- Phase 2: an evaluation of simplification work is done : cost and expected benefits are identified
- Phase 3: an action plan is set up
- Phase 4: action plan is executed
- Phase 5: assessment
Available modules
During phase 1, following modules are available:
- M1 : Module for identification of potential bugs by checking used of dangerous constructions of the used language
- M2 : Module for searching more complex functions by computing metrics on the code
- M3 : Module for searching unused code (never called sub-programs, not used headers, not used declarations)
- M4 : Module for searching code duplications
- M5 : Module for locating code which is in a wrong place (for example, a sub-program uses a common data and is not in the part of the code which is in charge of handling this data)
- M6 : Module for searching objects which were not identified during design (for example several sub-programs are using parameters “name”, “forename”, “age”, we can deduce an object “person” was not identified during design).
- M7 : Module for simplifying dependencies between source files (if file A is using file B and file B is using file A, maybe it is possible when transferring some sub-programs from A to B or from B to A to have independence between A and B).
