KR102610172B1 - 불변성을 검증하는 전자 장치 및 그 방법 - Google Patents

불변성을 검증하는 전자 장치 및 그 방법 Download PDF

Info

Publication number
KR102610172B1
KR102610172B1 KR1020230000612A KR20230000612A KR102610172B1 KR 102610172 B1 KR102610172 B1 KR 102610172B1 KR 1020230000612 A KR1020230000612 A KR 1020230000612A KR 20230000612 A KR20230000612 A KR 20230000612A KR 102610172 B1 KR102610172 B1 KR 102610172B1
Authority
KR
South Korea
Prior art keywords
data model
immutability
function
verifying
script
Prior art date
Application number
KR1020230000612A
Other languages
English (en)
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
Application filed by 쿠팡 주식회사 filed Critical 쿠팡 주식회사
Priority to KR1020230000612A priority Critical patent/KR102610172B1/ko
Application granted granted Critical
Publication of KR102610172B1 publication Critical patent/KR102610172B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries

Abstract

본 개시에 따르면, 스크립트의 정보를 획득하는 단계; 스크립트에 포함되는 복수의 기능 중 데이터 모델에 연관되는 기능을 판단하는 단계; 및 데이터 모델에 연관되는 기능 별로 불변성 여부를 확인하는 단계를 포함하는, 전자 장치에서 불변성을 검증하는 방법이 개시된다.

Description

불변성을 검증하는 전자 장치 및 그 방법 {ELECTRONIC APPARATUS FOR VERYFING IMMUTABILITY OF FUNCTIONS AND METHOD THEREOF}
본 개시는 불변성을 검증하는 전자 장치 및 그 방 관한 것이다. 보다 구체적으로 본 개시는 스크립트의 정보를 획득하고, 스크립트에 포함되는 복수의 기능 중 데이터 모델에 연관되는 기능을 판단하고, 데이터 모델에 연관되는 기능 별로 불변성 여부를 확인하는 전자 장치 및 그 방법에 관한 것이다.
전자 기술의 발달에 따라 생활 전반에는 전자 기술을 이용한 서비스가 자리잡게 되었다. 전자 기술을 이용한 서비스는 코드(기계어에 의해서 기술되고, CPU에 의해서 해석되어 실행되는 프로그램)에 기초하여 제공될 수 있다. 관련하여, 서비스 제공을 위해서 새로운 코드를 이용하거나 기존의 코드를 변경하여 이용하게 되는데, 스크립트가 포함하는 기능들 중 적어도 일부에 대해서 불변성(immutability)을 보장할 필요가 있다. 관련하여, 불변성은 데이터의 원본이 훼손되는 것을 막도록 하는 광의의 개념으로 이해될 수 있다.
불변성을 지킴으로써, 예기치 못한 데이터 원본의 손상을 방지할 수 있을 뿐만 아니라, 코드의 가독성이 향상되며, 유지보수가 용이해지고, 신뢰성이 확보되는 등 여러 이점을 기대할 수 있다. 다만, 모든 코드에 대해 불변성을 요구하는 것은 지나치게 엄격한 규칙일 수 있으며, 이로 인하여 오히려 개발자의 작업 자유도를 저해하고 스크립트의 작성 및 동작의 경직과 비효율을 초래할 우려가 있어, 어느 정도까지 불변성을 요구할지가 문제된다.
관련하여, KR1020220047132A 건이나 KR1020070121664A 건 등의 선행문헌들을 참조할 수 있다.
본 실시 예가 해결하고자 하는 과제는, 스크립트의 정보를 획득하고, 스크립트에 포함되는 복수의 기능 중 데이터 모델에 연관되는 기능을 판단하고, 데이터 모델에 연관되는 기능 별로 불변성 여부를 확인하는, 전자 장치 및 그 방법을 제공하는데 있다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일실시예에 따른 전자 장치에서 불변성(immutability)을 검증하는 방법은, 스크립트의 정보를 획득하는 단계; 상기 스크립트에 포함되는 복수의 기능(function) 중 데이터 모델(data model)에 연관되는 기능을 판단하는 단계; 및 상기 데이터 모델에 연관되는 기능 별로 불변성 여부를 확인하는 단계를 포함한다.
일실시예에 따르면, 상기 데이터 모델에 연관되는 기능을 판단하는 단계는 상기 스크립트에 포함되는 하나 이상의 엔트리 포인트를 확인하는 단계; 상기 하나 이상의 엔트리 포인트 별로 상기 데이터 모델과의 연관성을 판단하는 단계; 및 상기 데이터 모델에 연관되는 엔트리 포인트에 의하여 실행되는 기능을 상기 데이터 모델에 연관되는 기능으로 판단하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 하나 이상의 엔트리 포인트 별로 상기 데이터 모델과의 연관성을 판단하는 단계는 상기 하나 이상의 엔트리 포인트가 데이터 레이어 속성의 기능에 대응되는지 여부를 판단하는 단계; 및 상기 엔트리 포인트에 의하여 실행되는 기능이 상기 데이터 레이어 속성의 기능을 포함하는지 여부를 판단하는 단계 중 하나 이상을 포함할 수 있다.
일실시예에 따르면, 상기 하나 이상의 엔트리 포인트 별로 상기 데이터 모델과의 연관성을 판단하는 단계는 상기 데이터 레이어 속성의 기능이 UI 레이어 방향으로의 데이터 이동을 지시하는지 여부를 확인하는 단계를 더 포함할 수 있다.
일실시예에 따르면, 상기 하나 이상의 엔트리 포인트가 데이터 레이어 속성의 기능에 대응되는지 여부를 판단하는 단계는 상기 하나 이상의 엔트리 포인트가 리포지토리(Repository) 기능에 대응되는지 여부를 판단하는 단계를 포함할 수 있다.
일실시예에 따르면, 모델-뷰-뷰모델(MVVM, Model-View-ViewModel) 패턴이 상기 스크립트에 적용될 수 있다.
일실시예에 따르면, 상기 불변성 여부를 확인하는 단계는 상기 데이터 모델에 연관되는 기능 별로 설정된 하나 이상의 규칙을 준수하는지 여부를 판단하는 단계를 포함하는 것을 특징으로 하고, 상기 설정된 하나 이상의 규칙은, 퍼블릭 게터(Public getter)이 존재할 것을 규정하는 제1규칙, 세터(Setter)가 존재하지 않을 것을 규정하는 제2규칙, 해시코드 메소드(Hashcode method) 및 이퀄스 메소드(Equals method)를 재정의(Override)할 것을 규정하는 제3규칙 및 인스턴스(instance)의 변경(modification)을 불허할 것을 규정하는 제4규칙 중 하나 이상을 포함할 수 있다.
일실시예에 따르면, 상기 불변성을 검증하는 방법은, 상기 불변성 여부를 확인한 결과를 포함하는 정보를 제공하는 단계를 더 포함할 수 있다.
일실시예에 따르면, 상기 불변성 여부를 확인한 결과를 포함하는 정보를 제공하는 단계는 상기 데이터 모델에 연관되는 기능의 개수 정보, 상기 데이터 모델에 연관되는 기능 중 불변성이 없다고 판단되는 기능의 개수 정보 및 상기 데이터 모델에 연관되는 기능 대비 불변성이 없다고 판단되는 기능의 비율 정보 중 하나 이상을 포함할 수 있다.
일실시예에 따르면, 상기 불변성 여부를 확인한 결과를 포함하는 정보를 제공하는 단계는 설정된 하나 이상의 규칙을 준수하는지 여부를 상기 데이터 모델에 연관되는 기능 별로 판단한 결과 정보를 제공하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 불변성을 검증하는 방법은, 상기 불변성 여부와 관련한 세부 정보를 확인하기 위한 링크를 제공하는 단계를 더 포함할 수 있다.
일실시예에 따르면, 상기 전자 장치는 서버 및 사용자 단말 중 하나 이상을 포함할 수 있다.
일실시예에 따르면, 상기 사용자 단말에 의해 상기 데이터 모델에 연관되는 기능을 판단하는 동작 및 상기 불변성 여부를 확인하는 동작 중 하나 이상이 일차적으로 수행되고, 상기 서버에 의해 상기 데이터 모델에 연관되는 기능을 판단하는 동작 및 상기 불변성 여부를 확인하는 동작 중 하나 이상이 이차적으로 수행될 수 있다.
일실시예에 따르면, 상기 서버에서 수행되는 동작은, 상기 사용자 단말에 의해 수행되는 동작에 비해 더 높은 검증 정확도를 가질 수 있다.
일실시예에 따르면, 상기 불변성을 검증하는 방법은, 코드 정보를 획득하는 단계; 및 상기 코드 정보가 설정된 조건을 만족하면 알림 정보를 제공하는 단계를 더 포함하고, 상기 설정된 조건은 상기 데이터 모델에 연관되는 엔트리 포인트에 의하여 상기 데이터 모델에 연관되지 않는 기능이 수행되도록 코드가 작성된 경우 및 상기 데이터 모델에 연관되지 않는 엔트리 포인트에 의하여 상기 데이터 모델에 연관되는 기능이 수행되도록 코드가 작성된 경우 중 하나 이상을 포함할 수 있다.
일실시예에 따른 불변성을 검증하는 전자 장치는 트랜시버, 명령어를 저장하는 메모리 및 프로세서를 포함하고, 상기 프로세서는, 상기 트랜시버 및 상기 메모리와 연결되어, 스크립트의 정보를 획득하고, 상기 스크립트에 포함되는 복수의 기능 중 데이터 모델에 연관되는 기능을 판단하고, 상기 데이터 모델에 연관되는 기능 별로 불변성 여부를 확인한다.
기타 실시 예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 개시에 따르면, 불변성을 검증하는 전자 장치 및 그 방법은 데이터 모델의 불변성을 보장하면서도, 시간 및 연산량 등 비용을 절약하고, 개발자의 작업 자유도를 보장하고, 스크립트의 작성 및 동작에 대한 유연함과 효율을 높일 수 있다.
발명의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당해 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 일실시예에 따른 불변성을 검증하기 위한 시스템을 나타내는 개략적인 구성도이다.
도 2는 일실시예에 따른 불변성을 검증하는 방법의 동작 흐름도이다.
도 3은 일실시예에 따른 애플리케이션 아키텍쳐를 예시적으로 설명하기 위한 도면이다.
도 4는 일실시예에 따른 불변성을 검증하는 구체적 동작을 예시적으로 설명하기 위한 도면이다.
도 5는 일실시예에 따른 불변성을 검증하는 방법이 수행되는 상황을 예시적으로 설명하기 위한 도면이다.
도 6은 일실시예에 따른 불변성 여부를 확인한 결과를 포함하는 정보를 제공하는 동작을 예시적으로 설명하기 위한 도면이다.
도 7은 일실시예에 따른 전자 장치의 구성의 예시도이다.
실시 예들에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “...부”, “...모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
명세서 전체에서 기재된 “a, b, 및 c 중 적어도 하나”의 표현은, ‘a 단독’, ‘b 단독’, ‘c 단독’, ‘a 및 b’, ‘a 및 c’, ‘b 및 c’, 또는 ‘a,b,c 모두’를 포괄할 수 있다.
이하에서 언급되는 "단말"은 네트워크를 통해 서버나 타 단말에 접속할 수 있는 컴퓨터나 휴대용 단말로 구현될 수 있다. 여기서, 컴퓨터는 예를 들어, 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(desktop), 랩톱(laptop) 등을 포함하고, 휴대용 단말은 예를 들어, 휴대성과 이동성이 보장되는 무선 통신 장치로서, IMT(International Mobile Telecommunication), CDMA(Code Division Multiple Access), W-CDMA(W-Code Division Multiple Access), LTE(Long Term Evolution) 등의 통신 기반 단말, 스마트폰, 태블릿 PC 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치를 포함할 수 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 1은 일실시예에 따른 불변성을 검증하기 위한 시스템을 나타내는 개략적인 구성도이다.
다양한 실시예에 따르면 불변성을 검증하기 위한 시스템(100)은 서버(110) 및 사용자 단말(120) 중 하나 이상을 포함할 수 있다. 실시예에 따라, 불변성을 검증하기 위한 시스템(100)은 서버(110), 사용자 단말(120) 및 기타 외부 장치 중 적어도 일부 간의 정보 송수신을 지원하는 네트워크 망을 더 포함할 수 있다.
서버(110) 및 사용자 단말(120) 각각은 트랜시버, 메모리 및 프로세서를 포함할 수 있다. 또한, 서버(110) 및 사용자 단말(120) 각각은 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어, 또는, 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 한편 실시예 전반에서 서버(110) 및 사용자 단말(120) 각각은 분리된 장치 또는 서버로 언급되나 이는 논리적으로 나누어진 구조일 수 있으며, 이들 중 적어도 일부가 하나의 장치 또는 서버에서 분리된 기능에 의해 구현될 수 있다.
일실시예에 따르면, 서버(110) 및 사용자 단말(120)은 네트워크 서버로 구현되는 다수의 컴퓨터 시스템 또는 컴퓨터 소프트웨어를 포함할 수 있다. 예를 들면, 서버(110) 및 사용자 단말(120) 중 적어도 일부는 인트라넷 또는 인터넷과 같은 컴퓨터 네트워크를 통해 다른 네트워크 서버와 통신할 수 있는 하위 장치와 연결되어 작업 수행 요청을 접수하고, 그에 대한 작업을 수행하여 수행 결과를 제공하는 컴퓨터 시스템 및 컴퓨터 소프트웨어를 지칭할 수 있다. 이외에도, 서버(110) 및 사용자 단말(120) 중 적어도 일부는 네트워크 서버 상에서 동작할 수 있는 일련의 응용 프로그램과, 내부 혹은 연결된 다른 노드에 구축되어 있는 각종 데이터베이스를 포함하는 광의의 개념으로 이해될 수 있다. 예컨대, 서버(110) 및 사용자 단말(120) 중 적어도 일부는 도스(DOS), 윈도우(Windows), 리눅스(Linux), 유닉스(UNIX), 또는 맥OS(MacOS) 등의 운영 체제에 따라 다양하게 제공되는 네트워크 서버 프로그램을 이용하여 구현될 수 있다.
서버(110)는 다양한 정보를 획득하여 제공하는 장치이다. 서버(110)는 서비스 제공을 위하여 다양한 동작을 수행하는 장치일 수 있다. 예컨대, 서버(110)는 획득한 스크립트를 실행시여 서비스를 제공할 수 있는데, 이는 스크립트를 직접적으로 실행하는 경우 외에도, 스크립트를 포함하는 애플리케이션을 사용자에게 제공하여 사용자 단말(120)에서 스크립트가 실행되도록 하는 경우 등을 포함할 수 있다.
사용자는 서비스를 위한 스크립트를 생성하거나 이용하는 다양한 주체를 포함한다. 예컨대, 사용자는 코드를 작성하여 스크립트를 생성하는 개발자일 수 있다. 그 외에도, 사용자는 개발자가 작성한 스크립트를 수신하여 이상 여부를 확인하는 작업자나, 서버(110)가 정상 동작하고 서버(110)가 제공하는 서비스에 문제가 없도록 관리하는 관리자 등, 다양한 주체를 포함할 수 있다. 사용자 단말(120)은 이러한 사용자가 이용하는 장치를 다양하게 포함할 수 있다.
실시예의 사용자 단말(120)은, 스마트폰에 애플리케이션을 설치하는 형태로 구현되거나, POS 기 상에 애플리케이션을 설치하는 형태로도 구현될 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다.
본 개시에서 불변성을 검증하는 방법을 수행하는 동작 주체인 전자 장치는 서버(110) 및 사용자 단말(120) 중 하나 이상을 포함할 수 있다. 즉, 전자 장치는 서버(110)일 수도 있고, 사용자 단말(120)일 수도 있으며, 서버(110) 및 사용자 단말(120)이 협업하여 불변성을 검증하는 방법을 수행할 수도 있는데, 예컨대 서버(110)가 방법 중 일부를 수행하고 사용자 단말(120)이 나머지 방법을 수행할 수 있다.
또한, 실시예에 따라서는 불변성을 검증하는 방법이 서로 다른 복수의 주체에 의해 복수 회 수행될 수도 있으며, 예컨대 후술할 도 5의 예시와 같이 사용자 단말(120)에서 불변성을 검증하는 방법이 수행된 이후 서버(110)에서 불변성을 검증하는 방법이 더 수행될 수도 있다.
이하에서는 설명의 편의를 위하여 전자 장치가 불변성을 검증하는 방법을 수행한다고 설명하나, 이러한 "전자 장치"는 서버(110), 사용자 단말(120), 서버(110) 및 사용자 단말(120)의 조합 등을 포함하고, 나아가서는 외부 장치를 포함하거나, 외부 장치와의 조합을 더 포함할 수도 있다고 이해될 수 있다.
서버(110) 및 사용자 단말(120)은 컴퓨터 장치, 이동 통신 단말, 서버 등을 포함할 수 있다. 사용자 단말(120)은 입력을 수신하기 위한 터치 패드, 마우스, 키보드 등의 입력 장치를 포함하거나, 입력 장치에 연결될 수 있으며, 실시예에 따라서는 서버(110)도 마찬가지일 수 있다. 또한, 사용자 단말(120)은 이용 주체에게 정보를 제공하기 위한 화면, 스피커, 인터페이스 장치 등의 출력 장치를 포함하거나, 출력 장치에 연결될 수 있으며, 실시예에 따라서는 서버(110)도 마찬가지일 수 있다. 나아가, 서버(110) 또는 사용자 단말(120)의 입력 장치 및 출력 장치는 일체로 구성되거나 상호 연관될 수 있으며, 예컨대 사용자 단말(120)에 입력을 수신하기 위한 인터페이스가 표시될 수 있다.
전술하였듯이, 다양한 실시예에 따른 일련의 정보 처리 방법과 관련된 동작들은, 단일의 물리적 장치에 의해 구현될 수 있으며, 복수의 물리적 장치가 유기적으로 결합된 방식으로 구현될 수도 있다. 예를 들어, 불변성을 검증하기 위한 시스템(100)에 포함된 구성 중 일부는 어느 하나의 물리적 장치에 의해 구현되고, 나머지 일부는 다른 물리적 장치로 구현될 수 있다. 예컨대, 어느 하나의 물리적 장치는, 서버(110)의 일부로 구현될 수 있으며, 다른 물리적 장치는, 사용자 단말(120)의 일부 또는 기타 외부 장치의 일부로 구현될 수도 있다. 경우에 따라, 불변성을 검증하기 위한 시스템(100)에 포함된 각각의 구성요소들은 각각 서로 다른 물리적 장치에 분산되어 배치되고, 분산 배치된 구성요소들이 유기적으로 결합되어, 불변성을 검증하기 위한 시스템(100)의 기능 및 동작을 수행하도록 구현될 수도 있다. 예컨대, 본 명세서의 전자 장치는 적어도 하나의 서브 장치를 포함하며, 전자 장치에 의해 수행되는 것으로 기재된 일부 동작들은 제1서브 장치(예컨대, 서버(110))에 의하여 수행되고, 다른 일부 동작들은 제2서브 장치(예컨대, 사용자 단말(120))에 의해 수행될 수도 있다.
도 2는 일실시예에 따른 불변성을 검증하는 방법의 동작 흐름도이다.
도 2를 참조하면, 전자 장치는 스크립트의 정보를 획득한다(210). 일실시예에 따르면 전자 장치가 서버(110)인 경우, 사용자 단말(120)로부터 스크립트의 정보를 획득할 수 있다. 일실시예에 따르면, 전자 장치가 사용자 단말(120)인 경우, 사용자의 입력에 기초하여 스크립트의 정보를 획득할 수 있다. 다만, 본 개시의 범위가 이에 한정되는 것은 아니고, 실시예에 따라, 전자 장치에 의해 스크립트가 자동적으로 생성되거나, 다른 장치로부터 생성된 스크립트를 제공받는 등, 전자 장치가 스크립트 정보를 획득하는 다양한 실시예들이 존재할 수 있다.
전자 장치는 스크립트에 포함되는 복수의 기능(function) 중 데이터 모델(data model)에 연관되는 기능을 판단한다(220). 일실시예에 따른 전자 장치는 스크립트에 포함되는 하나 이상의 엔트리 포인트를 확인하고, 확인한 하나 이상의 엔트리 포인트 별로 데이터 모델과의 연관성을 판단할 수 있다. 이 경우, 전자 장치는 데이터 모델에 연관되는 엔트리 포인트에 의하여 실행되는 기능을 데이터 모델에 연관되는 기능으로 판단할 수 있다.
데이터 모델에 연관되는 엔트리 포인트에 의하여 실행되는 기능이 항상 데이터 모델에 연관되어야 하는 것은 아니라는 점에서 본 개시에서 제시되는 방법의 정확 여부가 문제될 수 있다. 다만, 본 개시의 방법은 데이터 모델에 연관되는 기능으로 판단한 기능에 대하여 불변성(immutability) 여부를 확인하는 것이 목적이므로, 데이터 모델에 연관되는 기능에 대하여 연관되지 않았다고 판단하는 것은 그 불이익이 큰 반면, 데이터 모델에 연관되지 않는 기능에 대하여 연관되었다고 판단하는 것은 그 불이익이 상대적으로 적을 수 있다. 보다 구체적으로, 데이터 모델에 연관되는 기능에 대하여 연관되지 않았다고 판단하면 가변적인(mutable) 데이터 모델을 포함하는 스크립트가 정상 스크립트로 판단되어 서비스 안정성을 위협할 위험이 있지만, 데이터 모델에 연관되지 않는 기능에 대하여 연관되었다고 판단하더라도 가변적인 데이터 모델의 존재 위험은 없고, 다만 불변성이 요구되지 않는 기능에 대해 불변성을 요구하게 될 뿐이므로, 연산량이나 서비스 지연 면에서 일부 불이익은 있을지언정 서비스 안정성을 위협하지 어렵기 때문이다.
이러한 점을 고려하면, 개별의 기능에 대해 데이터 모델과의 연관성 여부를 면밀히 판단함으로써 시간 및 연산량 등의 비용이 지나치게 낭비되는 것보다는, 서비스 안정성을 위협하지 않는 선에서 보다 효율적인 본 개시의 방법을 채택하는 것이 더 나을 수 있다. 즉, 데이터 모델에 연관되는 엔트리 포인트에 의하여 실행되는 기능을 데이터 모델에 연관되는 기능으로 판단하는 본 개시의 방법은, 개별의 기능에 대해 데이터 모델과의 연관성 여부를 면밀히 판단하는 방법에 비해 그 판단을 위한 시간 및 연산량 등의 비용을 크게 절약할 수 있으면서도, 모든 데이터 모델에 대하여 불변성을 일관적으로 요구하는 것에 비해서 개발자의 작업 자유도가 보장되고, 스크립트의 작성 및 동작에 대한 유연함과 효율을 높일 수 있는 방법이라고 이해할 수 있다.
특히, 사용자 단말(120)에서 본 개시의 방법이 실행되는 경우 등, 본 개시의 동작 주체인 전자 장치가 그 연산 능력이 크지 않은 경우, 이렇게 러프(rough)한 판단 방법을 채택함으로써 가지는 이점이 극대화될 수 있다.
확인한 하나 이상의 엔트리 포인트 별로 데이터 모델과의 연관성을 판단하는 것과 관련하여 보다 구체적으로, 일실시예에 따른 전자 장치는 하나 이상의 엔트리 포인트가 데이터 레이어 속성의 기능에 대응되는지 여부를 판단할 수 있다. 이 경우, 데이터 레이어 속성의 기능에 대응되는 엔트리 포인트를 확인하는 경우, 해당 엔트리 포인트에 의하여 실행되는 기능은 데이터 모델에 연관되는 기능으로 판단할 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다.
실시예에 따라서는, 전자 장치는 엔트리 포인트에 의하여 실행되는 기능이 데이터 레이어 속성의 기능을 포함하는지 여부를 판단할 수도 있다. 이 경우, 일 예시에 따른 전자 장치는 엔트리 포인트에 의하여 실행되는 기능이 데이터 레이어 속성의 기능을 포함하는 경우 해당 엔트리 포인트에 의하여 실행되는 다른 기능도 데이터 모델에 연관되는 기능으로 판단할 수 있다. 다만, 본 개시의 범위가 이에 한정되는 것은 아니고, 엔트리 포인트에 의하여 실행되는 기능 중 임계값을 초과하는 개수만큼의 기능이 데이터 레이어 속성을 포함하는 것으로 확인하는 경우에만 해당 엔트리 포인트에 의하여 실행되는 다른 기능도 데이터 모델에 연관되는 기능으로 판단하거나, 혹은 엔트리 포인트에 의하여 실행되는 기능의 과반수가 데이터 레이어 속성의 기능을 포함하는 경우에 한하여 해당 엔트리 포인트에 의하여 실행되는 다른 기능도 데이터 모델에 연관되는 기능으로 판단하는 등, 다양한 실시예들이 존재할 수 있다.
관련하여, 도 3에 도시되는 애플리케이션 아키텍쳐의 일 예시를 더 참조하면, 일 예시에 따른 데이터 레이어(310)는 UI 레이어(320)로부터 사용자 입력 등의 정보를 (경우에 따라서는 도메인 레이어(330)를 통하여) 전달받을 수 있고, UI 레이어(320)로 스크립트의 실행과 관련되는 정보를 (경우에 따라서는 도메인 레이어(330)를 통하여) 전달할 수 있는데, 데이터 레이어(310)에서 정보를 전송하도록 하는 데이터 레이어(310) 속성의 기능은 데이터 모델이거나, 혹은 데이터 모델을 감싸는 더 큰 형태의 기능에 해당한다고 판단할 수 있다. 데이터 모델을 감싸는 더 큰 형태의 기능인 경우에도 불변성이 요구됨은 마찬가지인 바, 본 개시와 관련해서는 이를 데이터 모델에 해당하는 것으로 보아도 무방하다.
일실시예에 따르면, 본 개시에서 전자 장치가 획득하는 스크립트에 모델-뷰-뷰모델(MVVM, Model-View-ViewModel) 패턴이 적용될 수 있다. 관련하여, 도 3의 도시는 모델-뷰-뷰모델 패턴을 포괄하는 것으로 이해될 수 있다. 예컨대, UI 레이어(320)는 UI 구성요소(UI elements) 및 뷰모델(ViewModel)을 포함하고, 도메인 레이어(330)는 유즈케이스(UseCases)를 포함하며, 데이터 레이어(310)가 로컬 엔티티(Local Entity)를 생성하여 도메인 레이어(330)로 전달하면 도메인 레이어(330)에서 UI 모델을 생성하여 UI 레이어(320)로 전달할 수 있다.
다시 도 2로 돌아와서, 일실시예에 따른 전자 장치는 데이터 레이어 속성의 기능이 UI 레이어 방향으로의 데이터 이동을 지시하는지 여부를 더 확인할 수도 있다. 이 경우, 데이터 레이어 속성의 기능이 UI 레이어 방향으로의 데이터 이동을 지시하는 경우에 한하여 해당 기능이 데이터 모델에 연관되는 (혹은 엔트리 포인트가 데이터 모델에 연관되는) 것으로 판단할 수도 있다. 한편, UI 레이어 방향으로의 데이터 이동을 "지시"하는지 여부에 대해서는, 무조건적으로 UI 레이어 방향으로 데이터가 이동해야만 하는 것이 아니라, 조건의 달성에 따라 UI 레이어 방향으로 데이터가 이동할 수 있으면 데이터 이동을 "지시"한다고 볼 수 있는 것으로 넓게 해석할 수 있다.
또한, 일실시예에 따른 전자 장치는, (UI 레이어 방향이 아니더라도) 데이터 레이어 속성의 기능이 상위 레이어 방향으로의 데이터 이동을 지시한다면 해당 기능이 데이터 모델에 연관되는 (혹은 엔트리 포인트가 데이터 모델에 연관되는) 것으로 판단할 수도 있다.
일실시예에 따르면, 전자 장치는 하나 이상의 엔트리 포인트가 리포지토리(Repository) 기능에 대응되는지 여부를 판단함으로써 데이터 레이어 속성의 기능에 대응되는지 여부를 판단할 수 있다. 리포지토리는 데이터 소스(data source)의 진입점으로 사용될 수 있으므로, 리포지토리 기능에 대응되는지 여부를 판단함으로써 데이터 레이어 속성의 기능에 대응되는지(나아가서는 데이터 모델에 연관되는지) 여부를 판단하기 위한 비용을 절약할 수 있다.
데이터 모델에 연관되는 기능을 판단한 전자 장치는 데이터 모델에 연관되는 기능 별로 불변성 여부를 확인한다(230). 일실시예에 따르면, 전자 장치는 데이터 모델에 연관되는 기능 별로 설정된 하나 이상의 규칙을 준수하는지 여부를 판단함으로써 불변성 여부를 확인할 수 있다. 관련하여, 설정된 하나 이상의 규칙은, 퍼블릭 게터(Public getter)이 존재할 것을 규정하는 제1규칙, 세터(Setter)가 존재하지 않을 것을 규정하는 제2규칙, 해시코드 메소드(Hashcode method) 및 이퀄스 메소드(Equals method)를 재정의(Override)할 것을 규정하는 제3규칙 및 인스턴스(instance)의 변경(modification)을 불허할 것을 규정하는 제4규칙 중 하나 이상을 포함할 수 있다.
하나 이상의 규칙과 관련한 일 예시는 아래의 표 1과 같다.
표 1의 예시와 같이, 하나 이상의 규칙의 준수 여부와 관련한 세부적인 사항은, 스크립트의 작성 언어에 기초하여 결정될 수 있다. 예컨대, 스크립트의 작성 언어가 자바(Java)인 경우, 세터의 존재 여부를 판단하기 위하여 "set+<field name>"과 같은 텍스트의 존재 여부를 확인하고, 스크립트의 작성 언어가 코틀린(Kotlin)인 경우, 세터의 존재 여부를 판단하기 위하여 "set+<property name>"과 같은 텍스트의 존재 여부를 확인할 수 있다. 아울러, 실시예에 따라서는, 전자 장치는 특정 조건을 만족하는 경우에는 불변성 여부의 확인을 생략할 수 있는데, 예컨대 표 1의 예시에서는 스크립트의 작성 언어가 코틀린인 경우 코틀린 객체, 컴패니언(Companion) 객체 및 실드(Sealed) 클래스의 기능 대해서는 불변성 여부의 확인을 생략할 수도 있다.
일실시예에 따르면, 전자 장치는 불변성 여부를 확인한 결과를 포함하는 정보를 제공할 수 있다. 전자 장치가 정보를 제공하는 동작은, 다른 장치에 정보를 전송하는 동작뿐만 아니라, 정보를 출력 장치를 통하여 (사용자 등에) 제공하는 동작을 포함할 수 있다. 예컨대, 전자 장치가 서버(110)인 경우, 전자 장치는 불변성 여부를 확인한 결과를 포함하는 정보를 사용자 단말(120)에 전송할 수 있고, 전자 장치가 사용자 단말(120)인 경우, 전자 장치는 불변성 여부를 확인한 결과를 포함하는 정보를 화면에 표시할 수 있다.
불변성 여부를 확인한 결과를 포함하는 정보를 제공하는 것과 관련된 보다 상세한 사항은 도 6에서 후술한다.
일실시예에 따른 전자 장치는, 데이터 모델에 연관되는 엔트리 포인트에 의하여 데이터 모델에 연관되는 기능들이 실행되는 방향으로 사용자 등 개발자가 스크립트를 생성하도록 유도할 수 있다. 관련하여, 전자 장치는 코드 정보를 (예컨대 실시간으로) 획득하고, 코드 정보가 설정된 조건을 만족하면 알림 정보를 제공할 수 있는데, 설정된 조건은 예컨대 데이터 모델에 연관되는 엔트리 포인트에 의하여 데이터 모델에 연관되지 않는 기능이 수행되도록 코드가 작성된 경우 및 데이터 모델에 연관되지 않는 엔트리 포인트에 의하여 데이터 모델에 연관되는 기능이 수행되도록 코드가 작성된 경우 중 하나 이상을 포함할 수 있으나, 이에 한정되는 것은 아니다.
관련하여, "코드 정보"는 사용자가 완성하여 전송하는 전체 스크립트일 필요가 없고, 예컨대 개발자가 작업 중인 파일에 포함되는 코드일 수 있다. 또한, 코드 정보가 반드시 실시간으로 획득되어야 하는 것은 아니고, 예컨대 작성 중인 코드의 임시 저장이 이루어질 때마다 코드 정보를 획득할 수도 있고, 설정된 시간 주기마다 코드 정보를 획득할 수도 있는 등, 다양한 실시예들이 존재할 수 있다.
이렇게 코드 작성 레벨에서부터 데이터 모델에 연관되는 엔트리 포인트에 의하여 데이터 모델에 연관되는 기능들이 실행되는 방향으로 스크립트가 생성되도록 유도함으로써, 보다 효율적인 불변성 검증 방법(시간 및 연산량 등의 비용이 지나치게 낭비되지 않는 방법)을 채택하는 경우에도 높은 검증 정확도를 기대할 수 있다. 또한, 스크립트 작성 방식에 있어서 통일된 기준을 부여함으로써, 개발자의 작업 편의가 향상됨은 물론, 다른 개발자가 코드를 이해하기도 용이해지고, 나아가 다른 개발자들과의 협업이 보다 용이해질 수 있다.
도 4는 일실시예에 따른 불변성을 검증하는 구체적 동작을 예시적으로 설명하기 위한 도면이다.
도 4를 참조하면, 일실시에에 따른 데이터 모델 검증기(410)에 의하여 본 개시의 방법이 수행될 수 있다. 데이터 모델 검증기(410)는 엔트리 포인트 식별기(EntryPointRecognizer)(411), 데이터 모델 식별기(DataModelRecognizer)(412) 및 불변성 검증기(ImmutableValidator)(413) 중 하나 이상을 포함할 수 있다.
데이터 모델 검증기(410)에서 스크립트를 획득하면, 엔트리 포인트 식별기(411)에서는 데이터 모델에 연관되는 엔트리 포인트가 식별될 수 있다. 데이터 모델 식별기(412)에서는 데이터 모델에 연관되는 엔트리 포인트 별로 해당 엔트리 포인트에 의해 실행되는 기능이 식별될 수 있다. 불변성 검증기(413)에서는 데이터 모델 식별기(412)에서 식별되는 기능 별로 별로 설정된 하나 이상의 규칙을 준수하는지 여부를 판단하여 불변성 여부가 검증될 수 있다. 최종적으로, 데이터 모델의 불변성 여부가 판단될 수 있다.
도 4의 설명은 본 개시의 방법을 수행하기 위한 일 예시에 불과한 것으로, 본 개시의 범위를 한정하는 것으로 이해되어서는 안 된다. 또한, 데이터 모델 검증기(410), 엔트리 포인트 식별기(411), 데이터 모델 식별기(412) 및 불변성 검증기(413) 등은 논리적인 구성 요소로서, 별개의 물리적인 실체를 가져야 하는 것은 아니다. 예컨대, 엔트리 포인트 식별기(411), 데이터 모델 식별기(412)는 모두 전자 장치의 프로세서에서 수행될 수 있으며, 프로세서에서 엔트리 포인트 식별기(411)의 동작과 데이터 모델 식별기(412)의 동작이 물리적으로 구분되어 수행되어야만 하는 것은 아니다.
도 5는 일실시예에 따른 불변성을 검증하는 방법이 수행되는 상황을 예시적으로 설명하기 위한 도면이다.
도 5를 참조하면, 일실시예에 따른 사용자 단말(120)은 사용자 등으로부터 스크립트의 업로드를 요청받을 수 있다. 이러한 요청은, 예컨대 커밋(Commit)의 병합 요청을 포함하는 풀 리퀘스트(PR, Pull Request)(510)를 포함할 수 있으나, 이에 한정되는 것은 아니다. 다만 이하에서는 설명의 편의를 위해, 스크립트의 업로드 요청을 풀 리퀘스트(510)로 설명하되, 이러한 설명은 다른 업로드 요청들에도 적용 가능한 설명으로 이해될 수 있다.
사용자 단말(120)은 풀 리퀘스트 체크(520)를 수행할 수 있다. 풀 리퀘스트 체크(520)는, 수신한 풀 리퀘스트(510)에 대응되는 스크립트에 대하여 이상 여부를 확인하는 과정을 포함할 수 있다. 풀 리퀘스트 체크(520) 시에 데이터 모델에 연관되는 기능의 판단 및 불변성 여부의 확인이 이루어질 수 있다(예컨대, 데이터 모델 검증기(410)에 의해). 한편, 풀 리퀘스트 체크(520) 시에는, 불변성 여부의 확인 외에도 종속성 목록 체크(Dependency List Check) 등 다른 이상 여부의 확인이 더 수행될 수 있다.
풀 리퀘스트 체크(520)의 수행 결과 이상 없다고 판단되는 스크립트에 대해서는, 코드 리뷰(530) 과정을 통해 이상 여부를 검토하고, 코드 리뷰(530) 과정에서도 이상이 없으면 커밋의 병합(540)이 이루어질 수 있다. 코드 리뷰(530) 과정은 사용자 단말(120)의 사용자 외에도 하나 이상의 리뷰어에 의하여 수행될 수 있다.
실시예에 따라서는, 서버(110)에서도 데이터 모델에 연관되는 기능의 판단 및 불변성 여부의 확인이 이루어질 수 있다. 예컨대, 병합(540) 이전에 서버(110)에서 스크립트에 포함되는 복수의 기능 중 데이터 모델에 연관되는 기능을 판단하는 동작 및 데이터 모델에 연관되는 기능 별로 불변성 여부를 확인하는 동작 및 하나 이상이 수행될 수 있다. 이와 관련해서는, 사용자 단말(120)에서 데이터 모델에 연관되는 기능을 판단한 결과를 신뢰하여 서버(110)에서는 불변성 여부만 확인할 수도 있고, 서버(110)에서 데이터 모델에 연관되는 기능부터 다시 판단할 수도 있는 등, 다양한 실시예들이 존재할 수 있다.
실시예에 따라서는, 서버(110)에서 수행되는 동작은 사용자 단말(120)에서 수행되는 동작과 적어도 일부에서 차이가 있을 수 있다. 예컨대, 서버(110)의 연산 능력이 사용자 단말(120)의 연산 능력보다 더 뛰어남을 고려하여, 서버(110)에서 불변성을 검증할 때는 사용자 단말(120)에서 불변성을 검증할 때에 비해 보다 많은 비용이 필요하더라도 더 정확도가 높은 방법이 이용될 수 있다.
이와 같이, 일실시예에 따른 서버(110)에서 수행되는 동작은 사용자 단말(120)에서 수행되는 동작에 비해 더 높은 검증 정확도를 가질 수 있다.
도 6은 일실시예에 따른 불변성 여부를 확인한 결과를 포함하는 정보를 제공하는 동작을 예시적으로 설명하기 위한 도면이다.
도 6을 참조하면, 일실시예에 따른 전자 장치는 불변성 여부를 확인한 결과를 포함하는 정보를 제공할 수 있다. 일실시예에 따르면, 불변성 여부를 확인한 결과를 포함하는 정보는, 기능 별 불변성 여부에 대한 통계 정보를 포함할 수 있다. 예컨대, 도면번호 610의 예시를 참조하면, 전자 장치는 데이터 모델에 연관되는 기능의 개수 정보("데이터 모델 개수: 57"), 데이터 모델에 연관되는 기능 중 불변성이 없다고 판단되는 기능의 개수 정보("가변적인 데이터 모델 개수: 6") 및 데이터 모델에 연관되는 기능 대비 불변성이 없다고 판단되는 기능의 비율 정보("가변적인 데이터 모델 비율: 10.526316%") 중 하나 이상을 제공할 수 있다.
일실시예에 따르면, 불변성 여부를 확인한 결과를 포함하는 정보는, 설정된 하나 이상의 규칙을 준수하는지 여부를 데이터 모델에 연관되는 기능 별로 판단한 결과 정보를 포함할 수도 있다. 예컨대, 도면번호 630의 예시를 참조하면, 전자 장치는 데이터 모델에 연관되는 기능 별로, 통과한 규칙의 개수 정보 및 위반한 규칙의 개수 정보 중 하나 이상을 제공할 수 있으며, 실시예에 따라서는 이에 기초하여 계산한 가변성 점수 정보(해당 기능에 대해 판단한 규칙 중 위반한 규칙의 비율 정보)를 더 제공할 수도 있다.
일실시예에 따른 전자 장치는 불변성 여부와 관련한 세부 정보를 확인하기 위한 링크를 제공할 수도 있다. 예컨대, 도면번호 630의 예시에서, 위반한 규칙이 존재하는 "mobile.domain.search.dto.AutoCompleteKeywordVO"에 대해서는 클릭 가능한 링크가 제공되고, 해당 링크에 대한 클릭 입력을 수신하면 세부 정보가 제공될 수 있다. 관련하여, 세부 정보는 구체적으로 위반한 규칙이 무엇인지에 대한 정보 및 규칙을 위반한 기능의 코드 정보 중 하나 이상을 포함할 수 있다.
나아가, 일실시예에 따른 전자 장치는 불변성이 없는 기능에 대해 불변성을 확보하기 위하여 코드를 어떻게 수정하여야 할지에 대한 제안 정보를 제공할 수도 있으며, 실시예에 따라서는 전자 장치가 제공하는 세부 정보에 이러한 제안 정보를 포함시켜 제공할 수도 있다.
일실시예에 따르면, 불변성 여부를 확인한 결과를 포함하는 정보는, 설정된 하나 이상의 규칙을 준수하는지 여부를 데이터 모델에 연관되는 기능 별로 판단한 결과와 관련한 통계 정보를 포함할 수도 있다. 예컨대, 도면번호 620의 예시를 참조하면, 전자 장치는 데이터 모델에 연관되는 기능 별로 체크한 규칙의 총 개수 정보("체크한 규칙의 개수: 228"), 위반한 규칙의 개수 정보("위반한 규칙의 개수: 10") 및 체크한 전체 규칙 대비 위반한 규칙의 비율 정보("가변성 점수: 4.385965%") 중 하나 이상을 포함할 수 있다.
그 외에도, 불변성 여부를 확인한 결과를 포함하는 정보는 다양한 유형의 정보를 포함할 수 있고, 도 6의 예시가 불변성 여부를 확인한 결과를 포함하는 정보의 범위를 한정하는 것은 아니다.
도 7은 일실시예에 따른 전자 장치의 구성의 예시도이다.
도 7을 참조하면, 전자 장치는 트랜시버(710), 프로세서(720) 및 메모리(730)를 포함한다. 전자 장치는 트랜시버(710)를 통하여 외부 장치(예를 들어, 퍼스널 컴퓨터) 등과 연결되고, 데이터를 교환할 수 있다.
전자 장치가 서버(110)를 포함하는 경우, 전자 장치는 트랜시버(710)를 통하여 사용자 단말(120)과 연결되고 데이터를 교환할 수 있다. 전자 장치가 사용자 단말(120)을 포함하는 경우, 전자 장치는 트랜시버(710)를 통하여 서버(110)와 연결되고 데이터를 교환할 수 있다.
프로세서(720)는 도 1 내지 도 6을 통하여 전술한 적어도 하나의 장치들을 포함하거나, 도 1 내지 도 6을 통하여 전술한 적어도 하나의 방법을 수행할 수 있다. 메모리(730)는 도 1 내지 도 6을 통하여 전술한 적어도 하나의 방법을 수행하기 위한 정보를 저장할 수 있다. 메모리(730)는 휘발성 메모리 또는 비휘발성 메모리일 수 있다.
프로세서(720)는 프로그램을 실행하고, 정보를 제공하기 위한 전자 장치를 제어할 수 있다. 프로세서(720)에 의하여 실행되는 프로그램의 코드는 메모리(730)에 저장될 수 있다.
또한 실시 예의 전자 장치는 사용자 등에게 정보를 제공할 수 있는 인터페이스를 더 포함할 수 있다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
전술한 실시예들에 따른 전자 장치 또는 단말은, 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-Access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 집적 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler), 파이썬(Python) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
전술한 실시예들은 일 예시일 뿐 후술하는 청구항들의 범위 내에서 다른 실시예들이 구현될 수 있다.

Claims (17)

  1. 전자 장치에서 불변성(immutability)을 검증하는 방법에 있어서,
    스크립트의 정보를 획득하는 단계;
    상기 스크립트에 포함되는 복수의 기능(function) 중 데이터 모델(data model)에 연관되는 기능을 판단하는 단계; 및
    상기 데이터 모델에 연관되는 기능 별로 불변성 여부를 확인하는 단계를 포함하고,
    상기 데이터 모델에 연관되는 기능을 판단하는 단계는
    상기 스크립트에 포함되는 하나 이상의 엔트리 포인트를 확인하는 단계;
    상기 하나 이상의 엔트리 포인트 별로 상기 데이터 모델과의 연관성을 판단하는 단계; 및
    상기 데이터 모델에 연관되는 엔트리 포인트에 의하여 실행되는 기능을 상기 데이터 모델에 연관되는 기능으로 판단하는 단계를 포함하고,
    상기 하나 이상의 엔트리 포인트 별로 상기 데이터 모델과의 연관성을 판단하는 단계는
    상기 하나 이상의 엔트리 포인트가 데이터 레이어 속성의 기능에 대응되는지 여부를 판단하는 단계; 및
    상기 엔트리 포인트에 의하여 실행되는 기능이 상기 데이터 레이어 속성의 기능을 포함하는지 여부를 판단하는 단계
    중 하나 이상을 포함하는, 불변성을 검증하는 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 하나 이상의 엔트리 포인트 별로 상기 데이터 모델과의 연관성을 판단하는 단계는
    상기 데이터 레이어 속성의 기능이 UI 레이어 방향으로의 데이터 이동을 지시하는지 여부를 확인하는 단계를 더 포함하는, 불변성을 검증하는 방법.
  5. 제1항에 있어서,
    상기 하나 이상의 엔트리 포인트가 데이터 레이어 속성의 기능에 대응되는지 여부를 판단하는 단계는
    상기 하나 이상의 엔트리 포인트가 리포지토리(Repository) 기능에 대응되는지 여부를 판단하는 단계를 포함하는 것을 특징으로 하는, 불변성을 검증하는 방법.
  6. 제1항에 있어서,
    모델-뷰-뷰모델(MVVM, Model-View-ViewModel) 패턴이 상기 스크립트에 적용되는 것을 특징으로 하는, 불변성을 검증하는 방법.
  7. 전자 장치에서 불변성을 검증하는 방법에 있어서,
    스크립트의 정보를 획득하는 단계;
    상기 스크립트에 포함되는 복수의 기능 중 데이터 모델에 연관되는 기능을 판단하는 단계; 및
    상기 데이터 모델에 연관되는 기능 별로 불변성 여부를 확인하는 단계를 포함하고,
    상기 불변성 여부를 확인하는 단계는
    상기 데이터 모델에 연관되는 기능 별로 설정된 하나 이상의 규칙을 준수하는지 여부를 판단하는 단계를 포함하는 것을 특징으로 하고,
    상기 설정된 하나 이상의 규칙은,
    퍼블릭 게터(Public getter)이 존재할 것을 규정하는 제1규칙,
    세터(Setter)가 존재하지 않을 것을 규정하는 제2규칙,
    해시코드 메소드(Hashcode method) 및 이퀄스 메소드(Equals method)를 재정의(Override)할 것을 규정하는 제3규칙 및
    인스턴스(instance)의 변경(modification)을 불허할 것을 규정하는 제4규칙
    중 하나 이상을 포함하는 것을 특징으로 하는, 불변성을 검증하는 방법.
  8. 제1항에 있어서,
    상기 불변성 여부를 확인한 결과를 포함하는 정보를 제공하는 단계를 더 포함하는 것을 특징으로 하는, 불변성을 검증하는 방법.
  9. 전자 장치에서 불변성을 검증하는 방법에 있어서,
    스크립트의 정보를 획득하는 단계;
    상기 스크립트에 포함되는 복수의 기능 중 데이터 모델에 연관되는 기능을 판단하는 단계;
    상기 데이터 모델에 연관되는 기능 별로 불변성 여부를 확인하는 단계; 및
    상기 불변성 여부를 확인한 결과를 포함하는 정보를 제공하는 단계를 포함하고,
    상기 불변성 여부를 확인한 결과를 포함하는 정보를 제공하는 단계는
    상기 데이터 모델에 연관되는 기능의 개수 정보,
    상기 데이터 모델에 연관되는 기능 중 불변성이 없다고 판단되는 기능의 개수 정보 및
    상기 데이터 모델에 연관되는 기능 대비 불변성이 없다고 판단되는 기능의 비율 정보
    중 하나 이상을 포함하는 것을 특징으로 하는, 불변성을 검증하는 방법.
  10. 제9항에 있어서,
    상기 불변성 여부를 확인한 결과를 포함하는 정보를 제공하는 단계는
    설정된 하나 이상의 규칙을 준수하는지 여부를 상기 데이터 모델에 연관되는 기능 별로 판단한 결과 정보를 제공하는 단계를 포함하는 것을 특징으로 하는, 불변성을 검증하는 방법.
  11. 제9항에 있어서,
    상기 불변성 여부와 관련한 세부 정보를 확인하기 위한 링크를 제공하는 단계를 더 포함하는 것을 특징으로 하는, 불변성을 검증하는 방법.
  12. 제1항에 있어서,
    상기 전자 장치는 서버 및 사용자 단말 중 하나 이상을 포함하는 것을 특징으로 하는, 불변성을 검증하는 방법.
  13. 전자 장치에서 불변성을 검증하는 방법에 있어서,
    스크립트의 정보를 획득하는 단계;
    상기 스크립트에 포함되는 복수의 기능 중 데이터 모델에 연관되는 기능을 판단하는 단계; 및
    상기 데이터 모델에 연관되는 기능 별로 불변성 여부를 확인하는 단계를 포함하고,
    상기 전자 장치는 서버 및 사용자 단말 중 하나 이상을 포함하고,
    상기 사용자 단말에 의해 상기 데이터 모델에 연관되는 기능을 판단하는 동작 및 상기 불변성 여부를 확인하는 동작 중 하나 이상이 일차적으로 수행되고,
    상기 서버에 의해 상기 데이터 모델에 연관되는 기능을 판단하는 동작 및 상기 불변성 여부를 확인하는 동작 중 하나 이상이 이차적으로 수행되는 것을 특징으로 하는, 불변성을 검증하는 방법.
  14. 제13항에 있어서,
    상기 서버에서 수행되는 동작은, 상기 사용자 단말에 의해 수행되는 동작에 비해 더 높은 검증 정확도를 가지는 것을 특징으로 하는, 불변성을 검증하는 방법.
  15. 제1항에 있어서,
    코드 정보를 획득하는 단계; 및
    상기 코드 정보가 설정된 조건을 만족하면 알림 정보를 제공하는 단계를 더 포함하고,
    상기 설정된 조건은
    상기 데이터 모델에 연관되는 엔트리 포인트에 의하여 상기 데이터 모델에 연관되지 않는 기능이 수행되도록 코드가 작성된 경우 및
    상기 데이터 모델에 연관되지 않는 엔트리 포인트에 의하여 상기 데이터 모델에 연관되는 기능이 수행되도록 코드가 작성된 경우
    중 하나 이상을 포함하는 것을 특징으로 하는, 불변성을 검증하는 방법.
  16. 제1항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비일시적 기록매체.
  17. 불변성을 검증하는 전자 장치에 있어서,
    트랜시버, 명령어를 저장하는 메모리 및 프로세서를 포함하고,
    상기 프로세서는, 상기 트랜시버 및 상기 메모리와 연결되어,
    스크립트의 정보를 획득하고,
    상기 스크립트에 포함되는 복수의 기능 중 데이터 모델에 연관되는 기능을 판단하고,
    상기 데이터 모델에 연관되는 기능 별로 불변성 여부를 확인하고,
    상기 데이터 모델에 연관되는 기능을 판단하기 위하여, 상기 프로세서는,
    상기 스크립트에 포함되는 하나 이상의 엔트리 포인트를 확인하고,
    상기 하나 이상의 엔트리 포인트 별로 상기 데이터 모델과의 연관성을 판단하고,
    상기 데이터 모델에 연관되는 엔트리 포인트에 의하여 실행되는 기능을 상기 데이터 모델에 연관되는 기능으로 판단하고,
    상기 하나 이상의 엔트리 포인트 별로 상기 데이터 모델과의 연관성을 판단하는 동작은,
    상기 하나 이상의 엔트리 포인트가 데이터 레이어 속성의 기능에 대응되는지 여부를 판단하는 동작; 및
    상기 엔트리 포인트에 의하여 실행되는 기능이 상기 데이터 레이어 속성의 기능을 포함하는지 여부를 판단하는 동작
    중 하나 이상을 포함하는, 전자 장치.
KR1020230000612A 2023-01-03 2023-01-03 불변성을 검증하는 전자 장치 및 그 방법 KR102610172B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230000612A KR102610172B1 (ko) 2023-01-03 2023-01-03 불변성을 검증하는 전자 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230000612A KR102610172B1 (ko) 2023-01-03 2023-01-03 불변성을 검증하는 전자 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR102610172B1 true KR102610172B1 (ko) 2023-12-06

Family

ID=89164018

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230000612A KR102610172B1 (ko) 2023-01-03 2023-01-03 불변성을 검증하는 전자 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR102610172B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050037089A (ko) * 2003-10-17 2005-04-21 삼성전자주식회사 모드 정보가 포함된 동영상 데이터가 기록된 저장 매체,재생 장치 및 재생 방법
KR20140122414A (ko) * 2013-04-10 2014-10-20 에스케이플래닛 주식회사 검증 프로세스 관리 시스템 및 방법
KR20220067449A (ko) * 2020-11-17 2022-05-24 오토아이티(주) 보안성 및 신뢰성이 향상된 자동 실행 스크립트 파일의 생성 장치 및 방법과, 이의 실행 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050037089A (ko) * 2003-10-17 2005-04-21 삼성전자주식회사 모드 정보가 포함된 동영상 데이터가 기록된 저장 매체,재생 장치 및 재생 방법
KR20140122414A (ko) * 2013-04-10 2014-10-20 에스케이플래닛 주식회사 검증 프로세스 관리 시스템 및 방법
KR20220067449A (ko) * 2020-11-17 2022-05-24 오토아이티(주) 보안성 및 신뢰성이 향상된 자동 실행 스크립트 파일의 생성 장치 및 방법과, 이의 실행 장치 및 방법

Similar Documents

Publication Publication Date Title
US11544452B2 (en) Generating templates for automated user interface components and validation rules based on context
US8468391B2 (en) Utilizing log event ontology to deliver user role specific solutions for problem determination
US20200218533A1 (en) Code analytics and publication platform
US10909023B2 (en) Function-message oriented test case generation for supporting continuous globalization verification testing
US20100083211A1 (en) Integration of external software analysis processes with software configuration management applications
US10284634B2 (en) Closed-loop infrastructure orchestration templates
US10423517B2 (en) Assertions in a business rule management system
US9582270B2 (en) Effective feature location in large legacy systems
CN105493074A (zh) 用于生成动态定制上下文敏感的帮助的方法
US10169189B2 (en) Functional test automation of mobile applications interacting with native stock applications
US9361086B1 (en) Collating and intelligently sequencing installation documentation
US9442719B2 (en) Regression alerts
US10789563B2 (en) Building confidence of system administrator in productivity tools and incremental expansion of adoption
US10338906B2 (en) Controlling feature release using gates
KR102610172B1 (ko) 불변성을 검증하는 전자 장치 및 그 방법
US9075679B1 (en) Creating a prerequisite checklist corresponding to a software application
US10761837B2 (en) Annotations in software development
US11928627B2 (en) Workflow manager
US11809883B2 (en) Image pattern matching to robotic process automations
EP4030280A1 (en) Seamless lifecycle stability for extensible software features
US9250870B2 (en) Automated creation of shim programs and interfaces
US11954017B2 (en) Dynamic analysis of rest API testing in microservice architecture
US20150220310A1 (en) Object field optimization
US11210083B1 (en) System and method for safe updating of open source libraries
US10055332B2 (en) Variable detection in source code to reduce errors

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant