Software Intelligence is insight into the structural condition of software assets produced by software designed to analyze database structure, software framework and source code to better understand and control complex software systems in Information Technology environments. Similarly to Business Intelligence, Software Intelligence is produced by a set of software tools and techniques for the mining of data and software inner-structure. End results are information used by business and software stakeholders to make informed decisions, communicate about software health, measure the efficiency of software development organizations, and prevent software catastrophes.
Capabilities
Because of the complexity and wide range of components and subjects implied in software, Software intelligence is derived from different aspects of software:
Software architecture refers to the structure and organization of elements of a system, relations, and properties among them.
Software flaws designate problems that can cause security, stability, resiliency, and unexpected results. There is no standard definition of software flaws but the most accepted is from The MITRE Corporation where common flaws are cataloged as Common Weakness Enumeration.
Software grades assess attributes of the software. Historically, the classification and terminology of attributes have been derived from the ISO 9126-3 and the subsequent ISO 25000:2005 quality model.
Software economics refers to the resource evaluation of software in past, present, or future to make decisions and to govern.
Components
The capabilities of Software intelligence generate an increasing number of components including:
Code analyzer to serve as an information basis for other Software Intelligence components identifying objects created by the programming language, external objects from Open source, third parties objects, frameworks, API, or services
Graphical visualization and blueprinting of the inner structure of the software product or application considered including dependencies, from data acquisition up to data storage, the different layers within the software, and the coupling between all elements.
Navigation capabilities within components and impact analysis features
List of flaws, architectural and coding violations, against standardized best practices, cloud blocker preventing migration to a Cloud environment, and rogue data-call entailing the security and integrity of software
Grades or scores of the structural and software quality aligned with industry-standard like OMG, CISQ or SEI assessing the reliability, security, efficiency, maintainability, and scalability to cloud or other systems.
Metrics quantifying and estimating software economics including work effort, sizing, and technical debt
Industry references and benchmarking allowing comparisons between outputs of analysis and industry standards
User Aspect
Some considerations must be made in order to successfully integrate the usage of Software Intelligence systems in a company. Ultimately the Software Intelligence system must be accepted and utilized by the users in order for it to add value to the organization. If the system does not add value to the users' mission, they simply don't use it as stated by M. Storey in 2003. At the code level and system representation, Software Intelligence systems must provide a different level of abstractions: an abstract view for designing, explaining and documenting and a detailed view for understanding and analyzing the software system. At the governance level, the user acceptance for Software Intelligence covers different areas related to the inner functioning of the system as well as the output of the system. It encompasses these requirements:
Comprehensive: missing information may lead to a wrong or inappropriate decision, as well as it is a factor influencing the user acceptance of a system.
Accurate: accuracy depends on how the data is collected to ensure fair and indisputable opinion and judgment.
Precise: precision is usually judged by comparing several measurements from the same or different sources.
Scalable: lack of scalability in the software industry is a critical factor leading to failure.
Credible: outputs must be trusted and believed.
Deploy-able and usable.
Applications
Software intelligence has many applications in all businesses relating to the software environment, whether it is software for professionals, individuals, or embedded software. Depending on the association and the usage of the components, applications will relate to:
Change and modernization: uniform documentation and blueprinting on all inner components, external code integrated, or call to internal or external components of the software
Resiliency and security: measuring against industry standards to diagnose structural flaws in an IT environment. Compliance validation regarding security, specific regulations or technical matters.
decisions making and governance: Providing analytics about the software itself or stakeholders involved in the development of the software, e.g. productivity measurement to inform business and IT leaders about progress towards business goals. Assessment and Benchmarking to help business and IT leaders to make informed, fact-based decision about software.
Marketplace
The Software Intelligence is a high-level discipline and has been gradually growing covering applications listed above. There are several markets driving the need for it: