WO2017052318A1 - 소프트웨어 분석 방법 및 장치 - Google Patents

소프트웨어 분석 방법 및 장치 Download PDF

Info

Publication number
WO2017052318A1
WO2017052318A1 PCT/KR2016/010738 KR2016010738W WO2017052318A1 WO 2017052318 A1 WO2017052318 A1 WO 2017052318A1 KR 2016010738 W KR2016010738 W KR 2016010738W WO 2017052318 A1 WO2017052318 A1 WO 2017052318A1
Authority
WO
WIPO (PCT)
Prior art keywords
function
sub
functions
risk
risk analysis
Prior art date
Application number
PCT/KR2016/010738
Other languages
English (en)
French (fr)
Inventor
박지환
김은정
천선일
최도연
Original Assignee
(주)씽크포비엘
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020150136251A external-priority patent/KR101706098B1/ko
Priority claimed from KR1020150151599A external-priority patent/KR101734418B1/ko
Application filed by (주)씽크포비엘 filed Critical (주)씽크포비엘
Publication of WO2017052318A1 publication Critical patent/WO2017052318A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Definitions

  • the present invention relates to a software analysis method and apparatus.
  • the software is widely used for on-site monitoring, risk detection and analysis, hazard warning and propagation, on-site response, and safety training to prevent disasters, minimize damage from disasters, and quickly recover from disasters.
  • the software itself may be the cause of disaster safety accidents.
  • the software error in the energy management system caused the largest power outage in history in the United States, with the world's best power grid and technology, and the sudden failure caused by software defects embedded in the automotive electronic control unit. There is an enemy.
  • the dependence of software on automobiles, railways, aviation, power, defense, healthcare, finance, and telecommunications increases, the scope and scale of human and disaster damage caused by software errors are increasing. ), The necessity of systematic management is emerging.
  • Securing and verifying the safety of software is an area where the experience of domain experts is important. Therefore, in order to acquire safety analysis knowledge and accumulate domain experience, an assistive technology capable of performing software safety diagnosis at a low training cost is required. In addition, there are problems when domain experts perform software safety diagnostics, which can lead to human errors such as missing the most important risk factors in risk analysis.
  • An object of the present invention is to provide a software analysis method and apparatus for easily providing a software safety diagnosis so as to identify the software risk without direct help of domain software safety diagnosis experts.
  • An object of the present invention is to provide a software risk analysis method and apparatus that provides an efficient software safety diagnosis that can identify the software risk.
  • a software analysis method may include obtaining source code of the software.
  • the source code includes a main function and a plurality of sub-functions called by the main function, each of the plurality of sub-functions classified into a basic library or a user library, and an annotation, a function name, an input parameter name.
  • function information including internal implementation text.
  • the method includes generating a function syntax tree composed of the plurality of sub-functions by operating the source code, classifying each of the plurality of sub-functions constituting the function syntax tree into an abstract level or a concrete level; Inferring a function of each of the plurality of sub-functions constituting the function syntax tree, and constructing a function list function structured tree by structuring sub-functions having the same inferred function among the plurality of sub-functions. can do.
  • a software risk analysis method may comprise building a risk analysis type classification table comprising a plurality of records, and obtaining domain information of the software.
  • each of the plurality of records of the risk analysis type classification table includes an ID, a domain ID, a hazard analysis type, a related system and a document, and the software is composed of source code, and the source code is It includes one main function and a plurality of subfunctions called by the main function.
  • the method comprises: obtaining a function list function structured tree of the software, classifying a risk analysis type using the risk analysis type classification table for each of the plurality of function items of the function list function structured tree, And visualizing causality of risk factors based on the domain information of the software and the classified risk analysis type.
  • the function list function structured tree is composed of a plurality of function items, and each of the plurality of function items includes at least one sub function of the plurality of sub functions.
  • FIG. 1 is a flow diagram of an exemplary process for providing software analysis in accordance with an embodiment of the present invention.
  • FIG. 2 is a diagram illustrating a process of analyzing a source code by lexical analysis, analyzing the source code using a token string, and parsing using a parser.
  • FIG. 3 is a diagram illustrating a function syntax tree generated by calculating an abstract syntax tree according to an embodiment of the present invention.
  • 4A to 4D are diagrams illustrating mutual call relationships of some sub-functions constituting the function syntax tree of FIG. 3.
  • FIG. 5 is a table classifying the sub-functions of FIGS. 4A to 4D into an abstract level and a concrete level according to an embodiment of the present invention.
  • FIG. 6 is a diagram illustrating a process of rewriting a part of the function syntax tree of FIG. 3 into a function structured tree according to an abstract level.
  • FIG. 7 is a diagram illustrating DB information in which a subject of a domain (full text) area and a subject of a general function list are defined in advance according to an embodiment of the present invention.
  • FIG. 8 is a diagram illustrating a process of grouping identical sub-functions by inferred functions according to an embodiment of the present invention.
  • FIG. 9 is a diagram illustrating a function list function structured tree according to an embodiment of the present invention.
  • FIG. 10 is a diagram illustrating an exemplary apparatus for analyzing software.
  • FIG. 11 is a diagram illustrating an exemplary software risk analysis device for analyzing a software risk.
  • FIG. 12 is a diagram illustrating a domain table according to an embodiment of the present invention.
  • FIG. 13 is a diagram illustrating a risk analysis type classification table according to an embodiment of the present invention.
  • FIG. 14 is a diagram illustrating a risk checklist table for each risk analysis type according to an embodiment of the present invention.
  • 15 is a diagram illustrating a causal relationship table of risk factors according to an embodiment of the present invention.
  • 16 is a diagram illustrating a logical association between tables according to an embodiment of the present invention.
  • 17 is a flow diagram of an example process for providing risk analysis of software in accordance with an embodiment of the present invention.
  • 19 is a diagram visualizing risk factors according to a causal relationship according to an embodiment of the present invention.
  • a software analysis method may include obtaining source code of the software.
  • the source code includes a main function and a plurality of sub-functions called by the main function, each of the plurality of sub-functions classified into a basic library or a user library, and an annotation, a function name, an input parameter name.
  • function information including internal implementation text.
  • the method includes generating a function syntax tree composed of the plurality of sub-functions by operating the source code, classifying each of the plurality of sub-functions constituting the function syntax tree into an abstract level or a concrete level; Inferring a function of each of the plurality of sub-functions constituting the function syntax tree, and constructing a function list function structured tree by structuring sub-functions having the same inferred function among the plurality of sub-functions. can do.
  • a software risk analysis method may comprise building a risk analysis type classification table comprising a plurality of records, and obtaining domain information of the software.
  • each of the plurality of records of the risk analysis type classification table includes an ID, a domain ID, a hazard analysis type, a related system and a document, and the software is composed of source code, and the source code is It includes one main function and a plurality of subfunctions called by the main function.
  • the method comprises: obtaining a function list function structured tree of the software, classifying a risk analysis type using the risk analysis type classification table for each of the plurality of function items of the function list function structured tree, And visualizing causality of risk factors based on the domain information of the software and the classified risk analysis type.
  • the function list function structured tree is composed of a plurality of function items, and each of the plurality of function items includes at least one sub function of the plurality of sub functions.
  • 'module' or 'unit' refers to a functional part that performs at least one function or operation, and may be implemented in hardware or software, or a combination of hardware and software.
  • a plurality of 'modules' or a plurality of 'units' may be integrated into at least one module except for 'modules' or 'units' that need to be implemented by specific hardware, and may be implemented as at least one processor.
  • FIG. 1 is a flow diagram of an exemplary process for providing software analysis in accordance with an embodiment of the present invention.
  • software analysis begins with obtaining a source code (S110). After acquiring the source code to be analyzed, lexical analysis is performed on the source code using a scanner, and the source code is separated into token columns, and a parser (for the token column generated through the lexical analysis) Syntax syntax is performed using a parser to generate an abstract syntax tree (S120).
  • the source code includes one main function and a plurality of subfunctions called by the main function, each of the plurality of subfunctions being classified as a main library or a user library, and including comments, function names, input parameter names And function information including internal implementation text.
  • the abstract syntax tree generated as a result of the parsing may be converted into a function syntax tree by inferring or analyzing necessary information according to the meaning of the function using a semantic analyzer.
  • each of the plurality of sub-functions may be classified into an abstract level or a concrete level based on mutual call relationships among the plurality of sub-functions constituting the function syntax tree.
  • the function syntax tree may be reconstructed according to the abstraction level.
  • the functions of the plurality of sub-functions constituting the rewritten function structured tree may be inferred.
  • the function list function structured tree may be generated by structuring sub-functions having the same inferred function.
  • FIG. 2 is a diagram illustrating a process of analyzing a source code by lexical analysis, analyzing the source code using a token string, and parsing using a parser. Referring to FIG. Hereinafter, step S120 of FIG. 1 will be described in more detail with reference to FIG. 2. As shown in Figure 2, the source code obtained in the exemplary embodiment is as follows.
  • the scanner may use a lexer generator. Parsing each parsed token column using a parser can generate an abstract syntax tree. In one embodiment, the parser may use a Parser generator.
  • FIG. 3 is a diagram illustrating a function syntax tree generated by calculating an abstract syntax tree according to an embodiment of the present invention.
  • step S130 of FIG. 1 will be described in more detail with reference to FIG. 3.
  • a function syntax tree can be generated by abstracting the abstract syntax tree by inferring and analyzing necessary information about the abstract syntax tree using a semantic analyzer.
  • the function syntax tree may illustrate the interrelationship of a plurality of subfunctions.
  • the exemplary function syntax tree of FIG. 3 is a tree in which a plurality of sub-functions are connected to a parent node or a child node according to an interrelationship of a plurality of sub-functions with a function having a function name ('sysdev_class_remvoe_file') as a root node.
  • 4A through 4D are diagrams illustrating mutual call relationships among some sub-functions among a plurality of sub-functions constituting the function syntax tree of FIG. 3.
  • a mutual call relationship may be checked for each of a plurality of sub-functions constituting the function syntax tree. For example, in FIG. 4A, a sub function having a function name 'sysfs_drop_dentry' is called by a sub function having a function name 'sysfs_addrm_finish'. In FIG. 4A, a sub function having a function name 'sysfs_drop_dentry' is called by a sub function having a function name 'sysfs_addrm_finish'.
  • a subfunction having a function name calls nine subfunctions, each of which is named 'sysfs_type', 'mutex_unlock', '_d_drop', 'd_put', 'd_unhashed', and 'dget_locked' , 'mutex_lock', 'iput', and 'ilookup'.
  • the sub function having the function name 'sysfs_addrm_finish' is called by the sub function having the function name 'sysfs_hash_and_remove'.
  • a subfunction having a function name ('sysfs_addrm_finish') calls six subfunctions, each of which is' sysfs_deactivate ',' sysfs_put ',' unmap_bin_file ', mutex_unlock', 'sysfs_drop_dentry' and 'iput'. .
  • a sub function having a function name ('list_empty') is called by six sub functions.
  • the function names of the calling sub function are 'unmap_mapping_range', 'dput', '_mutex_unlock_common_slowpath', 'dentry_lru_del', and '_mutex_lock_common' And '_mutex_trylock_slowpath'.
  • a sub function having a function name ('mutex_unlock') is called by four sub functions.
  • the function names of the calling sub function are 'sysfs_addrm_finish', 'sysfs_drop_dentry', 'unmap_bin_file', and 'sysfs_addrm_start'.
  • a subfunction having a function name ('mutex_unlock') calls two subfunctions, each of which is '_mutex_unlock_slowpath' and 'mutex_clear_owner'.
  • FIG. 5 is a table classifying the sub-functions of FIGS. 4A to 4D into an abstract level and a concrete level according to an embodiment of the present invention. Referring to FIG. 5, step S140 of FIG. 1 will be described in more detail.
  • each of the plurality of sub-functions is classified into an abstract level or a concrete level.
  • classifying each of the plurality of sub-functions into an abstract level or a concrete level may be classified based on an interrelationship relationship for each of the plurality of sub-functions.
  • the centrifugal value which is the number of which the sub function refers to another sub function
  • the centripetal value which is the number of other functions that refer to the sub function
  • the centrifugal value, centripetal value, and instability value of each of the subfunctions shown in FIGS. 4A to 4D can be obtained as follows.
  • the subfunction having the function name ('sysfs_drop_dentry') calls 9 subfunctions and is called by one subfunction, so the centrifugality is 9 and the centripetality is 1. Thus, instability is 0.9.
  • the subfunction having the function name ('sysfs_addrm_finish') calls six subfunctions and is called by one subfunction, so the centrifugality is 6 and the centripetality is 1. Thus, instability is 0.86.
  • the sub-function having the function name 'list_empty' calls zero sub-functions and is called by six sub-functions, so the centrifugality is zero and the centripetality is six. Thus, instability is zero.
  • the subfunction having the function name 'mutex_unlock' calls two subfunctions and is called by four subfunctions, so the centrifugality is 2 and the centripetality is 4. Thus, instability is 0.33.
  • the subfunction may be classified as an abstract level. If the instability value is less than the first reference value, the subfunction may be classified into the concrete level.
  • the first reference value may be determined based on a distribution of instability of the plurality of sub-functions or may be a predefined value.
  • the instability value of sysfs_drop_dentry and the instability value of sysfs_addrm_finish are greater than the first reference value of 0.8, so sysfs_drop_dentry and sysfs_addrm_finish are at the abstract level. Since the instability value of list_empty and the instability value of mutex_unlock are less than the first reference value of 0.8, list_empty and mutex_unlock may be classified at the concrete level.
  • FIG. 6 is a diagram illustrating a process of rewriting a part of the function syntax tree of FIG. 3 into a function structured tree according to an abstract level. Referring to FIG. 6, step S150 will be described in more detail.
  • the sub-functions classified as abstract levels among the plurality of sub-functions are defined as parent nodes, and at least one other sub-function called by each of the sub-functions corresponding to the parent nodes is a child of the parent node. You can define it as a node to create a function structured tree according to the abstraction level.
  • 'sysfs_drop_dentry' and 'sysfs_addrm_finish' which are classified at the abstract level, become parent nodes and can rebuild the tree with reference to the calling relationship starting from the parent node.
  • a subfunction with a function name ('sysfs_drop_dentry') calls 9 subfunctions, each of which is called 'sysfs_type', 'mutex_unlock', '_d_drop', 'd_put', 'd_unhashed', 'dget_locked' ',' mutex_lock ',' iput ', and' ilookup ', so each subfunction can be a child node.
  • Each called subfunction can again call another subfunction to have its child nodes.
  • the 'iput' subfunction calls 'list_empty' again to have a child node.
  • FIG. 7 is a diagram illustrating DB information in which a subject of a domain (full text) area and a subject of a general function list are defined in advance according to an embodiment of the present invention. Referring to FIG. 7, step S160 of FIG. 1 will be described in more detail.
  • the functions of the plurality of sub-functions may be inferred.
  • inferring a function of each of the plurality of sub-functions categorizes the plurality of sub-functions constituting the function syntax tree into a first sub-function group belonging to the base library and a second sub-function group belonging to the user library, Infer a function of each of the sub-functions of the first sub-function group based on a predefined function list in a programming language in which the source code is written, and based on the function information of each of the sub-functions of the second sub-function group.
  • the function of each of the subfunctions in the subfunction group can be inferred.
  • a text mining technique is used to derive the most similar function in the subject DB for each function information of the second group of sub-functions, and map the most similar function to the function of the second group sub-function.
  • the function information may include all text information in the sub function, such as a comment, a function name, an input parameter name, and an internal implementation text. That is, by comparing the textual similarities between the function information and the DB information of each subfunction, the subject having the highest similarity can be derived and mapped to the corresponding subfunction.
  • a string of function information and DB information ('Stream', 'Exit', 'Save', 'Delete', 'Directory', 'Path', 'Close', 'Print', 'Print as', 'Recent'
  • the function of the corresponding subfunction may be inferred as a "file”.
  • the text mining technique includes "Text Classfication and Text Clustering", “Topic Tracking”, “Web Mining”, and “Question Answering System”. ) ",” Concept linkage “,” Summarization “,” Duo-Mining “and” Information Extraction “techniques can be used.
  • FIG. 8 is a diagram illustrating a process of grouping identical sub-functions by inferred functions according to an embodiment of the present invention. Referring to FIG. 8, step S170 of FIG. 1 will be described in more detail.
  • the inferred function can structure the same sub-functions to create a function list function structured tree.
  • the sub-functions classified as abstract levels among the plurality of sub-functions are defined as parent nodes, and at least one other sub-function called by each of the sub-functions corresponding to the parent nodes is a child of the parent node.
  • Subfunctions corresponding to nodes can be grouped. In this case, the sibling node means a node in which the corresponding node and the parent node are the same.
  • two functions may be grouped into one and lower sub-functions may also be grouped.
  • the inferred function of the subfunction whose function name is 'sysfs_drop_dentry' is "delete”
  • the inferred function of the subfunction whose function name is "sysfs_addrm_finish" is "Delete”
  • grouping the two sub functions by the same function Ie, "delete ('sysfs_drop_dentry', 'sysfs_addrm_finish')
  • the functions called by this subfunction can also be grouped into subgroups.
  • FIG. 9 is a diagram illustrating a function list function structured tree according to an embodiment of the present invention.
  • the top-level parent nodes represent topics ("File”, “Edit”, “Options”, “Analyze”, “Allocate”, “Help”), and if mapped to the functionality of each topic and subfunction, You can define the subfunction as a child node of the parent node.
  • the subfunctions of the subject (“Edit") and the mapped function names ('Tolerances', 'NodeDOF', 'Allocation Data', and 'Process Data') have the same function as "Edit”.
  • a user may recognize the functional list function structured tree more intuitively.
  • a sub-function having an instability value equal to or less than a predetermined level for example, 0.3
  • a predetermined level for example, 0.3
  • the present invention derives a list of functions from real source code, thereby preventing mistakes and risks in determining risk factors, and enabling quick identification of dependencies between functions. You can quickly see what function or module you need to analyze.
  • the software analysis apparatus 100 may include a processing unit 110, a storage unit 120, and an input / output unit 130.
  • the processing unit 110, the storage unit 120, and the input / output unit 130 are connected to each other (connection is not shown in FIG. 10) to allow communication with each other.
  • the analysis device 100 may include a distributed processor, and each part of the analysis device 100 (eg, the processing unit 110, the storage unit 120, and the input / output unit 130) may be distributed. It may include a processor.
  • the software analysis apparatus 100 may perform an operation related to analyzing software.
  • the processor 110 may execute software analysis, retrieve software analysis metrics from the storage 120, and store software analysis metrics.
  • the storage unit 120 may store all parameters related to analyzing the software.
  • the software analysis apparatus 100 may include a processing unit 110.
  • Processing unit 110 is a function classification tree generation module 112 configured to generate a function syntax tree consisting of a plurality of sub-functions by operating the input source code-the source code is a single main function and a plurality of main function calls Subfunctions of each of the plurality of subfunctions, classified as either a default library or a user library, and containing function information including comments, function names, input parameter names, and internal implementation texts;
  • An abstract / concrete level classification module 114 configured to classify each of the plurality of sub-functions into an abstract level or a concrete level, and a function function inference module 116 configured to infer a function of each of the plurality of sub-functions constituting the function syntax tree.
  • Function configured list of functions may include a tree structure generating module 118.
  • the function list function structured tree generation module 118 defines sub-functions classified as abstract levels among the plurality of sub-functions as parent nodes, and calls each of the sub-functions corresponding to the parent nodes. Rewrite at least one other subfunction into a function structured tree according to the level of abstraction defined as a child node of the parent node, and for each of the plurality of nodes included in the rearranged function syntax tree corresponding to that node. If the functions of the subfunction and the subfunction corresponding to the sibling node are the same, the subfunction may be further configured to group the subfunction corresponding to the node and the subfunction corresponding to the sibling node. In this case, sibling nodes are nodes whose parent node is the same.
  • the software analysis device 100 may further include a storage 120.
  • storage 120 may store metrics from software analysis.
  • the software analysis device 100 may further include an input / output unit 130.
  • Input / output 130 may provide and / or receive components as described above, which are used to analyze software.
  • the input / output unit 130 may exchange data with another system, storage device, and / or data stream.
  • the input / output unit 130 may receive inputs for various types of software analysis and provide analysis results to various types of software analysis.
  • the input / output unit 130 may have an input device 132 such as a keyboard, a mouse, a pen, a voice input device, a touch input device, or the like.
  • Output devices 134 such as displays, speakers, printers, etc. may also be included.
  • the input / output unit 130 may further include communication connection (s) 136 that allow it to communicate with other devices.
  • Communication connection (s) 136 is one example of communication media.
  • communication media includes wired media such as wired or direct wired networks, and wireless media such as acoustic, RF, infrared and other wireless media.
  • the term computer readable media includes both storage media and communication media.
  • the software risk analysis apparatus 1100 may include a processing unit 1110, a storage unit 1120, and an input / output unit 1130.
  • the processing unit 1110, the storage unit 1120, and the input / output unit 1130 are connected to each other (connections are not shown in FIG. 11) to allow communication with each other.
  • the risk analysis device 1100 may include a distributed processor, and each part of the risk analysis device 1100 (eg, the processing unit 1110, the storage unit 1120, and the input / output unit 1130). May comprise a distributed processor.
  • the software risk analysis device 1100 may perform an operation related to analyzing a risk of software.
  • the processor 1110 may execute software risk analysis, retrieve software risk analysis metrics from the storage 1120, and store software risk analysis metrics.
  • the storage unit 1120 may store all parameters related to risk analysis of the software.
  • the software risk analysis apparatus 1100 may include a processing unit 1110.
  • the processing unit 1110 may include a risk analysis type classification module 1112 configured to classify the risk analysis type for each of the plurality of function items in the function list function structured tree of the software.
  • each of the plurality of function items includes at least one sub function.
  • the processing unit 1110 may further include a risk derivation module 1114 configured to derive a causal relationship between the risk factors and the risk factors based on each risk analysis type of the plurality of functional items.
  • the software risk analysis device 1100 may further include a storage 1120.
  • the storage 1120 may include a database including a plurality of tables.
  • the plurality of tables used for the software risk analysis may include a domain table, a risk analysis type classification table, a risk checklist table for each risk analysis type, and a causal relationship table of risk factors.
  • each of the plurality of tables may include a plurality of records.
  • each of the plurality of records of the domain table may include "ID” and "domain” as fields.
  • each of the plurality of records of the risk analysis type classification table may include 'ID', 'domain ID', 'risk analysis type', 'related system' and 'document' as fields.
  • each of the plurality of records of the risk checklist table for each risk analysis type may include 'ID', 'risk analysis type ID', and 'risk checklist' as fields.
  • each of the plurality of records of the risk causality table may include 'ID', 'checklist ID', 'parent ID' and 'risk content' as fields.
  • the software risk analysis device 1100 may further include an input / output unit 1130.
  • computer system refers to storing and processing information to control the operation and execution of the device itself, regardless of whether the device is actually electronic, mechanical, logical, or virtual. And / or any device capable of using the stored information.
  • the domain table may include 'ID' and 'domain' as fields, and one or more records may exist.
  • 'ID' is a key value of the domain table, and each of a plurality of records in the domain table can be specified, and 'domain' means a specialized area, such as a car, a port, a railroad, an aeronautical, a nuclear power, or a weapon. .
  • the 'ID' value in the domain table of the record 210 associated with the car is one.
  • a risk analysis type classification table a risk check list table for each risk analysis type, and a causal relationship table of risk factors can be constructed for a specific domain of a software targeted for risk analysis.
  • the risk analysis type classification table may include 'ID', 'domain ID', 'risk analysis type', 'related system' and 'document' as fields, and a risk analysis type classification table. There may be a plurality of records.
  • 'ID' of the risk analysis type classification table is a key value of the risk analysis type classification table, and can be used to identify each record.
  • the 'domain ID' in the risk analysis type classification table refers to the 'ID' value in the associated domain table.
  • the 'domain ID' value of the risk analysis type classification table becomes 1, which is the 'ID' value of the domain table.
  • a risk analysis type classification table for a specific domain of the software targeted for risk analysis is constructed instead of separately constructing a domain table, and thus the 'domain of the risk analysis type classification table is used.
  • the ID 'field can be omitted.
  • the risk analysis type in the risk analysis type classification table refers to the classification of risks that can be caused by the software targeted for risk analysis according to the risk analysis type.
  • risks can be classified into seven categories according to the stage of development: Concept Design Hazard Analysis Type (CD-HAT), Preliminary Design Hazard Analysis Type (PD) HAT, Detailed Design Hazard Analysis Type (DD-HAT), System Design Hazard Analysis Type (SD-HAT), Operations Design Hazard Analysis Type: OD-HAT, Human Design Hazard Analysis Type (HD-HAT), and Requirements Design Hazard Analysis Type (RD-HAT).
  • the risk is categorized as a system design risk analysis type if the risk is for a system design, the risk is categorized as an operational design risk analysis type if the risk is for a risk that a user may encounter during operation, and the risk If this user is about a risk that may arise during use, the risk can be classified as a user-designed type.
  • the related systems in the risk analysis type classification table refer to the areas where the risk can occur.
  • 'domain' is 'car'
  • 'hazard analysis type' when the value of 'hazard analysis type' is 'system design type', 'related system' may be 'engine', 'brake', 'transmission' and the like.
  • 'Hazard Analysis Type' is 'Operational Design Type'
  • 'Related Systems' can be 'Engine', 'Brake', Transmission, etc.
  • the value of 'Hazard Analysis Type' is 'User Design Type'. ', May be' brake ',' transmission 'and the like.
  • 'Documents' in the risk analysis type classification table describe the risks that may occur depending on the risk analysis type and related systems.
  • record 310 of the risk analysis type classification table is specified and the ' The document 'value is different from the' document 'value in the record 350 of the risk analysis type classification table specified when the value of the' hazard analysis type 'is' operating design type' and the 'related system' is' engine '.
  • the risk checklist table for each risk analysis type may include 'ID', 'risk analysis type ID', and 'risk checklist' as fields, and a plurality of records may exist. have.
  • Each ID of the risk checklist table by risk analysis type can identify each record as a key value.
  • 'Hazard Analysis Type ID' refers to the 'ID' value of the associated Risk Analysis Type Classification Table.
  • the 'ID' value of record 350 where the domain of analysis software is automobile, the risk analysis type is 'operational design type', and the related system is 'engine' is 5, thus, by risk analysis type It is associated with records 410 and 420 having a 'risk analysis ID' value of 5 in the risk checklist 400.
  • the ID of the associated record 410 is 7 and the risk checklist is “Is there a risk of an engine explosion?”.
  • the ID of the associated record 420 is 8 and the Hazard Checklist is “Is there a Risk of Engine ECU SW Address Entry Error?”.
  • the causality table of the risk factor may include 'ID', 'checklist ID', 'parent ID' and 'risk content' as fields, and a plurality of records may exist. .
  • 'ID' in the causality table of the risk factor identifies each record as a key value
  • 'checklist ID' means the 'ID' value in the associated risk checklist table.
  • records 501, 503, and 505 with a 'checklist ID' of a risk factor causality table of 7 may be associated with a record 410 with a 'ID' of a risk checklist table of 7.
  • the 'parent ID' in the risk causality table indicates the causal relationship between one record and other records. That is, if the 'parent ID' of a particular record matches the 'ID' of another record, the 'risk content' of that particular record is the record (i.e. the 'ID' value that matches the 'parent ID' value of that particular record). May be the cause of the 'risk content' of the record.
  • the 'risk content' ie, Excel position sensor communication error, etc.
  • records 507, 509, 511 with 'Parent ID' 20 are records 501 with 'ID' 20.
  • 'Risk content' i.e. throttle valve control error, brake
  • Control error may be the cause of the' risk content' (i.e. poor sensor communication)
  • Control error may be the cause of the' risk content '(i.e. poor system control of the ECU) of record 503 with' ID '21
  • records with' parent ID '28 (519, 521, 523) are the 'hazard content' of record 517 with 'ID' 28 (i.e. throttle valve use memory sharing error, Excel position use memory error, etc.) record with 'ID' 22 ( 505) may be the cause of the 'risk content' (ie).
  • the 'risk content' in the causality table of hazards describes the risks that may arise from errors in certain subfunctions.
  • the risk content may include a sensor communication failure, a system control failure of an ECU, or an Excel position sensor communication error.
  • the domain table may be associated with a risk analysis type classification table
  • the risk analysis type classification table may be associated with a risk analysis type checklist table for each risk analysis type
  • a risk factor check for each risk analysis type may be performed.
  • the list table may be associated with a risk causality table.
  • a database for implementing the software risk analysis method according to the present invention may include more or less tables than the tables shown.
  • the fields of each table may also include more or fewer fields than the fields shown.
  • the software risk analysis begins with a step S710 of building a database including a plurality of tables.
  • the plurality of tables used in the software risk analysis may include a domain table, a risk analysis type classification table, a risk check list table for each risk analysis type, and a causal relationship table of risk factors.
  • each of the plurality of tables may include a plurality of records.
  • each of the plurality of records of the domain table may include "ID" and "domain” as fields.
  • each of the plurality of records of the risk analysis type classification table may include 'ID', 'domain ID', 'risk analysis type', 'related system' and 'document' as fields.
  • each of the plurality of records of the risk checklist table for each risk analysis type may include 'ID', 'risk analysis type ID', and 'risk checklist' as fields.
  • each of the plurality of records of the risk causality table may include 'ID', 'checklist ID', 'parent ID' and 'risk content' as fields.
  • domain information of software which is a target of risk analysis
  • the domain of the software may be one of the values of the 'domain' field of the domain table.
  • the record 210 of the software is "car” and "car” may be specified as the "domain” value of the domain table, and the "ID" of the record 210 is one.
  • a risk analysis type classification table for a risk analysis type classification table and a risk causality table of risk factors may be generated for a domain of software that is subjected to a risk analysis, without selectively constructing a domain table separately. Can be. In this case, step S720 may be omitted.
  • a function list function structured tree of the software that is to be analyzed for risk may be obtained.
  • the software is composed of source code
  • the source code may include one main function and a plurality of sub-functions called by the main function.
  • the function list function structured tree is a tree that maps sub-functions into tree structures according to their functions.
  • the function list function structured tree may be composed of a plurality of function items, and each of the plurality of function items may include at least one sub function among the plurality of sub functions.
  • each of the plurality of sub functions may be defined by function information including a comment, a function name, an input parameter name, and an internal implementation text.
  • the top-level parent nodes represent topics (“File”, “Edit”, “Options”, “Analyze”, “Allocate”, “Help”), and if mapped to the functionality of each topic and subfunction, You can define the subfunction as a child node of the parent node. For example, the subfunctions of the subject (“Edit”) and mapped function names ("Tolerances”, “NodeDOF”, “Allocation Data”, and “Process Data”) have the same function as "Edit”.
  • obtaining the function list function structured tree of the software may be inputting the function list function structured tree of the software.
  • obtaining the function list function structured tree of the software obtains the source code of the software, computes the source code to generate a function syntax tree consisting of a plurality of sub-functions, and a function syntax tree Classify each of the plurality of sub-functions constituting the function into an abstract level or a concrete level, infer a function of each of the plurality of sub-functions constituting a function syntax tree, and deduce the same sub-functions among the plurality of sub-functions. It may be to create a structured function list tree by structured.
  • classifying each of the plurality of sub-functions into an abstract level or a concrete level may be classified based on an interrelationship relationship for each of the plurality of sub-functions.
  • obtaining the function list function structured tree of the software may be generated according to Korean Patent Application No. 10-2015-0136251.
  • each of the plurality of function items may be classified into a risk analysis type by using a risk analysis type classification table for each of the plurality of function items in the function list function structured tree.
  • classifying a risk analysis type by using a risk analysis type classification table for each of a plurality of function items in the function list function structured tree may include function information and risk analysis of at least one sub-function included in the function item. It may be to classify the risk analysis type into the risk analysis type of the document having the highest similarity by calculating the similarity based on the text between the documents of the type classification table.
  • classifying the risk analysis type by calculating the similarity on a text basis may be performed based on the text information between the function information of at least one sub-function included in the corresponding function item and the value of the 'document' field of the risk analysis type classification table.
  • the similarity may be calculated to search for a record associated with a 'document' having a field value having the highest similarity, and associate the corresponding function item with the corresponding record. For example, when a risk analysis type is classified using a risk analysis type classification table for any one of a plurality of function items, a record associated with the document having the most similar field value is record 310. At this time, the 'ID' of the record 310 may be 5, the 'hazard analysis type' of the corresponding function item may be an operation design type, and the 'related system' may be an engine.
  • At least one of a cosine based similarity algorithm and an Euclidean distance based similarity algorithm may be used to calculate the text based similarity.
  • the risk analysis type is a concept design risk analysis type (CD-HAT), a predesigned risk analysis type (PD-HAT), a detailed design risk analysis type (DD-HAT), a system design risk analysis type (SD-HAT). HAT), operational design risk analysis type (OD-HAT), user design risk analysis type (HD-HAT), requirement design risk analysis type (RD-HAT).
  • CD-HAT concept design risk analysis type
  • PD-HAT predesigned risk analysis type
  • DD-HAT detailed design risk analysis type
  • SD-HAT system design risk analysis type
  • HAT HAT
  • operational design risk analysis type OD-HAT
  • HD-HAT user design risk analysis type
  • RD-HAT requirement design risk analysis type
  • categorizing a risk analysis type using a risk analysis type classification table for each of a plurality of function items in the function list function structured tree may include the function items in the system design if each of the function items is for a system design. Classify it into a design risk analysis type, and if the function item is about a risk that may occur during operation by the user, classify the function item into an operational design risk analysis type, and then indicate that the function item is in If it is, the function item can be classified into a user design type.
  • a risk check list for each risk analysis type may be derived.
  • step S740 the 'ID' of the record of the risk analysis type classification table associated with the risk analysis type of the document with the highest similarity and the related system is obtained, and the 'risk analysis type' among the records of the risk checklist table for each risk analysis type.
  • At least one record of the risk check list table for each risk analysis type whose ID 'matches the ID of the record of the risk analysis type classification table obtained in step S740 may be searched.
  • a 'ID' of at least one record retrieved and a 'risk checklist' of the record can be derived.
  • the 'ID' of the record 310 of the risk analysis type classification table is 5
  • the ID of record 410 is 7 and the ID of record 420 is 8.
  • the 'hazard checklist' of the records (410, 420) is "Is there a risk of an engine sudden start?" (Record 410) or "Is there a risk of an engine ECU SW address entry error?" (Record 420).
  • step S760 a causal relationship between risk factors may be derived.
  • At least one record of a risk causality table of which a 'ID' of a specific record in the risk checklist table according to the risk analysis type matches the 'checklist ID' of a risk causality table may be searched.
  • the values of the 'ID' and 'Risk Content' fields of at least one record retrieved can be derived.
  • the records 501 having the 'checklist ID' of the records of the associated risk factor causality table are 501. 503, 505).
  • the ID of record 501 is 20, the ID of record 503 is 21, and the ID of record 505 is 22.
  • the 'risk content' of records 501 is “sensor communication volume”, the “risk content” of records 503 is “system control bad of ECU” and the “risk content of records 505” 'Means “... "to be.
  • At least one record of a plurality of records of the risk factor causality table that matches the 'parent ID' and the 'ID' of other records may be searched for.
  • the value of the ⁇ risk content '' field of at least one record retrieved can be derived.
  • the 'parent ID' of the records 507, 509, 511 of the risk causality table is twenty. Records 507, 509, 511 are associated with record 501 having an 'ID' of 20. This means that the 'risk content' of the records 507, 509, 511 may be the cause of the 'risk content' of the record 501.
  • the 'parent ID' of records 513, 515, 517 of the risk factor causality table is 21. Records 513, 515, 517 are associated with record 503 with an 'ID' of 21. The 'risk content' of the records 513, 515, 517 may be the cause of the 'risk content' of the record 503.
  • the 'parent ID' of records 519, 521, 523 of the risk factor causality table is 28. Records 519, 521, 523 are associated with record 517 with " ID " The 'risk content' of the records 519, 521, 523 may be the cause of the 'risk content' of the record 517.
  • the risk factors may be visualized according to a causal relationship.
  • FIG. 19 is a diagram visualizing risk factors according to a causal relationship using a causal relationship table of risk factors according to an embodiment of the present invention. As illustrated in FIG. 19, the risk factors may be provided in a visualized graphical user interface, so that the user may recognize the risk factors more intuitively.
  • the causal relationship between the "risk of an engine explosion” value, the "risk checklist” value of the record 410 of the risk analysis type classification table may be visualized.
  • the ID of record 410 is seven.
  • records 501, 503, and 505 having a 'checklist ID' of the plurality of records may be searched.
  • the 'risk content' of the records 501, 503, 505 may be the cause of the 'risk checklist' of the record 410.
  • the 'risk content' of the records 501, 503, and 505 may be grouped by a logical operator OR, and configured as a lower node of the 'risk checklist' of the record 410.
  • the 'parent ID' of records 507, 509, 511 is 20. Records 507, 509, 511 are associated with record 501 having an 'ID' of 20. This means that the 'risk content' of the records 507, 509, 511 may be the cause of the 'risk content' of the record 501, so the 'risk content' of the records 507, 509, 511. ' May be grouped by the logical operator OR, and configured as a subnode of the' risk content 'of the record 501.
  • the 'parent ID' of records 513, 515, 517 is 21. Records 513, 515, 517 are associated with record 503 with an 'ID' of 21.
  • the 'risk content' of the records 513, 515, 517 may be the cause of the 'risk content' of the record 503. Accordingly, the "risk content" of the records 513, 515, 517 may be grouped by the logical operator OR, and may be configured as a lower node of the "risk content" of the record 503.
  • the 'parent ID' of records 519, 521, 523 is 28. Records 519, 521, 523 are associated with record 517 with " ID " The 'risk content' of the records 519, 521, 523 may be the cause of the 'risk content' of the record 517. Accordingly, the "risk content" of the records 519, 521, 523 may be grouped by the logical operator OR, and configured as a lower node of the "risk content" of the record 517.
  • the present invention constructs a database to derive a risk factor, so that mistakes and risks of omission when preventing a risk factor can be prevented, and the cause and effect relationship of the risk factor is analyzed and expressed by a logical operator combination.
  • Quick identification allows users to quickly identify which function or module should focus on and analyze risk.
  • computer system refers to storing and processing information to control the operation and execution of the device itself, regardless of whether the device is actually electronic, mechanical, logical, or virtual. And / or any device capable of using the stored information.
  • Another problem of the present invention is that the software safety documents by structuring the function list containing information on which sub-functions are dangerous by analyzing the source code even in a situation where it is difficult to identify the structure because there is no document on the software structure (ie, requirements document).
  • Another object of the present invention is to provide a software risk analysis method and apparatus that provides a software safety diagnosis without analyzing human risks such as missing the most important risk factors by analyzing the risks constituting the software.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

소프트웨어 분석 방법 및 장치가 개시된다. 본 방법은, 소프트웨어의 소스 코드를 획득하는 단계를 포함할 수 있다. 여기서, 소스 코드는 하나의 메인 함수와 메인 함수가 호출하는 복수의 서브 함수를 포함하며, 복수의 서브 함수의 각각은 기본 라이브러리 또는 사용자 라이브러리로 분류되고, 주석, 함수 명, 입력 파라미터 명 및 내부 구현 텍스트를 포함하는 함수 정보를 포함할 수 있다. 본 방법은, 소스 코드를 연산하여 복수의 서브 함수로 구성되는 함수구문 트리를 생성하는 단계, 함수구문 트리를 구성하는 복수의 서브 함수 각각을 추상 레벨 또는 구체 레벨로 분류하는 단계, 함수구문 트리를 구성하는 복수의 서브 함수 각각의 기능을 추론하는 단계, 및 복수의 서브 함수 중 상기 추론된 기능이 동일한 서브 함수들을 구조화하여 기능목록함수 구조화 트리를 생성하는 단계를 더 포함할 수 있다.

Description

소프트웨어 분석 방법 및 장치
본 발명은 소프트웨어 분석 방법 및 장치에 관한 것이다.
소프트웨어는 현장 모니터링, 위험 감지 및 분석, 위험 경보 및 전파, 현장 대응, 안전 교육 등에 활용됨으로써 재난을 예방하고, 재난으로 발생한 피해를 최소화하며, 재난으로부터의 신속한 복구를 위해 광범위하게 사용되고 있다.
한편, 소프트웨어 자체가 재난 안전사고의 원인이 될 수도 있다. 에너지 관리시스템의 소프트웨어 오류로 인해 세계 최고 수준의 전력망과 기술을 가진 미국에서 역사상 최대 규모의 정전 사고가 발생한 바 있고, 자동차 전자제어장치(Electronic control unit)에 내장된 소프트웨어 결함에 의해 급발진 사고가 발생한 적도 있다. 이렇듯 자동차, 철도, 항공, 전력, 국방, 의료, 금융, 통신 등의 부분에서 소프트웨어의 의존도가 높아짐에 따라 소프트웨어 오류로 인한 인명, 재난의 피해 범위와 규모가 확대되고 있어, 소프트웨어의 안전(Software safety)을 체계적으로 관리해야 하는 필요성이 대두되고 있다.
소프트웨어의 안전 확보 및 검증 체계는 도메인 전문가의 경험이 중요시 되는 분야로 소프트웨어 산업 확산 속도에 부흥하는 안전공학 전문가 확보가 쉽지 않은 상황이다. 따라서, 안전분석 지식 습득 및 도메인 경험 축적을 위해 적은 훈련 비용으로 소프트웨어 안전 진단을 수행할 수 있는 보조 기술이 필요하다. 더하여, 도메인 전문가들이 소프트웨어 안전 진단을 수행하는 경우 위험분석에서 가장 중요한 위험요소 도출 누락과 같은 휴먼 에러(human error)가 발생할 수 있는 문제점이 존재한다.
더욱이, 소프트웨어 안전진단을 위해서는 소프트웨어 요구사항문서를 분석하는 작업이 선행되어야 하기 때문에 소프트웨어 요구사항문서가 분실되었거나, 소프트웨어 개발 후 소스 코드를 여러 번의 수정하거나 기능을 추가한 경우에는 위험에 대해 분석할 수 있는 정보가 없거나 매우 부족하기 때문에 요구사항문서를 기초로 하는 소프트웨어 안전진단을 할 수 없는 상황이 발생하게 된다.
본 발명의 과제는 도메인 소프트웨어 안전진단 전문가들의 직접적인 도움 없이 소프트웨어 위험성을 확인할 수 있도록 소프트웨어 안전진단을 간편하게 제공해주는 소프트웨어 분석 방법 및 장치를 제공하는 것이다.
본 발명의 과제는 소프트웨어 위험성을 확인할 수 있는 효율적인 소프트웨어 안전진단을 제공해주는 소프트웨어 위험분석 방법 및 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 과제들은 이상에서 언급한 과제들에 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시예의 일 특징에 따르면, 소프트웨어 분석 방법이 제공된다. 본 방법은, 소프트웨어의 소스 코드를 획득하는 단계를 포함할 수 있다. 여기서, 상기 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함하며, 상기 복수의 서브 함수의 각각은 기본 라이브러리 또는 사용자 라이브러리로 분류되고, 주석, 함수 명, 입력 파라미터 명 및 내부 구현 텍스트를 포함하는 함수 정보를 포함한다. 본 방법은, 상기 소스 코드를 연산하여 상기 복수의 서브 함수로 구성되는 함수구문 트리를 생성하는 단계, 상기 함수구문 트리를 구성하는 상기 복수의 서브 함수 각각을 추상 레벨 또는 구체 레벨로 분류하는 단계, 상기 함수구문 트리를 구성하는 상기 복수의 서브 함수 각각의 기능을 추론하는 단계, 및 상기 복수의 서브 함수 중 상기 추론된 기능이 동일한 서브 함수들을 구조화하여 기능목록함수 구조화 트리를 생성하는 단계를 더 포함할 수 있다.
본 발명의 실시예의 일 특징에 따르면, 소프트웨어 위험분석 방법이 제공된다. 본 방법은, 복수의 레코드(records)를 포함하는 위험분석 타입 분류 테이블을 구축하는 단계, 및 소프트웨어의 도메인 정보를 획득하는 단계를 포함할 수 있다. 여기서, 상기 위험분석 타입 분류 테이블의 복수의 레코드의 각각은 ID, 도메인 ID, 위험분석 타입(Hazard Analysis Type), 관련 시스템 및 문서를 포함하고, 상기 소프트웨어는 소스 코드로 구성되며, 상기 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함한다. 본 방법은, 상기 소프트웨어의 기능목록함수 구조화 트리를 획득하는 단계, 상기 기능목록함수 구조화 트리의 상기 복수의 기능 항목의 각각에 대해서 상기 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 단계, 및 상기 소프트웨어의 도메인 정보 및 상기 분류된 위험분석 타입을 기초로 위험요소들의 인과관계를 시각화하는 단계를 더 포함할 수 있다. 여기서, 상기 기능목록함수 구조화 트리는 복수의 기능 항목으로 구성되고, 상기 복수의 기능 항목의 각각은 상기 복수의 서브 함수 중 적어도 하나의 서브 함수를 포함한다.
본 발명의 실시예들에 따른 소프트웨어 분석 방법 및 장치에 따르면, 도메인 소프트웨어 안전진단 전문가들의 직접적인 도움 없이 소프트웨어 위험성을 확인할 수 있도록 하여 소프트웨어 안전진단을 간편하게 제공해 주는 효과가 제공된다.
본 발명의 실시예들에 따른 소프트웨어 위험분석 방법 및 장치에 따르면, 소프트웨어 안전진단을 효율적으로 제공해주는 효과가 제공된다.
본 발명의 실시예들에 따른 소프트웨어 위험분석 방법 및 장치에 따르면, 가장 중요한 위험요소 도출 누락과 같은 휴먼 에러(human error) 없이 소프트웨어 안전진단을 제공해주는 효과가 제공된다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 분석을 제공하기 위한 예시적인 프로세스의 흐름도이다.
도 2는 본 발명의 일 실시예에 따라 소스 코드를 어휘 분석하여 토큰 열로 분석하고, 파서(Parser)를 이용하여 구문 분석하는 과정을 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따라 추상구문 트리를 연산하여 생성한 함수구문 트리를 도시하는 도면이다.
도 4a 내지 도 4d는 도 3의 함수구문 트리를 구성하는 일부 서브 함수의 상호호출 관계를 나타내는 도면이다.
도 5는 본 발명의 일실시예에 따라 도 4a 내지 도 4d의 서브 함수를 추상 레벨과 구체 레벨로 분류한 표이다.
도 6은 도 3의 함수구문 트리의 일부를 추상 레벨에 따른 함수 구조화 트리로 재작성하는 과정을 나타내는 도면이다.
도 7은 본 발명의 일 실시예에 따른 도메인(전문) 영역의 주제, 일반 기능 목록의 주제가 미리 정의된 DB 정보를 도시하는 도면이다.
도 8은 본 발명의 일 실시예에 따른 추론된 기능이 동일한 서브 함수들을 그룹핑하는 과정을 나타내는 도면이다.
도 9는 본 발명의 일 실시예에 따른 기능목록 함수 구조화 트리를 도시하는 도면이다.
도 10은 소프트웨어를 분석하기 위한 예시적인 장치를 도시한 도면이다.
도 11은 소프트웨어의 위험을 분석하기 위한 예시적인 소프트웨어 위험분석 장치를 도시한 도면이다.
도 12는 본 발명의 일 실시예에 따른 도메인 테이블을 도시하는 도면이다.
도 13은 본 발명의 일 실시예에 따른 위험분석 타입 분류 테이블을 도시하는 도면이다.
도 14는 본 발명의 일 실시예에 따른 위험분석 타입 별 위험요소 체크리스트 테이블을 도시한 도면이다.
도 15는 본 발명의 일 실시예에 따른 위험요소의 인과관계 테이블을 도시한 도면이다.
도 16은 본 발명의 일 실시예에 따른 테이블들 간의 논리적 연관관계를 도시한 도면이다.
도 17은 본 발명의 일 실시예에 따라 소프트웨어의 위험분석을 제공하기 위한 예시적인 프로세스의 흐름도이다.
도 18은 본 발명의 일 실시예에 따른 기능목록 함수 구조화 트리를 도시하는 도면이다.
도 19는 본 발명의 일 실시예에 따라 위험요소들을 인과관계에 따라 시각화시킨 도면이다.
본 발명의 실시예의 일 특징에 따르면, 소프트웨어 분석 방법이 제공된다. 본 방법은, 소프트웨어의 소스 코드를 획득하는 단계를 포함할 수 있다. 여기서, 상기 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함하며, 상기 복수의 서브 함수의 각각은 기본 라이브러리 또는 사용자 라이브러리로 분류되고, 주석, 함수 명, 입력 파라미터 명 및 내부 구현 텍스트를 포함하는 함수 정보를 포함한다. 본 방법은, 상기 소스 코드를 연산하여 상기 복수의 서브 함수로 구성되는 함수구문 트리를 생성하는 단계, 상기 함수구문 트리를 구성하는 상기 복수의 서브 함수 각각을 추상 레벨 또는 구체 레벨로 분류하는 단계, 상기 함수구문 트리를 구성하는 상기 복수의 서브 함수 각각의 기능을 추론하는 단계, 및 상기 복수의 서브 함수 중 상기 추론된 기능이 동일한 서브 함수들을 구조화하여 기능목록함수 구조화 트리를 생성하는 단계를 더 포함할 수 있다.
본 발명의 실시예의 일 특징에 따르면, 소프트웨어 위험분석 방법이 제공된다. 본 방법은, 복수의 레코드(records)를 포함하는 위험분석 타입 분류 테이블을 구축하는 단계, 및 소프트웨어의 도메인 정보를 획득하는 단계를 포함할 수 있다. 여기서, 상기 위험분석 타입 분류 테이블의 복수의 레코드의 각각은 ID, 도메인 ID, 위험분석 타입(Hazard Analysis Type), 관련 시스템 및 문서를 포함하고, 상기 소프트웨어는 소스 코드로 구성되며, 상기 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함한다. 본 방법은, 상기 소프트웨어의 기능목록함수 구조화 트리를 획득하는 단계, 상기 기능목록함수 구조화 트리의 상기 복수의 기능 항목의 각각에 대해서 상기 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 단계, 및 상기 소프트웨어의 도메인 정보 및 상기 분류된 위험분석 타입을 기초로 위험요소들의 인과관계를 시각화하는 단계를 더 포함할 수 있다. 여기서, 상기 기능목록함수 구조화 트리는 복수의 기능 항목으로 구성되고, 상기 복수의 기능 항목의 각각은 상기 복수의 서브 함수 중 적어도 하나의 서브 함수를 포함한다.
본 발명의 이점들과 특징들 그리고 이들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해 질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 본 실시예들은 단지 본 발명의 개시가 완전하도록 하며 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려 주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에 기재된 실시예에 있어서 '모듈' 혹은 '부'는 적어도 하나의 기능이나 동작을 수행하는 기능적 부분을 의미하며, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의 '모듈' 혹은 복수의 '부'는 특정한 하드웨어로 구현될 필요가 있는 '모듈' 혹은 '부'를 제외하고는 적어도 하나의 모듈로 일체화되어 적어도 하나의 프로세서로 구현될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 보다 상세히 설명한다. 다만, 이하의 설명에서는 본 발명의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 분석을 제공하기 위한 예시적인 프로세스의 흐름도이다. 도 1에 도시된 바와 같이, 예시적인 실시예에서, 소프트웨어 분석은 소스 코드를 획득하는 단계(S110)로부터 시작된다. 분석하고자 하는 소스 코드를 획득한 후, 스캐너(Scanner)를 이용하여 소스 코드를 대상으로 하여 어휘 분석을 실시하여 소스 코드를 토큰(Token) 열로 모두 분리하고, 어휘 분석을 통해 만들어진 토큰 열에 대해서 파서(Parser)를 이용하여 구문 문석을 수행하여 추상구문 트리(Abstract syntax tree)를 생성한다(S120). 일 실시예에서, 소스 코드는 하나의 메인 함수와 메인 함수가 호출하는 복수의 서브 함수를 포함하며, 복수의 서브 함수의 각각은 기본 라이브러리 또는 사용자 라이브러리로 분류되고, 주석, 함수 명, 입력 파라미터 명 및 내부 구현 텍스트를 포함하는 함수 정보를 포함할 수 있다.
단계(S130)에서는 구문분석 결과로 생성된 추상구문 트리를 의미 분석기(Semantic Analyzer)를 이용하여 함수의 의미에 따라 필요한 정보를 유추 또는 분석하여 함수구문 트리로 변환할 수 있다. 단계(S140)에서는 함수구문 트리를 구성하는 복수의 서브 함수 간의 상호호출 관계를 기초로 복수의 서브 함수 각각을 추상 레벨 또는 구체 레벨로 분류할 수 있다. 단계(S150)에서는 함수구문 트리를 추상 수준에 따른 함수 구조화 트리를 재작성할 수 있다. 단계(S160)에서는 재작성된 함수 구조화 트리를 구성하는 복수의 서브 함수 각각의 기능을 추론할 수 있다. 단계(S170)에서는 추론된 기능이 동일한 서브 함수들을 구조화하여 기능목록 함수 구조화 트리를 생성할 수 있다.
도 2는 본 발명의 일 실시예에 따라 소스 코드를 어휘 분석하여 토큰 열로 분석하고, 파서(Parser)를 이용하여 구문 분석하는 과정을 나타내는 도면이다. 이하, 도 2를 참고로 도 1의 단계(S120)를 보다 구체적으로 설명한다. 도 2에 도시된 바와 같이, 예시적인 실시예에서 획득한 소스 코드는 아래와 같다.
소스 코드:
if x = 10 then x+5
else 30
일 실시예에 있어서, 소스 코드가 작성된 프로그래밍 언어에서 사전에 정의되어 있는 스캐너 및 파서를 이용하여 소스 코드를 어휘 분석하면, 'if', 'then' 및 'else'는 예약어로 분석되고, 'x'는 식별자로 분석되며, 수학 기호인 '=' 및 '+'는 수학 기호로서 분석되고, '10', '5' 및 '30'은 정수로 분석됨을 알 수 있다. 일 실시예에서, 스캐너는 렉서 제너레이터(Lexer generator)를 이용할 수 있다. 분석된 토큰 열 각각에 대해 파서를 이용하여 구문 분석을 하면 추상구문 트리(abstract syntax tree)를 생성할 수 있다. 일 실시예에서, 파서는 파서 제너레이터(Parser generator)를 이용할 수 있다.
도 3은 본 발명의 일 실시예에 따라 추상구문 트리를 연산하여 생성한 함수구문 트리를 도시하는 도면이다. 이하, 도 3을 참고로 도 1의 단계(S130)를 보다 구체적으로 설명한다.
추상구문 트리에 대해서 구문 분석기(semantic analyzer)를 이용하여 필요한 정보를 유추 및 분석함으로써 추상구문 트리를 추상화하여 함수구문 트리를 생성할 수 있다. 일 실시예에 있어서, 함수구문 트리는 복수의 서브 함수의 상호호출 관계를 도시할 수 있다. 도 3의 예시적인 함수구문 트리는 함수 명('sysdev_class_remvoe_file')을 가지는 함수를 루트 노드로 하여 복수의 서브 함수들의 상호호출 관계에 따라 복수의 서브 함수들을 부모 노드 또는 자식 노드로 연결한 트리이다.
도 4a 내지 도 4d는 도 3의 함수구문 트리를 구성하는 복수의 서브 함수 중 일부 서브 함수들의 상호호출 관계를 나타내는 도면이다.
일 실시예에서, 함수구문 트리를 구성하는 복수의 서브 함수 각각에 대해 상호호출 관계를 확인할 수 있다. 예컨대, 도 4a에서 함수 명('sysfs_drop_dentry')을 가지는 서브 함수는 함수 명('sysfs_addrm_finish')을 가지는 서브 함수에 의해 호출된다. 도 4a에서 함수 명('sysfs_drop_dentry')을 가지는 서브 함수는 9개의 서브 함수를 호출하는데, 각 서브 함수 명은 'sysfs_type', 'mutex_unlock', '_d_drop', 'd_put', 'd_unhashed', 'dget_locked', 'mutex_lock', 'iput', 및 'ilookup' 이다.
도 4b에서 함수 명('sysfs_addrm_finish')을 가지는 서브 함수는 함수 명('sysfs_hash_and_remove')을 가지는 서브 함수에 의해 호출된다. 도 4b에서 함수 명('sysfs_addrm_finish')을 가지는 서브 함수는 6개의 서브 함수를 호출하는데, 각 서브 함수 명은 'sysfs_deactivate', 'sysfs_put', 'unmap_bin_file', mutex_unlock', 'sysfs_drop_dentry' 및 'iput'이다.
도 4c에서 함수 명('list_empty')을 가지는 서브 함수는 6개의 서브 함수에 의해 호출되는데, 호출하는 서브 함수의 함수 명은 'unmap_mapping_range', 'dput', '_mutex_unlock_common_slowpath', 'dentry_lru_del', '_mutex_lock_common' 및 '_mutex_trylock_slowpath'이다.
도 4d에서 함수 명('mutex_unlock')을 가지는 서브 함수는 4개의 서브 함수에 의해 호출되는데, 호출하는 서브 함수의 함수명은 'sysfs_addrm_finish', 'sysfs_drop_dentry', 'unmap_bin_file' 및 'sysfs_addrm_start'이다. 한편, 함수 명('mutex_unlock')을 가지는 서브 함수는 2개의 서브 함수를 호출하는데, 각 서브 함수 명은 '_mutex_unlock_slowpath' 및 'mutex_clear_owner'이다.
도 5는 본 발명의 일 실시예에 따라 도 4a 내지 도 4d의 서브 함수를 추상 레벨과 구체 레벨로 분류한 표이다. 도 5를 참고하여 도 1의 단계(S140)를 보다 상세하게 설명한다.
도 1의 단계(S140)에서 복수의 서브 함수 각각을 추상 레벨 또는 구체 레벨로 분류한다. 일 실시예에서, 복수의 서브 함수 각각을 추상 레벨 또는 구체 레벨로 분류하는 것은 복수의 서브 함수 각각에 대해서 상호호출 관계를 기초로 분류할 수 있다. 일 실시예에서, 해당 서브 함수의 상호호출 관계를 기초로 해당 서브 함수가 다른 서브 함수를 참조하는 개수인 원심성 값 및 다른 함수가 해당 서브 함수를 참조하는 개수인 구심성 값을 구할 수 있으며, 이를 기초로 해당 서브 함수의 불안정성 값을 산출할 수 있다. 일 실시예에서, 불안정성은 아래 수식 1에 의해 구할 수 있다.
수식1:
Figure PCTKR2016010738-appb-I000001
도 4a 내지 4d에 도시된 서브 함수 각각의 원심성 값, 구심성 값 및 불안정성 값을 아래와 같이 구할 수 있다.
도 4a에서 함수 명('sysfs_drop_dentry')을 가지는 서브 함수는 9개의 서브 함수를 호출하고, 1개의 서브 함수에 의해 호출되므로 원심성은 9이고, 구심성은 1이다. 따라서, 불안정성은 0.9이다.
도 4b에서 함수 명('sysfs_addrm_finish')을 가지는 서브 함수는 6개의 서브 함수를 호출하고, 1개의 서브 함수에 의해 호출되므로 원심성은 6이고, 구심성은 1이다. 따라서, 불안정성은 0.86이다.
도 4c에서 함수 명('list_empty')을 가지는 서브 함수는 0개의 서브 함수를 호출하고, 6개의 서브 함수에 의해 호출되므로 원심성은 0이고, 구심성은 6이다. 따라서, 불안정성은 0이다.
도 4d에서 함수 명('mutex_unlock')을 가지는 서브 함수는 2개의 서브 함수를 호출하고, 4개의 서브 함수에 의해 호출되므로 원심성은 2이고, 구심성은 4이다. 따라서, 불안정성은 0.33이다.
일 실시예에 있어서, 불안정성 값이 제1 기준 값 이상이면 해당 서브 함수를 추상 레벨로 분류하고, 불안정성 값이 제1 기준 값 미만이면 해당 서브 함수를 구체 레벨로 분류할 수 있다. 제1 기준 값은 복수의 서브 함수의 불안정성의 분포를 기초로 결정되거나, 사전 정의된 값일 수 있다.
도 5에 도시된 바와 같이, 일 실시예에 있어서, 불안정성에 대한 제1 기준 값이 0.8이라면, sysfs_drop_dentry의 불안정성 값 및 sysfs_addrm_finish의 불안정성 값은 제1 기준 값인 0.8보다 크므로 sysfs_drop_dentry 및 sysfs_addrm_finish은 추상 레벨로 분류되며, list_empty의 불안정성 값 및 mutex_unlock의 불안정성 값은 제1 기준 값인 0.8보다 작으므로 list_empty 및 mutex_unlock은 구체 레벨로 분류될 수 있다.
도 6은 도 3의 함수구문 트리의 일부를 추상 레벨에 따른 함수 구조화 트리로 재작성하는 과정을 나타내는 도면이다. 도 6을 참고하여, 단계(S150)를 보다 상세하게 설명한다.
일 실시예에서, 복수의 서브 함수 중 추상 레벨로 분류된 서브 함수들을 부모 노드들로 정의하고, 부모 노드들에 해당하는 서브 함수들 각각이 호출하는 적어도 하나의 다른 서브 함수를 해당 부모 노드의 자식 노드로 정의하여 추상 레벨에 따른 함수 구조화 트리를 생성할 수 있다.
일 실시예에서, 추상 레벨로 분류된 'sysfs_drop_dentry' 및 'sysfs_addrm_finish'는 부모 노드가 되고, 부모 노드로부터 시작하여 호출 관계를 참조하여 트리를 재작성할 수 있다. 예컨대, 함수 명('sysfs_drop_dentry')을 가지는 서브 함수는 9개의 서브 함수를 호출하는데, 호출되는 각 서브 함수 명은 'sysfs_type', 'mutex_unlock', '_d_drop', 'd_put', 'd_unhashed', 'dget_locked', 'mutex_lock', 'iput', 및 'ilookup' 이므로, 각 서브 함수가 자식 노드가 될 수 있다. 호출된 서브 함수 각각은 다시 다른 서브 함수를 호출하여 이를 자식 노드를 가질 수 있다. 예컨대, 'iput' 서브 함수는 다시 'list_empty'를 호출하여 자식노드로 가지게 된다.
도 7은 본 발명의 일 실시예에 따른 도메인(전문) 영역의 주제, 일반 기능 목록의 주제가 미리 정의된 DB 정보를 도시하는 도면이다. 도 7을 참고하여 도 1의 단계(S160)를 보다 상세하게 설명한다.
도 1의 단계(S160)에서 복수의 서브 함수 각각의 기능을 추론할 수 있다. 일 실시예에서, 복수의 서브 함수 각각의 기능을 추론하는 것은 함수구문 트리를 구성하는 복수의 서브 함수를 기본 라이브러리에 속하는 제1 서브 함수 그룹과 사용자 라이브러리에 속하는 제2 서브 함수 그룹으로 분류하고, 소스 코드가 작성된 프로그래밍 언어에서 사전에 정의된 기능 목록을 기초로 제1 서브 함수그룹의 서브 함수들의 각각의 기능을 추론하고, 제2 서브 함수 그룹의 서브 함수들 각각의 함수 정보를 기초로 제2 서브 함수 그룹의 서브 함수들 각각의 기능을 추론할 수 있다.
일 실시예에서, 제2 그룹의 서브 함수들 각각의 함수 정보에 대해 텍스트 마이닝 기법을 이용하여 주제 DB에서 가장 유사한 기능을 도출하고, 가장 유사한 기능을 해당 제2 그룹 서브 함수의 기능으로 매핑하므로써 제2 서브 함수그룹 의미 추론할 수 있다. 이때 함수 정보는 주석, 함수 명, 입력 파리미터 명, 내부 구현 텍스트 등 서브 함수 내의 모든 텍스트 정보를 포함할 수 있다. 즉, 각 서브 함수의 함수 정보와 DB 정보에 대해 상호 텍스트 유사도를 비교함으로써 가장 높은 유사도를 가지는 주제를 도출하여 해당 서브 함수에 매핑할 수 있다. 예컨데, 함수 정보와 DB 정보의 문자열('Stream', 'Exit', 'Save', 'Delete', 'Directory', 'Path', 'Close', 'Print', 'Print as', 'Recent') 의 유사도를 비교하여 높은 유사도를 가지는 경우 해당 서브 함수의 기능은 "파일"로 추론될 수 있다.
일 실시예에서, 텍스트 마이닝 기법은 "문서 분류(Text Classfication)와 문서 클러스터링(Text Clustering)", "토픽 트랙킹(Topic Tracking)", "웹 마이닝(Web Mining)", "질의응답 시스템(Question Answering)", "Concept linkage", "문서 요약(Summarization)", "Duo-Mining" 및 "정보 추출(Information Extraction)" 기법 중 적어도 하나를 사용할 수 있다.
도 8은 본 발명의 일 실시예에 따른 추론된 기능이 동일한 서브 함수들을 그룹핑하는 과정을 나타내는 도면이다. 도 8을 참고하여 도 1의 단계(S170)를 보다 상세하게 설명한다.
추론된 기능이 동일한 서브 함수들을 구조화하여 기능목록함수 구조화 트리를 생성할 수 있다. 일 실시예에서, 복수의 서브 함수 중 추상 레벨로 분류된 서브 함수들을 부모 노드들로 정의하고, 부모 노드들에 해당하는 서브 함수들 각각이 호출하는 적어도 하나의 다른 서브 함수를 해당 부모 노드의 자식 노드로 정의하는 추상 수준에 따른 함수 구조화 트리 재작성할 수 있다. 일 실시예에서 재작성된 함수구문 트리에 포함된 복수의 노드들 각각에 대해서, 해당 노드에 대응하는 서브 함수와 형제 노드에 대응하는 서브 함수의 기능이 동일한 경우, 해당 노드에 대응하는 서브 함수와 형제 노드에 대응하는 서브 함수를 그룹핑할 수 있다. 이때, 형제 노드는 해당 노드와 부모 노드가 동일한 노드를 의미한다.
즉, 서로 다른 서브 함수의 유추된 기능이 동일한 경우, 2개의 함수를 1개로 그룹핑하고, 하위 서브 함수들도 그룹핑할 수 있다. 예컨대, 함수 명이 'sysfs_drop_dentry'인 서브 함수의 유추된 기능이 "삭제"이고, 함수 명이 'sysfs_addrm_finish'인 서브 함수의 유추된 기능이 "삭제"인 경우, 두 개의 서브 함수를 동일한 기능을 기준으로 그룹핑하고(즉, "삭제('sysfs_drop_dentry', 'sysfs_addrm_finish')"), 해당 서브 함수가 호출하는 함수들도 하위 그룹으로 그룹핑할 수 있다.
도 9는 본 발명의 일 실시예에 따른 기능목록 함수 구조화 트리를 도시하는 도면이다.
일 실시예에서, 최상위 부모 노드들은 주제("File", "Edit", "Options", "Analyze", "Allocate", "Help")를 나타내며, 각 주제와 서브 함수의 기능에 매핑된 경우, 해당 서브 함수를 부모 노드의 자식 노드로 정의할 수 있다. 예컨데, 주제("Edit")과 매핑된 함수 명('Tolerances', 'NodeDOF', 'Allocation Data', 및 'Process Data')의 서브 함수들의 기능은 "Edit"으로 동일하다.
일 실시예에서 기능목록 함수 구조화 트리를 그래픽 유저 인터페이스로 제공함으로써, 사용자가 기능목록 함수 구조화 트리를 보다 직관적으로 인식할 수 있도록 해 줄 수 있다. 일 실시예에서, 복수의 서브 함수에 대해서 불안정성 값이 일정 설정 수준(가령 0.3) 이하인 서브 함수를 따로 표시하여 해당 서브 함수가 포함된 모듈이 다른 모듈에서 참조가 많이 되고 있는 위험한 모듈임을 쉽게 알 수 있게 할 수 있다.
이상에서 설명한 바와 같이 본 발명은 실물형상인 소스 코드로부터 함수 목록을 도출하므로 위험 요소를 판단할 때 누락의 실수 및 위험을 예방할 수 있고, 함수 간의 의존 관계의 빠른 식별이 가능하게 되어 집중해서 위험을 분석해야 할 함수 또는 모듈이 무엇인지 빠르게 확인이 가능하다.
더욱이, 함수 간의 구조 분석의 이해도 및 정확도의 향상을 기대할 수 있으며, 함수 목록의 자동 도출을 통해 시간 및 인력에 대한 비용 절감 효과를 기대할 수 있다.
도 10은 소프트웨어를 분석하기 위한 예시적인 소프트웨어 분석 장치(100)를 도시한 도면이다. 상술된 바와 같이, 예시적인 실시예에서, 소프트웨어 분석 장치(100)는 프로세싱부(110), 저장부(120) 및 입출력부(130)를 포함할 수 있다. 프로세싱부(110), 저장부(120), 및 입/출력부(130)는 서로 연결되어(연결은 도 10에 도시되지 않음), 서로 간에 통신하도록 한다. 분석 장치(100)는 분산 프로세서를 포함할 수 있고, 분석 장치(100)의 각 부분(예를 들면, 프로세싱부(110), 저장부(120), 및 입/출력부(130))은 분산 프로세서를 포함할 수 있다. 소프트웨어 분석 장치(100)는 소프트웨어를 분석하는 것에 연관된 동작을 수행할 수 있다. 예를 들면, 프로세싱부(110)는 소프트웨어 분석을 실행하고, 저장부(120)로부터 소프트웨어 분석 메트릭들을 검색하고, 소프트웨어 분석 메트릭들을 저장할 수 있다. 저장부(120)는 소프트웨어를 분석하는 것에 연관된 모든 파라미터들을 저장할 수 있다.
소프트웨어 분석 장치(100)는 프로세싱부(110)를 포함할 수 있다. 프로세싱부(110)는 입력된 소스 코드를 연산하여 복수의 서브 함수로 구성되는 함수구문 트리를 생성하도록 구성된 함수구분 트리 생성 모듈(112) - 소스 코드는 하나의 메인 함수와 메인 함수가 호출하는 복수의 서브 함수를 포함하며, 복수의 서브 함수의 각각은 기본 라이브러리 또는 사용자 라이브러리로 분류되고, 주석, 함수 명, 입력 파라미터 명 및 내부 구현 텍스트를 포함하는 함수 정보를 포함함-, 함수구문 트리를 구성하는 복수의 서브 함수 각각을 추상 레벨 또는 구체 레벨로 분류하도록 구성된 추상/구체레벨 분류 모듈(114), 함수구문 트리를 구성하는 복수의 서브 함수 각각의 기능을 추론하도록 구성된 함수 기능 추론 모듈(116), 및 복수의 서브 함수 중 추론된 기능이 동일한 서브 함수들을 구조화하여 기능목록함수 구조화 트리를 생성하도록 구성된 기능목록함수 구조화 트리 생성 모듈(118)을 포함할 수 있다.
일 실시예에 있어서, 기능목록함수 구조화 트리 생성 모듈(118)은 복수의 서브 함수 중 추상 레벨로 분류된 서브 함수들을 부모 노드들로 정의하고, 부모 노드들에 해당하는 서브 함수들 각각이 호출하는 적어도 하나의 다른 서브 함수를 해당 부모 노드의 자식 노드로 정의하는 추상 수준에 따른 함수 구조화 트리로 재작성하고, 재배열된 함수구문 트리에 포함된 복수의 노드들 각각에 대해서, 해당 노드에 대응하는 서브 함수와 형제 노드에 대응하는 서브 함수의 기능이 동일한 경우, 해당 노드에 대응하는 서브 함수와 형제 노드에 대응하는 서브 함수를 그룹핑하도록 더 구성될 수 있다. 이 경우, 형제 노드는 해당 노드와 부모 노드가 동일한 노드이다.
소프트웨어 분석 장치(100)는 저장부(120)를 더 포함할 수 있다. 예시적인 실시예에서, 저장부(120)는 소프트웨어 분석으로부터 나온 메트릭들을 저장할 수 있다.
소프트웨어 분석 장치(100)는 입/출력부(130)를 더 포함할 수 있다. 입/출력부(130)는 소프트웨어를 분석하는 데에 이용되는, 상술된 바와 같은 컴포넌트들을 제공 및/또는 수신할 수 있다. 입/출력부(130)는 또 다른 시스템, 저장 장치 및/또는 데이터 스트림과 서로 데이터를 주고받을 수 있다. 입/출력부(130)는 여러 종류의 소프트웨어 분석에 대한 입력들을 수신하고, 여러 종류의 소프트웨어 분석에 분석 결과들을 제공할 수 있다. 일 실시예에서, 입/출력부(130)는 키보드, 마우스, 펜, 음성 입력 디바이스, 터치 입력 디바이스 등과 같은 입력 디바이스(132)를 가질 수 있다. 디스플레이, 스피커, 프린터 등과 같은 출력 디바이스(134) 역시 포함될 수 있다.
입/출력부(130)는 자신이 다른 디바이스들과 통신하도록 하는 통신 연결(들)(136)을 더 포함할 수 있다. 통신 연결(들)(136)은 통신 매체의 일례이다. 제한되지 않는 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 네트워크와 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 본원에서 사용될 때 컴퓨터 판독가능 매체라는 용어는 저장 매체 및 통신 매체 모두를 포함한다.
도 11은 소프트웨어의 위험을 분석하기 위한 예시적인 소프트웨어 위험분석 장치를 도시한 도면이다. 상술된 바와 같이, 예시적인 실시예에서, 소프트웨어 위험분석 장치(1100)는 프로세싱부(1110), 저장부(1120) 및 입출력부(1130)를 포함할 수 있다. 프로세싱부(1110), 저장부(1120), 및 입/출력부(1130)는 서로 연결되어(연결은 도 11에 도시되지 않음), 서로 간에 통신하도록 한다. 위험분석 장치(1100)는 분산 프로세서를 포함할 수 있고, 위험분석 장치(1100)의 각 부분(예를 들면, 프로세싱부(1110), 저장부(1120), 및 입/출력부(1130))은 분산 프로세서를 포함할 수 있다. 소프트웨어 위험분석 장치(1100)는 소프트웨어의 위험을 분석하는 것에 연관된 동작을 수행할 수 있다. 예를 들면, 프로세싱부(1110)는 소프트웨어 위험분석을 실행하고, 저장부(1120)로부터 소프트웨어 위험분석 메트릭들을 검색하고, 소프트웨어 위험분석 메트릭들을 저장할 수 있다. 저장부(1120)는 소프트웨어를 위험분석하는 것에 연관된 모든 파라미터들을 저장할 수 있다.
소프트웨어 위험분석 장치(1100)는 프로세싱부(1110)를 포함할 수 있다. 프로세싱부(1110)는 소프트웨어의 기능목록함수 구조화 트리의 복수의 기능 항목 각각에 대해서, 위험분석 타입을 분류하도록 구성된 위험분석 타입 분류 모듈(1112)을 포함할 수 있다. 여기서 복수의 기능 항목 각각은 적어도 하나의 서브 함수를 포함한다.
프로세싱부(1110)는 복수의 기능 항목의 각각의 위험분석 타입을 기초로 위험요소들과 위험요소들 간의 인과관계를 도출하도록 구성된 위험요소 도출 모듈(1114)을 더 포함할 수 있다.
소프트웨어 위험분석 장치(1100)는 저장부(1120)를 더 포함할 수 있다. 예시적인 실시예에서, 저장부(1120)는 복수의 테이블을 포함하는 데이터베이스를 포함할 수 있다. 일 실시예에서, 소프트웨어 위험분석에 사용되는 복수의 테이블은 도메인 테이블, 위험분석 타입 분류 테이블, 위험분석 타입 별 위험요소 체크리스트 테이블 및 위험요소의 인과관계 테이블을 포함할 수 있다. 일 실시예에 있어서, 복수의 테이블의 각각은 복수의 레코드(record)를 포함할 수 있다.
일 실시예에서, 도메인 테이블의 복수의 레코드의 각각은 ‘ID’ 및 ‘도메인’를 필드로 포함할 수 있다. 일 실시예에서, 위험분석 타입 분류 테이블의 복수의 레코드의 각각은 ‘ID’, ‘도메인 ID’, ‘위험분석 타입’, ‘관련 시스템’ 및 ‘문서’를 필드로 포함할 수 있다. 일 실시예에서, 위험분석 타입 별 위험요소 체크리스트 테이블의 복수의 레코드의 각각은 ‘ID’, ‘위험분석 타입 ID’, ‘위험요소 체크리스트’를 필드로 포함할 수 있다. 일 실시예에서, 위험요소의 인과관계 테이블의 복수의 레코드의 각각은 ‘ID’, ‘체크리스트 ID’, ‘부모 ID’ 및 ‘위험요소 내용’을 필드로 포함할 수 있다.
소프트웨어 위험분석 장치(1100)는 입/출력부(1130)를 더 포함할 수 있다.
소프트웨어의 위험 분석에 관한 여러 실시예들이 컴퓨터화된 시스템에 특히 적합할 것으로 예상되지만, 본 명세서 내의 범주를 제한하도록 의도되지 않는다. 반대로, 본원에서 사용될 때, "컴퓨터 시스템"이라는 용어는 디바이스가 실제로 전자, 기계, 논리, 또는, 가상인지의 여부와는 관계없이, 디바이스 자체의 동작 및 실행을 제어하기 위해 정보를 저장 및 처리하고 및/또는 저장된 정보를 이용할 수 있는 임의의 모든 디바이스들을 포함하도록 의도된다.
도 12는 본 발명의 일 실시예에 따른 도메인 테이블을 도시하는 도면이다. 도메인 테이블은 ‘ID’ 및 ‘도메인’을 필드로 포함할 수 있고, 하나 이상의 레코드가 존재할 수 있다. ‘ID’는 도메인 테이블의 key값으로 도메인 테이블 내의 복수의 레코드의 각각을 특정할 수 있으며, ‘도메인’은 전문영역을 의미하는데, 가령 자동차, 항만, 철도, 항공, 원자력 또는 무기가 될 수 있다. 일 실시예에서, 분석 대상 소프트웨어의 도메인이 자동차인 경우, 자동차와 연관된 레코드(210)의 도메인 테이블의 ‘ID’값은 1이다.
선택적으로 도메인 테이블을 별도로 구축하지 않고 위험분석의 대상이 되는 소프트웨어의 특정 도메인에 대한 위험분석 타입 분류 테이블, 위험분석 타입 별 위험요소 체크리스트 테이블 및 위험요소의 인과관계 테이블을 구축할 수 있다.
도 13은 본 발명의 일 실시예에 따른 위험분석 타입 분류 테이블을 도시하는 도면이다. 도 13에 도시된 바와 같이, 위험분석 타입 분류 테이블은 ‘ID’, ‘도메인 ID’, ‘위험분석 타입’, ‘관련 시스템’ 및 ‘문서’를 필드로 포함할 수 있고, 위험분석 타입 분류 테이블에는 복수의 레코드들(records)이 존재할 수 있다.
위험분석 타입 분류 테이블의 ‘ID’는 위험분석 타입 분류 테이블의 key값으로 각 레코드를 특정할 수 있는 값이다.
위험분석 타입 분류 테이블의 ‘도메인 ID’는 연관된 도메인 테이블의 ‘ID’값을 의미한다. 예컨대, 분석 대상 소프트웨어의 도메인이 자동차인 경우, 위험분석 타입 분류 테이블의 ‘도메인 ID’값은 도메인 테이블의 ‘ID’값인 1이 된다. 선택적으로, 분석 대상 소프트웨어의 도메인이 자동차인 경우, 도메인 테이블을 별도로 구축하지 않고, 위험분석의 대상이 되는 소프트웨어의 특정 도메인에 대한 위험분석 타입 분류 테이블을 구축하여, 위험분석 타입 분류 테이블의 ‘도메인 ID’ 필드를 생략할 수 있다.
위험분석 타입 분류 테이블의 ‘위험분석 타입’은 위험분석의 대상이 되는 소프트웨어로 인해 야기될 수 있는 위험을 위험분석 타입에 따라 분류한 것을 의미한다. 일 실시예에 있어서, 위험은 개발 단계에 따라 7가지로 분류될 수 있는데, 컨셉 설계 위험분석 타입(Conceptual Design Hazard Analysis Type: CD-HAT), 사전 설계 위험분석 타입(Preliminary Design Hazard Analysis Type: PD-HAT), 상세 설계 위험분석 타입(Detailed Design Hazard Analysis Type: DD-HAT), 시스템 설계 위험분석 타입(System Design Hazard Analysis Type: SD-HAT), 운영 설계 위험분석 타입(Operations Design Hazard Analysis Type: OD-HAT), 사용자 설계 위험분석 타입(Human Design Hazard Analysis Type: HD-HAT), 및 요구사항 설계 위험분석 타입(Requirements Design Hazard Analysis Type: RD-HAT)이다.
일 실시예에서, 위험이 시스템 설계에 대한 것일 경우 위험을 시스템 설계 위험분석 타입으로 분류하고, 위험이 사용자가 운영 중에 발생할 수 있는 위험에 대한 것일 경우 위험을 운영 설계 위험분석 타입으로 분류하고, 위험이 사용자가 사용 중에 발생할 수 있는 위험에 대한 것인 경우 위험을 사용자 설계 타입으로 분류할 수 있다.
위험분석 타입 분류 테이블의 ‘관련 시스템’은 해당 위험이 발생할 수 있는 부분을 의미한다. 일 실시예에서, ‘도메인’이 ‘자동차’일 때, ‘위험분석 타입’의 값이 ‘시스템 설계 타입’인 경우 ‘관련 시스템’은 ‘엔진’, ‘브레이크’, ‘트랜스미션’ 등이 될 수 있고, ‘위험분석 타입’의 값이 ‘운영 설계 타입’인 경우 ‘관련 시스템’은 ‘엔진’, ‘브레이크’, 트랜스미션’ 등이 될 수 있으며, ‘위험분석 타입’의 값이 ‘사용자 설계 타입’인 경우 ‘브레이크’, ‘트랜스미션’ 등이 될 수 있다.
위험분석 타입 분류 테이블의 ‘문서’는 위험분석 타입 및 관련 시스템에 따라 발생할 수 있는 위험을 기술한 것을 의미한다. 일 실시예에서, ‘위험분석 타입’의 값이 ‘시스템 설계 타입’이고 ‘관련 시스템’이 ‘엔진’인 경우, 위험분석 타입 분류 테이블의 레코드(310)가 특정되고 해당 레코드(310)의 ‘문서’ 값은 ‘위험분석 타입’의 값이 ‘운영 설계 타입’이고 ‘관련 시스템’이 ‘엔진’인 경우 특정되는 위험분석 타입 분류 테이블의 레코드(350)의 ‘문서’ 값과 다르다.
도 14는 본 발명의 일 실시예에 따른 위험분석 타입 별 위험요소 체크리스트 테이블을 도시한 도면이다. 도 14에 도시된 바와 같이, 위험분석 타입 별 위험요소 체크리스트 테이블은 ‘ID’, ‘위험분석타입 ID’, 및 ‘위험요소 체크리스트’를 필드로 포함할 수 있고, 복수의 레코드들이 존재할 수 있다.
위험분석 타입 별 위험요소 체크리스트 테이블의 ‘ID’는 key값으로 각 레코드를 특정할 수 있다.
‘위험분석타입 ID’는 연관된 위험분석 타입 분류 테이블의 ‘ID’값을 의미한다. 일 실시예에서, 분석 대상 소프트웨어의 도메인이 자동차이고, 위험분석 타입이 ‘운영 설계 타입’이며, 관련 시스템이 ‘엔진’인 레코드(350)의 ‘ID’값은 5이며, 따라서 위험분석 타입 별 위험요소 체크리스트(400)의 ‘위험분석 ID’값이 5인 레코드들(410, 420)과 연관된다. 연관된 레코드(410)의 ‘ID’는 7이고, ‘위험요소 체크리스트’는 “엔진 급발진의 위험이 있는가?”이다. 연관된 레코드(420)의 ‘ID’는 8이고, ‘위험요소 체크리스트’는 “엔진 ECU SW 주소 입력 오류의 위험이 있는가?”이다.
도 15는 본 발명의 일 실시예에 따른 위험요소의 인과관계 테이블을 도시한 도면이다. 도 15에 도시된 바와 같이, 위험요소의 인과관계 테이블은 ‘ID’, ‘체크리스트 ID’, ‘부모 ID’ 및 ‘위험요소 내용’을 필드로 포함할 수 있고, 복수의 레코드들이 존재할 수 있다.
위험요소의 인과관계 테이블의 ‘ID’는 key값으로 각 레코드를 특정할 수 있으며, ‘체크리스트 ID’는 연관된 위험요소 체크리스트 테이블의 ‘ID’값을 의미한다. 예컨대, 위험요소의 인과관계 테이블의 ‘체크리스트 ID’가 7인 레코드들(501, 503, 505)은 위험요소 체크리스트 테이블의 ‘ID’가 7인 레코드(410)와 연관될 수 있다.
위험요소의 인과관계 테이블의 ‘부모 ID’는 특정 레코드와 다른 레코드들 간의 인과관계를 나타낸다. 즉, 특정 레코드의 ‘부모 ID’와 타 레코드의 ‘ID’가 일치하는 경우, 특정 레코드의 ‘위험요소 내용’은 해당 레코드(즉, 특정 레코드의 ‘부모 ID’ 값과 일치하는 ‘ID’ 값을 가지는 레코드)의 ‘위험요소 내용’의 원인일 수 있다. 예컨대, 일 실시예에서, ‘부모 ID’가 20인 레코드들(507, 509, 511)의 ‘위험요소 내용’(즉, 엑셀포지션 센서 통신 오류 등)은 ‘ID’가 20인 레코드(501)의 ‘위험요소 내용’(즉,센서 통신 불량)의 원인일 수 있고, ‘부모 ID’가 21인 레코드들(513, 515. 517)의 ‘위험요소 내용’(즉, 스로틀 밸브 제어 오류, 브레이크 제어 오류, 제어 메모리 공유 오류’)은 ‘ID’가 21인 레코드(503)의 ‘위험요소 내용’(즉, ECU의 시스템 제어 불량)의 원인일 수 있으며, ‘부모 ID’가 28인 레코드들(519, 521, 523)은 ‘ID’가 28인 레코드(517)의 ‘위험요소 내용’(즉, 스로틀밸브 사용 메모리 공유 오류, 엑셀 포지션 사용 메모리 오류 등)은 ‘ID’가 22인 레코드(505)의 ‘위험요소 내용’(즉, …)의 원인일 수 있다.
위험요소의 인과관계 테이블의 ‘위험요소 내용’은 특정 서브함수의 오류로 인해 발생할 수 있는 위험을 기술하고 있다. 예컨대, ‘위험요소 내용’으로는 센서 통신 불량, ECU의 시스템 제어 불량 또는 엑셀포지션 센서 통신 오류 등이 있을 수 있다.
도 16은 본 발명의 일 실시예에 따른 테이블들 간의 논리적 연관관계를 도시한 도면이다. 도 16에 도시된 바와 같이, 도메인 테이블은 위험분석 타입 분류 테이블과 연관될 수 있고, 위험분석 타입 분류 테이블은 위험분석 타입 별 위험요소 체크리스트 테이블과 연관될 수 있으며, 위험분석 타입 별 위험요소 체크리스트 테이블은 위험요소의 인과관계 테이블과 연관될 수 있다.
도 12 내지 도 16에 도시된 복수의 테이블들은 본 발명에 따른 소프트웨어 위험분석 방법을 구현하기 위한 데이터베이스의 모든 테이블을 반영한 것이 아니고 필수적인 것도 아니다. 따라서, 본 발명에 따른 소프트웨어 위험분석 방법을 구현하기 위한 데이터베이스는 도시된 테이블들 보다 많은 테이블을 포함하거나 그 보다 적은 테이블을 포함할 수 있음을 인식하여야 한다. 더하여, 각각의 테이블의 필드들도 도시된 필드들 보다 많은 필드를 포함하거나 그 보다 적은 필드를 포함할 수 있음을 인식하여야 한다.
도 17은 본 발명의 일 실시예에 따라 소프트웨어의 위험분석을 제공하기 위한 예시적인 프로세스의 흐름도이다. 도 17에 도시된 바와 같이, 예시적인 실시예에서, 소프트웨어 위험분석은 복수의 테이블을 포함하는 데이터베이스를 구축하는 단계(S710)로부터 시작된다. 소프트웨어 위험분석에 사용되는 복수의 테이블은 도메인 테이블, 위험분석 타입 분류 테이블, 위험분석 타입 별 위험요소 체크리스트 테이블 및 위험요소의 인과관계 테이블을 포함할 수 있다. 일 실시예에 있어서, 복수의 테이블의 각각은 복수의 레코드를 포함할 수 있다.
일 실시예에서, 도메인 테이블의 복수의 레코드의 각각은 ‘ID’ 및 ‘도메인’을 필드로 포함할 수 있다.
일 실시예에서, 위험분석 타입 분류 테이블의 복수의 레코드의 각각은 ‘ID’, ‘도메인 ID’, ‘위험분석 타입’, ‘관련 시스템’ 및 ‘문서’를 필드로 포함할 수 있다.
일 실시예에서, 위험분석 타입 별 위험요소 체크리스트 테이블의 복수의 레코드의 각각은 ‘ID’, ‘위험분석 타입 ID’, ‘위험요소 체크리스트’를 필드로 포함할 수 있다.
일 실시예에서, 위험요소의 인과관계 테이블의 복수의 레코드의 각각은 ‘ID’, ‘체크리스트 ID’, ‘부모 ID’ 및 ‘위험요소 내용’을 필드로 포함할 수 있다.
단계(S720)에서는, 위험을 분석해야 할 대상인 소프트웨어의 도메인 정보를 획득할 수 있다. 일 실시예에서, 소프트웨어의 도메인은 도메인 테이블의 ‘도메인’ 필드의 값 중 하나일 수 있다. 예컨대, 소프트웨어의 도메인이 ‘자동차’이고, 도메인 테이블의 ‘도메인’ 값으로 ‘자동차’를 가지는 레코드(210)를 특정할 수 있고, 레코드(210)의 ‘ID’는 1이다.
일 실시예에 있어서, 선택적으로 도메인 테이블을 별도로 구축하지 않고 위험분석의 대상이 되는 소프트웨어의 도메인에 대한 위험분석 타입 분류 테이블 위험분석 타입 별 위험요소 체크리스트 테이블 및 위험요소의 인과관계 테이블을 생성할 수 있다. 이 경우, 단계(S720)는 생략될 수 있다.
단계(S730)에서는 위험을 분석해야 할 대상인 소프트웨어의 기능목록 함수 구조화 트리를 획득할 수 있다. 여기서, 소프트웨어는 소스 코드로 구성되며, 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함할 수 있다. 기능목록함수 구조화 트리는 서브 함수를 기능에 따라 트리 구조로 도식화한 트리이다.
도 18은 본 발명의 일 실시예에 따른 기능목록 함수 구조화 트리를 도시하는 도면이다. 일 실시예에서, 기능목록함수 구조화 트리는 복수의 기능 항목으로 구성되고, 복수의 기능 항목의 각각은 상기 복수의 서브 함수 중 적어도 하나의 서브 함수를 포함할 수 있다. 여기서, 복수의 서브 함수의 각각은 주석, 함수 명, 입력 파라미터 명 및 내부 구현 텍스트를 포함하는 함수 정보에 의해 정의될 수 있다.
일 실시예에서, 최상위 부모 노드들은 주제(“File”, “Edit”, “Options”, “Analyze”, “Allocate”, “Help”)를 나타내며, 각 주제와 서브 함수의 기능에 매핑된 경우, 해당 서브 함수를 부모 노드의 자식 노드로 정의할 수 있다. 예컨데, 주제(“Edit”)과 매핑된 함수 명(‘Tolerances’, ‘NodeDOF’, ‘Allocation Data’, 및 ‘Process Data’)의 서브 함수들의 기능은 “Edit”으로 동일하다.
일 실시예에 있어서, 소프트웨어의 기능목록함수 구조화 트리를 획득하는 것은 소프트웨어의 기능목록함수 구조화 트리를 입력받는 것일 수 있다. 선택적으로, 일 실시예에서, 소프트웨어의 기능목록함수 구조화 트리를 획득하는 것은 해당 소프트웨어의 소스 코드를 획득하고, 소스 코드를 연산하여 복수의 서브 함수로 구성되는 함수구문 트리를 생성하고, 함수구문 트리를 구성하는 상기 복수의 서브 함수 각각을 추상 레벨 또는 구체 레벨로 분류하며, 함수구문 트리를 구성하는 복수의 서브 함수 각각의 기능을 추론하고, 복수의 서브 함수 중 상기 추론된 기능이 동일한 서브 함수들을 구조화하여 기능목록함수 구조화 트리를 생성하는 것일 수 있다. 일 실시예에서, 복수의 서브 함수 각각을 추상 레벨 또는 구체 레벨로 분류하는 것은 복수의 서브 함수 각각에 대해서 상호호출 관계를 기초로 분류할 수 있다. 일 실시예에서, 소프트웨어의 기능목록함수 구조화 트리를 획득하는 것은 한국특허출원번호 제10-2015-0136251호에 따라 생성할 수 있다.
단계(S740)에서 기능목록함수 구조화 트리의 복수의 기능 항목의 각각에 대해서 위험분석 타입 분류 테이블을 이용하여 복수의 기능 항목 각각을 위험분석 타입으로 분류할 수 있다.
일 실시예에서, 기능목록 함수 구조화 트리의 복수의 기능 항목 각각에 대해서 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 것은 해당 기능 항목이 포함하는 적어도 하나의 서브 함수의 함수 정보와 위험분석 타입 분류 테이블의 문서들 간에 텍스트 기반으로 유사도를 계산하여 가장 유사도가 높은 문서의 위험분석 타입으로 위험분석 타입을 분류하는 것일 수 있다.
일 실시예에서, 텍스트 기반으로 유사도를 계산하여 위험분석 타입을 분류하는 것은 해당 기능 항목이 포함하는 적어도 하나의 서브 함수의 함수 정보와 상기 위험분석 타입 분류 테이블의 ‘문서’ 필드 값들 간에 텍스트 기반으로 유사도를 계산하여 가장 유사도가 높은 필드 값을 가지는 ‘문서’와 연관된 레코드를 검색하고, 해당 기능 항목을 해당 레코드와 연관시키는 것일 수 있다. 예컨대, 복수의 기능 항목 중 어느 하나의 기능 항목에 대해서 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하여 보니, 가장 유사도가 높은 필드 값을 가지는 ‘문서’와 연관된 레코드가 레코드(310)일 때, 레코드(310)의 ‘ID’는 5이고, 해당 기능 항목의 ‘위험분석 타입’은 운영설계 타입이고, ‘관련 시스템’은 엔진일 수 있다.
일 실시예에서, 코사인 기반 유사도 알고리즘 및 유클리디안 거리기반 유사도 알고리즘 중 적어도 하나를 사용하여 텍스트 기반의 유사도를 계산할 수 있다.
일 실시예에서, 위험분석 타입은 컨셉 설계 위험분석 타입(CD-HAT), 사전 설계 위험분석 타입(PD-HAT), 상세 설계 위험분석 타입(DD-HAT), 시스템 설계 위험분석 타입(SD-HAT), 운영 설계 위험분석 타입(OD-HAT), 사용자 설계 위험분석 타입(HD-HAT), 요구사항 설계 위험분석 타입(RD-HAT) 중 어느 하나일 수 있다.
일 실시예에서, 기능목록 함수 구조화 트리의 복수의 기능 항목 각각에 대해서 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 것은 복수의 기능 항목 각각이 시스템 설계에 대한 것일 경우 해당 기능 항목을 시스템 설계 위험분석 타입으로 분류하고, 해당 기능 항목이 사용자가 운영 중에 발생할 수 있는 위험에 대한 것일 경우 해당 기능 항목을 운영 설계 위험분석 타입으로 분류하고, 해당 기능 항목이 사용자가 사용 중에 발생할 수 있는 위험에 대한 것인 경우 해당 기능 항목을 사용자 설계 타입으로 분류할 수 있다.
단계 (S750)에서는 위험분석 타입 별 위험요소 체크리스트를 도출할 수 있다. 단계 (S740)에서 가장 유사도가 높은 문서의 위험분석 타입 및 관련시스템과 연관된 위험분석 타입 분류 테이블의 레코드의 ‘ID’를 구하고, 위험분석 타입 별 위험요소 체크리스트 테이블의 레코드들 중 ‘위험분석 타입 ID’가 단계(S740)에서 구한 위험분석 타입 분류 테이블의 레코드의 ID와 일치하는 위험분석 타입 별 위험요소 체크리스트 테이블의 적어도 하나의 레코드를 검색할 수 있다. 검색된 적어도 하나의 레코드의 ‘ID’ 및 해당 레코드의 ‘위험요소 체크리스트’를 도출할 수 있다.
일 실시예에서 위험분석 타입 분류 테이블의 레코드(310)의 ‘ID’가 5인 경우, 연관된 위험분석 타입 별 위험요소 체크리스트 테이블의 레코드들 중 ‘위험분석 타입 ID’가 5인 레코드들(410, 420)을 검색한다. 레코드(410)의 ‘ID’는 7이고, 레코드(420)의 ‘ID’는 8이다. 해당 레코드들(410, 420)의 ‘위험요소 체크리스트’는 “엔진 급발진의 위험이 있는가?”(레코드 410) 이거나, “엔진 ECU SW 주소 입력 오류의 위험이 있는가”(레코드 420)이다.
단계 (S760)에서는 위험요소들 간의 인과관계를 도출할 수 있다.
위험분석 타입 별 위험요소 체크리스트 테이블의 특정 레코드의 ‘ID’가 위험요소의 인과관계 테이블의 ‘체크리스트 ID’와 일치하는 위험요소의 인과관계 테이블의 적어도 하나의 레코드를 검색할 수 있다. 검색된 적어도 하나의 레코드의 ‘ID’ 및 ‘위험요소 내용’ 필드 값을 도출 할 수 있다.
일 실시예에서 위험분석 타입 별 위험요소 체크리스트 테이블의 레코드(410)의 ‘ID’가 7인 경우, 연관된 위험요소의 인과관계 테이블의 레코드들 중 ‘체크리스트 ID’가 7인 레코드들(501, 503, 505)을 검색한다. 레코드(501)의 ‘ID’는 20, 레코드(503)의 ‘ID’는 21, 레코드(505)의 ‘ID’는 22이다. 레코드들(501)의 ‘위험요소 내용’은 “센서 통신 분량”이고, 레코드들(503)의 ‘위험요소 내용’은 “ECU의 시스템 제어 불량”이며, 레코드들(505)의 ‘위험요소 내용’은 “…”이다.
일 실시예에서, 위험요소의 인과관계 테이블의 복수의 레코드들 중 ‘부모 ID’와 다른 레코드들의 ‘ID’가 일치하는 적어도 하나의 레코드를 검색할 수 있다. 검색된 적어도 하나의 레코드의 ‘위험요소 내용’ 필드 값을 도출 할 수 있다.
일 실시예에서 위험요소의 인과관계 테이블의 레코드들(507, 509, 511)의 ‘부모 ID’는 20이다. 레코드들(507, 509, 511)은 ‘ID’가 20인 레코드(501)와 연관된다. 이는 레코드들(507, 509, 511)의 ‘위험요소 내용’은 레코드(501)의 ‘위험요소 내용’의 원인이 될 수 있음을 의미한다.
유사하게, 위험요소의 인과관계 테이블의 레코드들(513, 515, 517)의 ‘부모 ID’는 21이다. 레코드들(513, 515, 517)은 ‘ID’가 21인 레코드(503)와 연관된다. 레코드들(513, 515, 517)의 ‘위험요소 내용’은 레코드(503)의 ‘위험요소 내용’의 원인이 될 수 있다.
유사하게, 위험요소의 인과관계 테이블의 레코드들(519, 521, 523)의 ‘부모 ID’는 28이다. 레코드들(519, 521, 523)은 ‘ID’가 28인 레코드(517)와 연관된다. 레코드들(519, 521, 523)의 ‘위험요소 내용’은 레코드(517)의 ‘위험요소 내용’의 원인이 될 수 있다.
단계 (S770)에서는 위험요소들을 인과관계에 따라 시각화시킬 수 있다.
도 19는 본 발명의 일 실시예에 따라 위험요소의 인과관계 테이블을 이용하여 위험요소들을 인과관계에 따라 시각화시킨 도면이다. 도 19에 도시된 바와 같이, 위험요소를 시각화된 그래픽 유저 인터페이스로 제공함으로써, 사용자가 위험요소를 보다 직관적으로 인식할 수 있도록 해 줄 수 있다.
일 실시예에서, 위험분석 타입 분류 테이블의 레코드(410)의 ‘위험요소 체크리스트’ 값인 “엔진 급발진의 위험이 있는가”에 대한 인과관계를 시각화할 수 있다. 레코드(410)의 ‘ID’는 7이다. 인과관계 테이블에서 복수의 레코드들 중 ‘체크리스트 ID’가 7인 레코드들(501, 503, 505)을 검색할 수 있다. 레코드들(501, 503, 505)의 ‘위험요소 내용’은 레코드(410)의 ‘위험요소 체크리스트’의 원인일 수 있다. 따라서, 레코드들(501, 503, 505)의 ‘위험요소 내용’을 논리연산자 OR로 묶여, 레코드(410)의 ‘위험요소 체크리스트’의 하위 노드로 구성할 수 있다.
유사하게, 레코드들(507, 509, 511)의 ‘부모 ID’는 20이다. 레코드들(507, 509, 511)은 ‘ID’가 20인 레코드(501)와 연관된다. 이는 레코드들(507, 509, 511)의 ‘위험요소 내용’은 레코드(501)의 ‘위험요소 내용’의 원인이 될 수 있음을 의미하므로 레코드들(507, 509, 511)의 ‘위험요소 내용’을 논리연산자 OR로 묶여, 레코드(501)의 ‘위험요소 내용’의 하위 노드로 구성할 수 있다.
유사하게, 레코드들(513, 515, 517)의 ‘부모 ID’는 21이다. 레코드들(513, 515, 517)은 ‘ID’가 21인 레코드(503)와 연관된다. 레코드들(513, 515, 517)의 ‘위험요소 내용’은 레코드(503)의 ‘위험요소 내용’의 원인이 될 수 있다. 따라서, 레코드들(513, 515, 517)의 ‘위험요소 내용’을 논리연산자 OR로 묶여, 레코드(503)의 ‘위험요소 내용’의 하위 노드로 구성할 수 있다.
유사하게, 레코드들(519, 521, 523)의 ‘부모 ID’는 28이다. 레코드들(519, 521, 523)은 ‘ID’가 28인 레코드(517)와 연관된다. 레코드들(519, 521, 523)의 ‘위험요소 내용’은 레코드(517)의 ‘위험요소 내용’의 원인이 될 수 있다. 따라서, 레코드들(519, 521, 523)의 ‘위험요소 내용’을 논리연산자 OR로 묶여, 레코드(517)의 ‘위험요소 내용’의 하위 노드로 구성할 수 있다.
이상에서 설명한 바와 같이 본 발명은 데이터베이스를 구축하여 위험요소를 도출하므로 위험요소를 판단할 때 누락의 실수 및 위험을 예방할 수 있고, 위험요소의 원인, 결과 관계를 분석하여 논리 연산자 조합으로 표현함으로써 사용자에게 빠른 식별이 가능하게 되어 집중해서 위험을 분석해야 할 함수 또는 모듈이 무엇인지 빠르게 확인이 가능하다.
소프트웨어 분석의 여러 실시예들이 컴퓨터화된 시스템에 특히 적합할 것으로 예상되지만, 본 명세서 내의 범주를 제한하도록 의도되지 않는다. 반대로, 본원에서 사용될 때, "컴퓨터 시스템"이라는 용어는 디바이스가 실제로 전자, 기계, 논리, 또는, 가상인지의 여부와는 관계없이, 디바이스 자체의 동작 및 실행을 제어하기 위해 정보를 저장 및 처리하고 및/또는 저장된 정보를 이용할 수 있는 임의의 모든 디바이스들을 포함하도록 의도된다.
소프트웨어 분석이 다양한 도면의 예시적인 실시예와 관련하여 기술되어져 왔지만, 다른 유사한 실시예들이 이용될 수 있고, 또는 본 발명을 벗어나지 않고서 반복적인 동적 및 정적 소프트웨어 분석의 동일한 기능을 수행하기 위한 수정 및 추가가, 설명된 실시예들에 대해 만들어질 수 있다는 것이 이해되어야 한다. 그러므로, 본원에 기술된 소프트웨어 분석은 어떤 단일 실시예로 한정되어서는 아니되며, 첨부 청구항에 따른 범위 및 범주안에서 이해되어져야 한다.
본 발명의 다른 과제는 소프트웨어 구조에 관한 문서(즉, 요구사항문서)가 없어서 그 구조를 파악하기 어려운 상황에서도 소스 코드를 분석하여 어떤 서브 함수가 위험한지의 정보가 포함된 기능목록 구조화를 하여 소프트웨어 안전진단을 제공해주는 소프트웨어 분석 방법 및 장치를 제공하는 것이다.
본 발명의 다른 과제는 소프트웨어를 구성하는 위험요소를 분석하여 가장 중요한 위험요소 도출 누락과 같은 휴먼 에러 없이 소프트웨어 안전진단을 제공해주는 소프트웨어 위험분석 방법 및 장치를 제공하는 것이다.

Claims (16)

  1. 소프트웨어 분석 방법으로서,
    소프트웨어의 소스 코드를 획득하는 단계 - 상기 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함하며, 상기 복수의 서브 함수의 각각은 기본 라이브러리 또는 사용자 라이브러리로 분류되고, 주석, 함수 명, 입력 파라미터 명 및 내부 구현 텍스트를 포함하는 함수 정보를 포함함 -,
    상기 소스 코드를 연산하여 상기 복수의 서브 함수로 구성되는 함수구문 트리를 생성하는 단계,
    상기 함수구문 트리를 구성하는 상기 복수의 서브 함수 각각을 추상 레벨 또는 구체 레벨로 분류하는 단계,
    상기 함수구문 트리를 구성하는 상기 복수의 서브 함수 각각의 기능을 추론하는 단계, 및
    상기 복수의 서브 함수 중 상기 추론된 기능이 동일한 서브 함수들을 구조화하여 기능목록함수 구조화 트리를 생성하는 단계를 포함하는 소프트웨어 분석 방법.
  2. 제1항에 있어서,
    상기 소스 코드를 연산하여 상기 복수의 서브 함수로 구성되는 함수구문 트리를 생성하는 단계는
    상기 소스 코드를 스캔하고 파싱하여 추상구문 트리(abstract syntax tree)를 생성하는 단계, 및
    구문 분석기(semantic analyzer)를 이용하여 상기 추상구문 트리를 함수구문 트리로 변환하는 단계를 포함하는, 소프트웨어 분석 방법.
  3. 제1항에 있어서,
    상기 추상 레벨 또는 구체 레벨로 분류하는 단계는
    상기 복수의 서브 함수 각각에 대해서 상호호출 관계를 산출하는 단계,
    상기 상호호출 관계를 기초로 상기 해당 서브 함수가 다른 서브 함수를 참조하는 개수인 원심성 값 및 다른 함수가 상기 해당 서브 함수를 참조하는 개수인 구심성 값을 구하는 단계,
    상기 해당 서브 함수의 상기 원심성 값 및 상기 구심성 값을 기초로 상기 해당 서브 함수의 불안정성 값을 산출하는 단계, 및
    상기 불안정성 값이 제1 기준 값 이상이면 상기 해당 서브 함수를 상기 추상 레벨로 분류하고, 상기 불안정성 값이 상기 제1 기준 값 미만이면 상기 해당 서브 함수를 상기 구체 레벨로 분류하는 단계를 포함하는, 소프트웨어 분석 방법.
  4. 제1항에 있어서,
    상기 방법은
    상기 복수의 서브 함수 중 상기 추상 레벨로 분류된 서브 함수들 각각을 루트 노드로 정의 하고, 상기 루트 노드를 시작으로 트리를 구성하는 단계 - 상기 트리에서는, 다른 서브 함수를 호출하는 서브 함수를 부모 노드로 정의하고 상기 부모 노드에 해당하는 서브 함수가 호출하는 다른 서브 함수를 자식 노드로 정의함 - 를 더 포함하는 소프트웨어 분석 방법.
  5. 제1항에 있어서,
    상기 함수구문 트리를 구성하는 상기 복수의 서브 함수 각각의 기능을 추론하는 단계는
    상기 함수구문 트리를 구성하는 상기 복수의 서브 함수를 상기 기본 라이브러리에 속하는 제1 서브 함수 그룹과 상기 사용자 라이브러리에 속하는 제2 서브 함수 그룹으로 분류하는 단계,
    상기 소스 코드가 작성된 프로그래밍 언어에서 사전에 정의된 기능 목록을 기초로 상기 제1 서브 함수그룹의 서브 함수들의 각각의 기능을 추론하는 제1 서브 함수그룹 의미 추론 단계, 및
    상기 제2 서브 함수 그룹의 서브 함수들 각각의 함수 정보를 기초로 상기 제2 서브 함수 그룹의 서브 함수들 각각의 기능을 추론하는 제2 서브 함수그룹 의미 추론 단계를 포함하는, 소프트웨어 분석 방법.
  6. 제5항에 있어서,
    상기 제2 서브 함수그룹 의미 추론 단계는
    상기 제2 그룹의 서브 함수들 각각의 함수 정보를 텍스트 마이닝하여 주제 DB에서 가장 유사한 기능을 도출하고, 상기 가장 유사한 기능을 상기 해당 제2 그룹 서브 함수의 기능으로 매핑하는 단계를 포함하는 소프트웨어 분석 방법.
  7. 제1항에 있어서,
    상기 추론된 기능이 동일한 서브 함수들을 구조화하여 기능목록함수 구조화 트리를 생성하는 단계는
    상기 복수의 서브 함수 중 추상 레벨로 분류된 서브 함수들을 부모 노드들로 정의하고, 상기 부모 노드들에 해당하는 서브 함수들 각각이 호출하는 적어도 하나의 다른 서브 함수를 상기 해당 부모 노드의 자식 노드로 정의하는 추상 수준에 따른 함수 구조화 트리 재작성 단계, 및
    상기 재배열된 함수구문 트리에 포함된 복수의 노드들 각각에 대해서, 상기 해당 노드에 대응하는 서브 함수와 형제 노드에 대응하는 서브 함수의 기능이 동일한 경우, 상기 해당 노드에 대응하는 서브 함수와 형제 노드에 대응하는 서브 함수를 그룹핑하는 단계 - 상기 형제 노드는 상기 해당 노드와 부모 노드가 동일함 - 를 포함하는, 소프트웨어 분석 방법.
  8. 제3항에 있어서,
    상기 산출된 원심성 값 및 상기 산출된 구심성 값을 기초로 불안정성 값을 산출하는 단계는, 수식 1에 따라 불안정성 값을 계산하는 단계를 포함하는, 소프트웨어 분석 방법.
    수식 1:
    Figure PCTKR2016010738-appb-I000002
  9. 소프트웨어 분석 장치로서,
    입력된 소스 코드를 연산하여 복수의 서브 함수로 구성되는 함수구문 트리를 생성하도록 구성된 함수구분 트리 생성 모듈 - 상기 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함하며, 상기 복수의 서브 함수의 각각은 기본 라이브러리 또는 사용자 라이브러리로 분류되고, 주석, 함수 명, 입력 파라미터 명 및 내부 구현 텍스트를 포함하는 함수 정보를 포함함- ,
    상기 함수구문 트리를 구성하는 상기 복수의 서브 함수 각각을 추상 레벨 또는 구체 레벨로 분류하도록 구성된 추상/구체 레벨 분류 모듈,
    상기 함수구문 트리를 구성하는 상기 복수의 서브 함수 각각의 기능을 추론하도록 구성된 함수기능 추론 모듈, 및
    상기 복수의 서브 함수 중 상기 추론된 기능이 동일한 서브 함수들을 구조화하여 기능목록함수 구조화 트리를 생성하도록 구성된 기능목록함수 구조화 트리 생성 모듈을 포함하는 소프트웨어 분석 장치.
  10. 제9항에 있어서,
    상기 기능목록함수 구조화 트리 생성 모듈은
    상기 복수의 서브 함수 중 추상 레벨로 분류된 서브 함수들을 부모 노드들로 정의하고, 상기 부모 노드들에 해당하는 서브 함수들 각각이 호출하는 적어도 하나의 다른 서브 함수를 상기 해당 부모 노드의 자식 노드로 정의하는 추상 수준에 따른 함수 구조화 트리로 재작성하고,
    상기 재배열된 함수구문 트리에 포함된 복수의 노드들 각각에 대해서, 상기 해당 노드에 대응하는 서브 함수와 형제 노드에 대응하는 서브 함수의 기능이 동일한 경우, 상기 해당 노드에 대응하는 서브 함수와 형제 노드 - 상기 형제 노드는 상기 해당 노드와 부모 노드가 동일함 - 에 대응하는 서브 함수를 그룹핑하도록 더 구성되는, 소프트웨어 분석 장치.
  11. 소프트웨어 위험분석 방법으로서,
    복수의 레코드(records)를 포함하는 위험분석 타입 분류 테이블을 구축하는 단계 - 상기 위험분석 타입 분류 테이블의 복수의 레코드의 각각은 ID, 도메인 ID, 위험분석 타입(Hazard Analysis Type), 관련 시스템 및 문서를 포함함 -,
    소프트웨어의 도메인 정보를 획득하는 단계 - 상기 소프트웨어는 소스 코드로 구성되며, 상기 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함함 -,
    상기 소프트웨어의 기능목록함수 구조화 트리를 획득하는 단계 - 상기 기능목록함수 구조화 트리는 복수의 기능 항목으로 구성되고, 상기 복수의 기능 항목의 각각은 상기 복수의 서브 함수 중 적어도 하나의 서브 함수를 포함함 -,
    상기 기능목록함수 구조화 트리의 상기 복수의 기능 항목의 각각에 대해서 상기 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 단계, 및
    상기 소프트웨어의 도메인 정보 및 상기 분류된 위험분석 타입을 기초로 위험요소들의 인과관계를 시각화하는 단계
    를 포함하는 소프트웨어 위험분석 방법.
  12. 제11항에 있어서,
    상기 위험분석 타입은 컨셉 설계 위험분석 타입(CD-HAT), 사전 설계 위험분석 타입(PD-HAT), 상세 설계 위험분석 타입(DD-HAT), 시스템 설계 위험분석 타입(SD-HAT), 운영 설계 위험분석 타입(OD-HAT), 사용자 설계 위험분석 타입(HD-HAT), 요구사항 설계 위험분석 타입(RD-HAT) 중 적어도 하나로 분류되는, 소프트웨어 위험분석 방법.
  13. 프로그램을 기록한 컴퓨터 판독가능 기록매체로서, 상기 프로그램은 명령어들을 포함하고, 상기 명령어들은 컴퓨터에 의해 실행될 때 제1항 내지 제8항 및 제11항 내지 제12항 중 어느 한 항에 따른 방법을 수행하는, 컴퓨터 판독가능 기록매체.
  14. 소프트웨어 위험분석 장치로서,
    위험분석 타입 분류 테이블 - 상기 위험분석 타입 분류 테이블은 복수의 레코드를 포함하고, 상기 복수의 레코드의 각각은 ID, 도메인 ID, 위험분석 타입, 관련 시스템 및 문서를 포함함 -,
    소프트웨어의 기능목록함수 구조화 트리의 복수의 기능 항목 각각에 대해서, 상기 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하도록 구성된 위험분석 타입 분류 모듈 - 상기 복수의 기능 항목의 각각은 적어도 하나의 서브 함수를 포함함 -, 및
    소프트웨어의 도메인 정보 및 위험분석 타입을 기초로 위험요소들의 인과관계를 시각화하도록 구성된 위험요소 도출 모듈 - 상기 소프트웨어는 소스 코드로 구성되며, 상기 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함함 -
    을 포함하는 소프트웨어 위험분석 장치.
  15. 제14항에 있어서,
    상기 위험분석 타입 분류 모듈은
    상기 복수의 기능 항목 각각이 시스템 설계에 대한 것일 경우 상기 해당 기능 항목을 시스템 설계 위험분석 타입으로 분류하고,
    상기 해당 기능 항목이 사용자가 운영 중에 발생할 수 있는 위험에 대한 것일 경우 상기 해당 기능 항목을 운영 설계 위험분석 타입으로 분류하고,
    상기 해당 기능 항목이 사용자가 사용 중에 발생할 수 있는 위험에 대한 것인 경우 상기 해당 기능 항목을 사용자 설계 타입으로 분류하도록 더 구성되는
  16. 제14항에 있어서,
    상기 위험분석 타입 분류 테이블과 연관된 복수의 레코드를 포함하는 위험분석 타입 별 위험요소 체크리스트 테이블 - 상기 위험요소 인과관계 데이터베이스의 복수의 레코드의 각각은 ID, 위험분석 타입 ID, 위험요소 체크리스트를 포함함 -을 더 포함하고,
    상기 위험요소 도출 모듈은, 상기 가장 유사도가 높은 레코드의 ID를 획득하고, 상기 위험분석 타입 별 위험요소 체크리스트 테이블의 복수의 레코드 중 위험분석 타입 ID가 상기 가장 유사도가 높은 레코드의 ID와 일치하는 적어도 하나의 레코드를 선택하여, 상기 선택된 적어도 하나의 레코드의 위험요소 체크리스트 값을 도출하도록 더 구성되는 소프트웨어 위험분석 장치.
PCT/KR2016/010738 2015-09-25 2016-09-26 소프트웨어 분석 방법 및 장치 WO2017052318A1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR1020150136251A KR101706098B1 (ko) 2015-09-25 2015-09-25 소프트웨어 분석 방법 및 장치
KR10-2015-0136251 2015-09-25
KR1020150151599A KR101734418B1 (ko) 2015-10-30 2015-10-30 소프트웨어 위험분석 방법 및 장치
KR10-2015-0151599 2015-10-30

Publications (1)

Publication Number Publication Date
WO2017052318A1 true WO2017052318A1 (ko) 2017-03-30

Family

ID=58386548

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2016/010738 WO2017052318A1 (ko) 2015-09-25 2016-09-26 소프트웨어 분석 방법 및 장치

Country Status (1)

Country Link
WO (1) WO2017052318A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347428A (zh) * 2018-04-08 2019-10-18 北京京东尚科信息技术有限公司 一种代码相似度的检测方法和装置
CN110659195A (zh) * 2018-06-28 2020-01-07 武汉斗鱼网络科技有限公司 一种安卓程序崩溃定位方法、存储介质、电子设备及系统
CN112232824A (zh) * 2019-07-15 2021-01-15 招商证券股份有限公司 一种基于抽象语法树的风险结果计算方法及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008262348A (ja) * 2007-04-11 2008-10-30 Fuji Xerox Co Ltd リスク識別計画支援システムおよびリスク識別計画支援装置およびリスク識別計画支援プログラム
JP2011170697A (ja) * 2010-02-19 2011-09-01 Panasonic Corp ソフトウェア構造分析装置
JP2013156786A (ja) * 2012-01-30 2013-08-15 Hitachi Automotive Systems Ltd ソフトウェアの構造可視化プログラムおよびシステム
KR101507469B1 (ko) * 2015-01-06 2015-04-03 (주)싸이버텍 소스 코드 분석 서비스 제공 방법
KR101520671B1 (ko) * 2014-04-25 2015-05-20 충남대학교산학협력단 실행코드 유사도 분석 시스템 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008262348A (ja) * 2007-04-11 2008-10-30 Fuji Xerox Co Ltd リスク識別計画支援システムおよびリスク識別計画支援装置およびリスク識別計画支援プログラム
JP2011170697A (ja) * 2010-02-19 2011-09-01 Panasonic Corp ソフトウェア構造分析装置
JP2013156786A (ja) * 2012-01-30 2013-08-15 Hitachi Automotive Systems Ltd ソフトウェアの構造可視化プログラムおよびシステム
KR101520671B1 (ko) * 2014-04-25 2015-05-20 충남대학교산학협력단 실행코드 유사도 분석 시스템 및 방법
KR101507469B1 (ko) * 2015-01-06 2015-04-03 (주)싸이버텍 소스 코드 분석 서비스 제공 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347428A (zh) * 2018-04-08 2019-10-18 北京京东尚科信息技术有限公司 一种代码相似度的检测方法和装置
CN110659195A (zh) * 2018-06-28 2020-01-07 武汉斗鱼网络科技有限公司 一种安卓程序崩溃定位方法、存储介质、电子设备及系统
CN110659195B (zh) * 2018-06-28 2022-09-16 武汉斗鱼网络科技有限公司 一种安卓程序崩溃定位方法、存储介质、电子设备及系统
CN112232824A (zh) * 2019-07-15 2021-01-15 招商证券股份有限公司 一种基于抽象语法树的风险结果计算方法及设备

Similar Documents

Publication Publication Date Title
US7849509B2 (en) Detection of security vulnerabilities in computer programs
KR100509650B1 (ko) 코드 삽입 기법을 이용한 악성 스크립트 감지 방법
US9092636B2 (en) Methods and systems for exact data match filtering
EP2728508B1 (en) Dynamic data masking
WO2014035043A1 (ko) 악성 애플리케이션 진단 장치 및 방법
US9262499B2 (en) Context-based graphical database
JP5452030B2 (ja) 統合ログ生成装置及び統合ログ生成プログラム及び記録媒体
WO2017052318A1 (ko) 소프트웨어 분석 방법 및 장치
CN111767573A (zh) 数据库安全管理方法、装置、电子设备及可读存储介质
CN107783766A (zh) 对应用程序的文件进行清理的方法和装置
WO2016085272A1 (ko) 소스 코드의 오류 검출에 있어서 오경보 저감 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체
US8327324B1 (en) Message logging system
Kozlenkov et al. Are their design specifications consistent with our requirements?
KR101734418B1 (ko) 소프트웨어 위험분석 방법 및 장치
CN111552792A (zh) 一种信息查询方法、装置、电子设备及存储介质
JP3997495B2 (ja) ソフトウェア解析装置及びソフトウェア解析方法
WO2023013826A1 (ko) 기본 문형 단위 분해에 기반한 외국어 구문 학습 시스템
CN114691197A (zh) 代码分析方法、装置、电子设备和存储介质
US9354870B2 (en) Maintaining integrity of output of code generators
WO2012046905A1 (ko) 다중 자원의 통합에 의한 자원 검색 장치 및 방법
KR101706098B1 (ko) 소프트웨어 분석 방법 및 장치
WO2020054890A1 (ko) 제어 시스템의 해저드 분석 방법 및 그 장치
US11714896B2 (en) Information processing apparatus, information processing method, and computer program
WO2022107957A1 (ko) 자연어 처리 기반 난독화된 식별자 인식 방법, 이를 수행하기 위한 기록 매체 및 장치
WO2024048907A1 (ko) 아이템 원부 플랫폼을 위한 방법, 컴퓨터 장치, 및 컴퓨터 프로그램

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16849043

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16849043

Country of ref document: EP

Kind code of ref document: A1