Journal "Software Engineering"
a journal on theoretical and applied science and technology
Issue N5 2018 year
Most of modern software applications widely use third-party components and libraries. It can simplify design and development and can reduce cost and time to market. The main problem of using third-party components is a lack of acceptable documentation. This lack is a cause of low quality of such multicomponent projects and leads to different program defects. The article reviews modern approaches to formal language-based specification of software libraries. Such language-based specifications can be used for automation of some class of software engineering tasks related to multicomponent projects when source code of components is unavailable. Based on formulated requirements syntax and semantics of new language LibSL for partial specification of libraries were developed. LibSL is based on formalism of interacting extended finite state machines which was created by author before. The created language can specify library interface and its visible behavior. Each public function from library API is described by its signature and high-level behavior. Interacted extended finite state machines are defined explicitly by means of states and shifts descriptions. Such specifications can help automate several actual tasks of software engineering such as defect detection of software which uses external libraries, library access protocol correctness verification, libraries compatibility check, software reengineering etc.