KR101036702B1 - 프로그램 실행 불안정성의 상태들에 기초하여 소프트웨어프로그램에 대한 커스텀 제품 지원을 제공하기 위한 방법,시스템 및 장치 - Google Patents

프로그램 실행 불안정성의 상태들에 기초하여 소프트웨어프로그램에 대한 커스텀 제품 지원을 제공하기 위한 방법,시스템 및 장치 Download PDF

Info

Publication number
KR101036702B1
KR101036702B1 KR1020050045549A KR20050045549A KR101036702B1 KR 101036702 B1 KR101036702 B1 KR 101036702B1 KR 1020050045549 A KR1020050045549 A KR 1020050045549A KR 20050045549 A KR20050045549 A KR 20050045549A KR 101036702 B1 KR101036702 B1 KR 101036702B1
Authority
KR
South Korea
Prior art keywords
program
software program
execution
instability
stability
Prior art date
Application number
KR1020050045549A
Other languages
English (en)
Other versions
KR20060046276A (ko
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 마이크로소프트 코포레이션
Publication of KR20060046276A publication Critical patent/KR20060046276A/ko
Application granted granted Critical
Publication of KR101036702B1 publication Critical patent/KR101036702B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Abstract

불안정성의 레벨들에 기초하여 컴퓨터 프로그램에 대한 커스텀 제품 지원을 제공하기 위한 방법 및 장치가 제공된다. 소프트웨어 프로그램의 실행은 프로그램의 실행 안정성을 결정하기 위하여 시간의 구간에 걸쳐 모니터링된다. 모니터링, 및 불안정성의 하나 이상의 임계값 레벨에 기초하여, 프로그램의 실행 안정성이 카테고리화된다. 카테고리화에 기초하여, 프로그램을 실행하는 컴퓨터 시스템의 사용자에게 커스텀 프로그램 지원이 제공될 수 있다. 예를 들어, 카테고리화에 기초하여 면제 또는 인하된 요금 제품 지원이 제공될 수 있다.
Figure R1020050045549
커스텀 제품, 카테고리화, 안정성, 임계값

Description

프로그램 실행 불안정성의 상태들에 기초하여 소프트웨어 프로그램에 대한 커스텀 제품 지원을 제공하기 위한 방법, 시스템 및 장치{METHOD, SYSTEM, AND APPARATUS FOR PROVIDING CUSTOM PRODUCT SUPPORT FOR A SOFTWARE PROGRAM BASED UPON STATES OF PROGRAM EXECUTION INSTABILITY}
도 1은 본 발명의 다양한 양상들을 구현하기 위해 이용된 컴퓨터 네트워크의 양상들을 도시하는 네트워크 다이어그램.
도 2는 본 발명의 다양한 실시예들에서 이용되고 제공되는 컴퓨터 시스템을 도시하는 컴퓨터 시스템 아키텍처 다이어그램.
도 3-7은 본 발명의 다양한 실시예들에 의해 제공되고 이용된 프로세스들을 도시하는 플로우 다이어그램.
<도면의 주요부분에 대한 부호의 설명>
302: 어플리케이션이 시작되었는가?
304: 세션 로그에 새로운 엔트리 생성
306: 어플리케이션 시작 시각 기록
308: 정상적 퇴거?
310: 정상적 퇴거 기록
312: 세션 길이 기록
314: 정지 감지?
316: 정지/고장 기록
318: 세션 길이 기록
319: 예외 핸들링
320: 종료
322: 고장 감지?
소프트웨어 개발 주기에서 가장 중요한 단계들 중 하나는 소프트웨어 제품이 고객들에게 수송된 후 발생하는 디버깅 단계이다. 이 단계는 프로그램 에러들을 분리시키고, 빈번히 또는 빈번하지 않게 사용된 특성들을 식별하며, 일반적으로 소프트웨어 제품을 더욱 좋고 안정성있게 하기 위하여, 이 단계 동안 소프트웨어 제품 사용자들의 실제 경험들이 이용될 수 있기 때문에 중요하다.
배포 후의 디버깅(after-release debugging) 단계에서 분석의 주요 초점은 전형적으로 가장 빈번히 발생하는 프로그램 에러("버그(bug)"로도 언급함)들을 식별하는 것이다. 가장 빈번히 발생하는 버그들을 식별하고 수정함으로써, 많은 사용자의 유용성 경험(usability experience)이 개선될 수 있다. 그러나, 이전의 배포 후 디버깅 시스템에 의하여 일반적으로 해결되지 않는 또다른 카테고리의 분석이 있다. 이 카테고리는 어플리케이션 프로그램의 실행 동안 가장 빈번히 문제들 에 부딪히게 되는 컴퓨터 시스템들을 식별하는 것을 수반한다. 이러한 문제들은 모든 사용자 사이에서 가장 빈번히 발생하는 프로그램 에러들을 포함하거나 포함하지 않을 수 있다.
적은 수의 사용자들이 전체 문제들의 총 수 중 높은 비율(percentage)을 경험한다는 것을 통계가 보여준다. 그러한 문제들은 프로그램 고장(program crash), 프로그램 정지(program hang), 갑작스런 프로그램 종료(abrupt program termination) 및 기타 유형의 비정상적인 프로그램 종료를 포함할 수 있다. 이러한 유형의 프로그램들을 나타내는 어플리케이션 프로그램들은 본 발명에서 일반적으로 "불안정(unstable)"하거나 "프로그램 실행 불안정성(program execution instability)"을 가지는 것으로 언급된다. 불안정한 프로그램은 그 프로그램을 사용하는 동안 빈번히 문제들에 부딪히게 되는 컴퓨터 사용자에 대해 특히 실망적일 수 있다.
이전의 배포 후 디버깅 시스템들은 가장 높은 빈도의 프로그램 실행 불안정성을 갖는 컴퓨터 시스템을 식별하는 방식을 제공하지 않고, 따라서 문제들을 경험하는 사용자를 소프트웨어 개발자가 돕기 위한 메커니즘을 제공하지 않는다. 따라서, 높은 빈도의 프로그램 실행 불안정성을 갖는 컴퓨터 시스템들을 식별하고 그러한 컴퓨터 시스템의 사용자에게 커스텀 제품 지원(custom product support)을 제공하기 위한 방법, 시스템 및 장치가 필요하다.
본 발명의 다양한 실시예들이 이러한 고려 및 기타 사항들에 관해 행해진다.
본 발명의 실시예들에 따라, 실행 불안정성의 상태들에 기초하여 컴퓨터 프로그램에 대한 커스텀 제품 지원을 제공하기 위한 방법 및 장치에 의하여 상기 및 기타 문제들이 해결된다. 다양한 레벨들의 프로그램 실행 불안정성을 갖는 컴퓨터 시스템들을 식별함으로써, 가장 높은 빈도의 프로그램 실행 에러들을 갖는 사용자들에게 커스텀 제품 지원이 제공될 수 있다. 커스텀 제품 지원의 제공은 임계값들에 기초하여 프로그램 불안정성의 상태들로 카테고리화(categorize)하는 것에 기초하기 때문에, 변화하는 수의 사용자들에게 커스텀 제품 지원을 제공하기 위하여 임계값들이 조정될 수 있다.
본 발명의 한 양상에 따라서, 프로그램 실행 불안정성의 상태들에 기초하여 소프트웨어 프로그램에 대한 커스텀 제품 지원을 제공하기 위한 방법이 제공된다. 본 방법에 따라, 소프트웨어 프로그램의 실행은 프로그램의 실행 안정성을 결정하기 위하여 시간 구간에 걸쳐 모니터링된다. 모니터링 및 불안정성의 하나 이상의 임계값 레벨에 기초하여, 프로그램의 실행 안정성이 상태(state)로 카테고리화된다. 예를 들어, 프로그램의 안정성은 "좋음", "나쁨" 또는 "매우 나쁨"으로 카테고리화될 수 있다. 카테고리화에 기초하여, 프로그램을 실행하는 컴퓨터 시스템의 사용자에게 커스텀 프로그램 지원이 제공될 수 있다. 예를 들어, 카테고리화에 기초하여 면제 또는 인하된 요금 제품 지원이 제공될 수 있다. 대안적으로, 컴퓨터의 사용자는 상태에 기초하여 결정되는 웹 페이지와 같은 정보 자원에 향해질 수 있다. 마찬가지로, 카테고리화에 기초하여 컴퓨터 시스템 및 어플리케이션 프로그 램의 문제들을 식별하고 수정하기 위하여 진단 프로그램이 실행될 수 있다.
본 방법의 양상들에 따라, 프로그램이 실행될 때마다 로그(log)에 세션 엔트리(session entry)를 생성함으로써 시간 구간에 걸쳐 소프트웨어 프로그램의 실행에 대한 모니터링이 수행될 수 있다. 세션 엔트리는 프로그램, 프로그램이 실행된 시간의 길이를 식별하는 데이터, 및 프로그램이 정상적으로 종료되었는지 비정상적으로 종료되었는지를 나타내는 데이터를 포함한다. 비정상적인 종료는 프로그램 고장, 프로그램 정지(프로그램이 계속 실행되지만, 사용자에게 응답이 없는 상태로 나타남), 또는 임의의 기타 유형의 비정상적인 종료(프로그램이 실행되고 있는 동안 컴퓨터로부터 전력이 제거된 것과 같은 경우)를 포함할 수 있다.
프로그램의 실행 안정성은 로그의 분석에 기초하여 결정될 수 있다. 특히, 프로그램의 실행 안정성을 설명하는 하나 이상의 통계가 생성될 수 있다. 예를 들어, 프로그램 실행의 횟수 당 비정상적인 종료의 횟수가 계산될 수 있다. 유사하게, 프로그램 실행의 분(minutes) 당 비정상적인 종료의 횟수가 계산될 수 있다. 기타 유형의 통계들 또한 생성될 수 있다.
프로그램의 실행 안정성을 상태로 카테고리화하기 위하여, 불안정성의 하나 이상의 임계값 레벨이 이용될 수 있다. 임계값들은 컴퓨터 시스템에 저장될 수 있고, 원격 제어 파일에서 서버 컴퓨터로부터 주기적으로 갱신될 수 있다. 임계값들은 프로그램 실행의 안정성을 카테고리화하기 위하여 이용되어야 하는 값들을 정의한다. 임계값들은 프로그램의 안정성을 프로그램 실행 불안정성에 대한 하나 이상의 상태로 카테고리화하기 위하여 통계에 비교된다. 임계값들은 프로그램의 상이 한 버전들에 대해 원격 제어 파일에서 제공될 수 있다. 원격 제어 파일의 내용들은 임계값들을 변경하기 위하여 주기적으로 수정될 수 있다.
본 발명은 컴퓨터 프로세스, 컴퓨팅 장치 또는 시스템, 또는 컴퓨터 프로그램 제품이나 컴퓨터 판독가능 매체와 같은 제조품의 품목으로서 구현될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 시스템에 의해 판독가능하고 컴퓨터 프로세스를 실행하기 위해 컴퓨터 프로그램 명령어들을 인코딩하는 컴퓨터 저장 매체일 수 있다. 컴퓨터 프로그램 제품은 또한 컴퓨팅 시스템에 의해 판독가능하고 컴퓨터 프로세스를 실행하기 위해 컴퓨터 프로그램 명령어들을 인코딩하는 반송파 상의 전파 신호일 수도 있다.
본 발명의 실시예들의 특징을 나타내는 이점들뿐 아니라 이러한 특성들 및 다양한 기타 특성들은 후술하는 상세 설명의 판독 및 관련 도면들의 검토로부터 명백해질 것이다.
이제 숫자들이 구성요소들을 나타내는 도면들을 참조하여, 본 발명의 다양한 양상들이 설명될 것이다. 특히, 도 1 및 대응하는 논의는 본 발명의 실시예들이 구현될 수 있는 적합한 컴퓨팅 환경의 간략하고 일반적인 설명을 제공하기 위한 것이다. 개인용 컴퓨터상의 운영 시스템에서 동작하는 프로그램 모듈들과 함께 실행하는 프로그램 모듈들의 일반적인 문맥으로 본 발명이 설명될 것이지만, 본 분야에서 숙련된 기술을 가진 자들은 본 발명이 기타 유형들의 컴퓨터 시스템 및 프로그램 모듈과 함께 구현될 수도 있다는 것을 인지할 것이다.
일반적으로, 프로그램 모듈은 루틴, 프로그램, 컴포넌트, 데이터 구조 및 특 정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 기타 유형의 구조들을 포함한다. 게다가, 본 분야에서 숙련된 기술을 가진 자들은 본 발명이 포켓형 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그래밍 가능한 가전기기, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 기타 컴퓨터 시스템 구성에서 실행될 수 있다는 점을 잘 알 것이다. 본 발명은 또한 통신 네트워크를 통하여 연결되는 원격 프로세싱 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 장치 둘 모두에 위치될 수 있다. 이제 몇몇 도면을 통해 숫자들이 구성요소들을 나타내는 도면을 참조하여, 본 발명 및 예시적인 운영 환경의 양상들이 설명될 것이다.
도 1은 본 발명의 다양한 실시예에 대한 예시적인 운영 환경을 도시한다. 도 1에 도시된 바와 같이, 클라이언트 컴퓨터(2)는 본 발명의 다양한 실시예에서 이용된다. 클라이언트 컴퓨터는 하나 이상의 프로그램 모듈을 실행하기 위해 사용될 수 있는 표준 데스크탑 또는 서버 컴퓨터를 포함한다. 클라이언트 컴퓨터(2)는 또한 어플리케이션 프로그램들의 실행을 모니터링하고 프로그램들의 실행 안정성을 결정하기 위한 프로그램 모듈을 갖춘다. 클라이언트 컴퓨터(2)는 또한 하나 이상의 임계값에 기초하여 프로그램들의 안정성을 분류하고 분류에 기초하여 어플리케이션들에 대한 커스텀 제품 지원을 제공하기 위해 동작가능하다.
클라이언트 컴퓨터(2)에서 실행하는 프로그램들의 안정성을 분류하기 위하여, 클라이언트 컴퓨터(2)는 또한 소프트웨어 프로그램의 개발자에 의하여 동작되 는 에러 보고 서버 컴퓨터(10)로부터 원격 제어 파일을 주기적으로 수신하도록 동작가능하다. 에러 보고 서버 컴퓨터(10)는 LAN이나 인터넷(8)을 통해 유지되고 액세스가능한 기존의 서버 컴퓨터를 포함한다. 에러 보고 서버 컴퓨터(10)는 관심있는 어플리케이션 프로그램의 개발자에 의해 동작된다. 원격 제어 파일의 내용 및 사용에 관한 부가적인 세부사항들이 도 2-7에 대해 하기에 제공될 것이다. 제품 지원 서버 컴퓨터(6)는 또한 커스텀 제품 지원을 제공하기 위해 개발자에 의해 동작될 수 있다. 예를 들어, 제품 지원 서버는 사용자가 경험하는 프로그램 불안정성의 레벨에 기초하여 웹 페이지 또는 기타 정보를 제공할 수 있다.
이제 도 2를 참조하여, 본 발명의 다양한 실시예들에서 이용된 클라이언트 컴퓨터(2)에 대한 예시적인 컴퓨터 아키텍처가 설명될 것이다. 도 2에 도시된 컴퓨터 아키텍처는 중앙 프로세싱 유닛(5)("CPU")을 포함하는 기존의 데스크탑 또는 랩탑 컴퓨터, 랜덤 액세스 메모리(9)("RAM") 및 판독-전용 메모리(11)("ROM")를 포함하는 시스템 메모리(7), 및 메모리를 CPU(5)에 연결하는 시스템 버스(12)를 도시한다. 시작할 때 등에 컴퓨터 내의 구성요소들 사이의 정보 전달을 돕는 기본 루틴들을 포함하는 기본 입력/출력 시스템은 ROM(11)에 저장된다. 컴퓨터(2)는 하기에 더욱 상세히 설명될 운영 시스템(16), 어플리케이션 프로그램(18) 및 기타 프로그램 모듈들을 저장하기 위한 대용량 저장 장치(14)를 더 포함한다.
대용량 저장 장치(14)는 버스(12)에 연결된 대용량 저장 제어기(도시되지 않음)를 통해 CPU(5)에 연결된다. 대용량 저장 장치(14) 및 관련 컴퓨터-판독가능 매체는 컴퓨터(2)에 대한 비휘발성 저장장치를 제공한다. 본 발명에 포함된 컴퓨 터-판독가능 매체의 설명은 하드 디스크나 CD-ROM 드라이브와 같은 대용량 저장 장치를 언급하지만, 본 분야에서 숙련된 기술을 가진 자들은 컴퓨터-판독가능 매체가 컴퓨터(2)에 의해 액세스될 수 있는 임의의 가용 매체일 수 있다는 점을 잘 알아야 한다.
제한을 가하지 않는 예로서, 컴퓨터-판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터-판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 기타 고체 상태 메모리 기술, CD-ROM, DVD, 또는 기타 광학 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하기 위해 사용될 수 있고 컴퓨터(2)에 의해 액세스될 수 있는 임의의 기타 매체를 포함하지만, 이들로 제한되지는 않는다.
본 발명의 다양한 실시예들에 따라, 컴퓨터(2)는 인터넷과 같은 네트워크(8)를 통해 원격 컴퓨터들에의 논리적 연결들을 사용하는 네트워크 환경에서 동작할 수 있다. 클라이언트 컴퓨터(2)는 버스(12)에 연결된 네트워크 인터페이스 유닛(20)을 통해 네트워크(8)에 연결할 수 있다. 네트워크 인터페이스 유닛(20)은 또한 기타 유형의 네트워크들 및 원격 컴퓨터 시스템들에 연결하기 위하여 이용될 수 있다는 점을 잘 알아야 한다. 컴퓨터(2)는 또한 키보드, 마우스, 또는 전자 스타일러스(도 1에 도시되지 않음)를 포함하는 많은 기타 장치들로부터의 입력을 수신 하고 프로세싱하기 위한 입력/출력 제어기(22)를 포함할 수 있다. 유사하게, 입력/출력 제어기(22)는 디스플레이 스크린, 프린터, 또는 기타 유형의 출력 장치에 출력을 제공할 수 있다.
상기에 간략히 언급된 바와 같이, 워싱턴주 레드몬드에 위치한 마이크로소프트 코포레이션으로부터의 윈도우즈 XP 운영 시스템과 같은, 네트워크에 연결된 개인용 컴퓨터의 동작을 제어하기에 적합한 운영 시스템(16)을 포함하여 많은 프로그램 모듈 및 데이터 파일들이 컴퓨터(2)의 대용량 저장 장치(14) 및 RAM(9)에 저장될 수 있다. 대용량 저장 장치(14) 및 RAM(9)은 또한 하나 이상의 프로그램 모듈을 저장할 수 있다. 특히, 대용량 저장 장치(14) 및 RAM(9)은 하나 이상의 어플리케이션 프로그램(18)의 실행 안정성을 모니터링하고, 소정 설정가능한 임계값 이상으로 프로그램이 불안정하게 되면 어플리케이션 프로그램(18)에 대한 커스텀 제품 지원을 제공하기 위한 어플리케이션 안정성 모니터 프로그램(24)을 저장할 수 있다. 어플리케이션 안정성 모니터(24)는 클라이언트 컴퓨터(2) 내의 프로그램 실행 예외를 캐치하고 핸들링하기 위해 동작가능한 예외 핸들러(32)의 실행에 응답하여 실행될 수 있다. 어플리케이션 안정성 모니터(24)는 클라이언트 컴퓨터(2)의 사용자에 의해 수동으로도 실행될 수 있다.
어플리케이션 프로그램(18)의 안정성을 모니터링하기 위하여, 어플리케이션 안정성 모니터(24)는 이벤트 서비스(26)의 서비스들을 이용한다. 이벤트 서비스(26)는 클라이언트 컴퓨터(2)에서 발생하는 이벤트들을 이벤트 로그(28)에 로그하기 위하여 운영 시스템(26)에 의해 제공된 설비이다. 예를 들어, 이벤트 서비스 (26)는 보안-관련 이벤트들(예를 들어, 허가되지 않은 로그인 시도), 시스템-관련 이벤트들(예를 들어, 실패를 경험하는 디스크 드라이브), 및 어플리케이션-관련 이벤트들을 로그할 수 있다. 하기에 보다 상세히 설명될 것과 같이, 어플리케이션 프로그램(18)의 실행 및 실패에 관한 이벤트들은 이벤트 로그(28)에 기록된다. 특히, 세션 엔트리는 어플리케이션 프로그램이 실행될 때마다 이벤트 로그(28)에 생성될 수 있다. 세션 엔트리는 프로그램, 프로그램이 실행된 시간의 길이를 식별하는 데이터, 및 프로그램이 정상적으로 종료되었는지 비정상적으로 종료되었는지를 나타내는 데이터를 포함한다. 비정상적인 종료는 프로그램 고장, 프로그램 정지(프로그램이 계속 실행되지만 사용자에게 응답할 수 없는 상태로 나타나는 경우), 또는 임의의 기타 유형의 비정상적인 종료(프로그램이 실행되고 있는 동안 컴퓨터로부터 전력이 제거된 것과 같은 경우)를 포함할 수 있다.
하기에 더욱 상세히 설명될 것과 같이, 이벤트 로그(28)는 주기적으로 분석될 수 있고 어플리케이션 프로그램(18)의 안정성을 설명하는 통계가 생성될 수 있다. 통계는 프로그램 실행의 횟수 당 비정상적인 종료의 횟수, 계산될 수 있는 프로그램 실행의 분 당 비정상적인 종료의 횟수를 정의하는 데이터, 또는 어플리케이션 프로그램(18)의 안정성을 나타내는 기타 유형의 통계를 포함할 수 있다.
통계가 생성되면, 프로그램의 실행 안정성은 통계 및, 원격 제어 파일(36)에 저장된 하나 이상의 임계값에 기초하여 상태들로 카테고리화될 수 있다. 임계값들은 프로그램 불안정성의 다양한 레벨을 정의한다. 예를 들어, 임계값들은 프로그램 모듈의 실행을 "좋음", "나쁨", 또는 "매우 나쁨"으로 카테고리화하도록 정의될 수 있다. 본 발명의 일 실시예에 따라서, "좋음" 임계값은 어떠한 동작도 행해져서는 안 되는, 어플리케이션 프로그램이 충분히 안정적이라는 것을 나타낸다. "나쁨" 임계값은 어플리케이션이 다소 불안정하지만, 사용자에게 면제 또는 인하된 요금 제품 지원의 제공을 보증할 만큼 충분히 불안정하지는 않다는 것을 나타낸다. 사용자는 진단 또는 기타 정보에 향해질 수 있다. "매우 나쁨" 임계값은 어플리케이션 안정성이 매우 나빠서 면제 또는 인하된 요금 제품 지원이 보증된다는 것을 나타낸다. 3개보다 많은 임계값이 정의될 수 있고 이러한 임계값들의 정의는 소프트웨어 제품 및 개발자에 따라 변화할 수 있다. 어플리케이션 프로그램의 성능에 대한 모니터링 및 커스텀 지원의 제공이 어플리케이션 별(application-by-application basis)로 어플리케이션 프로그램의 개발자에 의해 가능해질 수 있다.
원격 제어 파일(36)의 내용은 주기적으로 갱신되며 에러 보고 서버 컴퓨터(10)로부터 클라이언트 컴퓨터(2)에 전송될 수 있다. 원격 제어 파일(36)은 또한 각 임계값에 대하여 그 이후에 임계값들이 이용되어서는 안 되는 시간을 정의하는 만료 날짜를 저장할 수 있다. 원격 제어 파일(36)은 또한 각 임계값에 대한 어플리케이션 버전 번호를 저장할 수 있다. 어플리케이션 버전 번호들은 클라이언트 컴퓨터(2)에 설치되고 사용중일 수 있는 어플리케이션 프로그램의 상이한 버전들에 상이한 임계값들이 할당되도록 허용한다. 원격 제어 파일(36)은 기타 데이터를 저장할 수 있고 부가적인 방식들로 클라이언트 컴퓨터(2)의 동작을 제어하기 위하여 이용될 수 있다는 점을 잘 알아야 한다. 원격 제어 파일의 내용 및 사용에 관한 더 많은 정보는, 본 발명에서 참고로 통합된 제목 "컴퓨터 시스템 내에서 발생하는 이벤트들의 보고를 원격으로 제어하기 위한 방법 및 시스템(Method and System for Remotely Controlling the Reporting of Events Occurring within a Computer System)"인 U.S. 특허 출원 No. 10/304,282에서 발견될 수 있다.
할당된 임계값에 기초하여, 커스텀 프로그램 지원은 어플리케이션 안정성 모니터(24)에 의해 프로그램을 실행하는 컴퓨터 시스템의 사용자에게 제공될 수 있다. 예를 들어, 카테고리화에 기초하여, 사용자는 면제 또는 인하된 요금 제품 지원에 향해질 수 있다. 대안적으로, 컴퓨터의 사용자는 카테고리화에 기초하여 결정되는, 웹 페이지와 같은 정보 자원에 향해질 수 있다. 마찬가지로, 카테고리화에 기초하여 컴퓨터 시스템 및 어플리케이션 프로그램의 문제를 식별하고 수정하기 위하여 진단 프로그램(34)이 실행될 수 있다.
본 발명의 실시예에 따라, 운영 시스템(16)은 레지스트리(30)에 데이터를 저장하기 위하여 동작가능하다. 레지스트리(30)는 하나 이상의 사용자, 어플리케이션 및 하드웨어 장치를 구성하기 위한 필수적인 정보를 저장하기 위해 이용된 중앙 계층적 데이터베이스이다. 예를 들어, 레지스트리(30)는 진단(34)에 의해 클라이언트 컴퓨터상의 소프트웨어 컴포넌트들에 수정이 행해진 마지막 시각을 식별하는 "마지막 수정 시각" 레지스트리 키를 저장하기 위해 동작가능하다. 레지스트리(30)는 현재 사용자의 어플리케이션 안정성 모니터(24)와의 이전 상호작용을 식별하는 "진단 상태" 레지스트리 키를 저장하기 위해 또한 동작가능하다. 진단 상태 레지스트리 키에 대해 가능한 값들은, 사용자가 이전에 어플리케이션 안정성 모니터(24)를 이용한 적이 없는 "신규(new)", 진단(34)이 이전에 실행되었고 클라이언 트 컴퓨터(2)에 변경이 행해진 "변경됨(altered)", 진단(34)이 실행되었고 불안정성을 유발하는 문제가 어플리케이션 프로그램(18)에 외부적(예를 들어, 하드웨어 고장과 같은 경우)이라고 결정된 "동일시됨(identified)", 진단이 실행되었고 사용자가 제품 지원 전문가(product support specialist, PSS)의 형태의 고객 지원에 향해진 "도움(help)"이다. 하기에 더욱 상세히 설명될 것과 같이, 새로 부딪힌 문제가 사용자에 대해 어떻게 핸들링되어야 하는지를 결정하기 위하여 "진단 상태" 레지스트리 키의 값이 이용된다. 이벤트 로그(28)의 생성, 예외 핸들러(32)의 동작 및 어플리케이션 안정성 모니터(24)의 동작에 관한 부가적인 세부사항들이 도 3-7에 관하여 하기에 더욱 상세히 제공될 것이다.
이제 도 3을 참조하여, 이벤트 로그(28)에 레코드를 생성하기 위해 수행되는 프로세스를 도시하는 예시적인 루틴(300)이 설명될 것이다. 본 발명에 제공된 루틴들의 논의를 읽을 때, 본 발명의 다양한 실시예들의 논리적 동작들이 (1) 컴퓨팅 시스템상에서 동작하는 컴퓨터 구현 동작 또는 프로그램 모듈의 시퀀스로서 및/또는 (2) 컴퓨팅 시스템 내에서 상호연결된 기계 로직 회로 또는 회로 모듈로서 구현된다는 점을 잘 알아야 한다. 구현은 본 발명을 구현하는 컴퓨팅 시스템의 성능 요구사항에 따른 선택의 문제이다. 따라서, 도 3-7에 도시되고 여기 설명된 본 발명의 실시예들을 구성하는 논리적 동작들은 동작(operation), 구조적 장치, 행위(act) 또는 모듈로서 다양하게 언급된다. 본 분야에서 숙련된 기술을 가진 자는 이러한 동작, 구조적 장치, 행위 및 모듈이 여기 언급된 특허청구범위 내에 인용된 바와 같은 본 발명의 취지 및 범위로부터 벗어나지 않고서 소프트웨어, 펌웨어, 특 수 목적 디지털 로직 및 이들의 임의의 조합으로 구현될 수 있다는 점을 잘 알 것이다.
루틴(300)은 어플리케이션 프로그램(18) 중 하나가 시작되었는지에 대한 결정이 이벤트 서비스(26)에 의해 행해지는 동작(302)에서 시작한다. 만약 어플리케이션 프로그램이 시작되지 않았다면, 루틴(300)은 또다른 결정이 행해지는 결정 동작(302)에 리턴된다. 만약 어플리케이션 프로그램이 시작되었다면, 루틴(300)은 어플리케이션이 시작된 시각이 메모리에 저장되는 동작(306)으로 진행한다.
동작(306)으로부터, 루틴(300)은 이벤트 서비스(26)가 어플리케이션 프로그램이 사용자 요청에 응답해서와 같이 정상적으로 퇴거(exit)되었는지를 결정하는 동작(308)으로 진행한다. 만약 어플리케이션 프로그램이 정상적으로 퇴거되었다면, 루틴(300)은 어플리케이션이 정상적으로 퇴거되었다는 것을 나타내는 데이터가 메모리에 저장되는 동작(310)으로 분기한다. 그 후 루틴(300)은, 세션 동안 어플리케이션이 실행된 시간의 길이가 메모리에 기록되는 동작(312)으로 진행한다. 그 후 루틴(300)은, 동작(312)으로부터 현재의 어플리케이션 세션에 대한 이벤트 로그(28)에 새로운 엔트리("세션 엔트리")가 생성되는 동작(304)으로 진행한다. 그 후 프로그램의 실행에 관해 메모리에 기록하는 데이터가 세션 엔트리에 저장된다. 이러한 동작들이 예외 핸들러 내에서 수행될 수 있다. 동작(304)으로부터, 루틴(300)은 종료하는 동작(320)으로 진행한다.
만약 동작(308)에서 이벤트 서비스(26)가 어플리케이션 프로그램이 실행을 정상적으로 종료하지 않았다고 결정하면, 루틴(300)은 동작(308)으로부터 동작 (314)으로 진행한다. 결정 동작(314)에서, 어플리케이션 프로그램이 정지되었는지에 대한 결정이 행해진다. 정지된 어플리케이션(hung application)은 실행되는 것으로 나타나지만 사용자 입력에 응답하지 않는 어플리케이션이다. 프로그램이 정지되었는지에 대한 결정은 운영 시스템 또는 또다른 프로그램에 의한 것일 수 있다는 점을 잘 알아야 한다. 어플리케이션이 정지한 것으로 나타나면, 루틴(300)은 동작(314)으로부터 동작(316)으로 분기한다. 만약 어플리케이션이 정지하지 않았으면, 루틴(300)은 동작(314)으로부터 결정 동작(322)으로 진행한다. 결정 동작(322)에서, 어플리케이션 프로그램이 고장인지에 대한 결정이 행해진다. 프로그램 고장은 프로그램이 올바르게 수행하는 데에 대한 실패를 말하며, 프로그램 동작의 중지(suspension)로 귀결된다. 동작(322)에서 고장이 감지되면, 루틴(300)은 동작(316)으로 분기한다. 만약 고장이 감지되지 않으면, 루틴(300)은 종료하는 동작(320)으로 진행한다. 프로그램 고장의 경우에, 운영 시스템은 고장난 어플리케이션 프로그램이 자동으로 셧다운되도록 강요할 수 있다는 점을 잘 알아야 한다. 정지 프로그램의 경우에, 프로그램이 정지되었다는 것을 알리고 프로그램을 재시작하는 것은 사용자에게 달려있다.
동작(316)에서, 고장이나 정지 중 적합한 것으로 세션이 종료되었다는 것을 나타내는 데이터가 메모리에 쓰여진다. 그 후 루틴(300)은 고장이나 정지 전에 어플리케이션이 실행된 길이가 메모리에 기록되는 동작(318)으로 진행한다. 그 후 루틴(300)은 동작(318)으로부터, 운영 시스템에 의해 예외가 핸들링되는 동작(319)으로 진행한다. 예외 핸들러(32)의 동작의 양상들에 관한 세부사항들이 도 5에 관 하여 하기에 제공된다. 그 후 루틴(300)은 현재의 어플리케이션 세션에 대한 이벤트 로그(28)에서 새로운 엔트리가 생성되는 동작(304)으로 진행한다. 그 후 프로그램의 실행에 관하여 메모리에 기록하는 데이터가 세션 엔트리에 저장된다. 동작(319)으로부터, 루틴(300)은 종료하는 동작(320)으로 진행한다.
이제 도 4를 참조하여, 이벤트 로그에서 세션 엔트리를 완료하기 위한 루틴(400)에 대한 세부사항들이 제공된다. 본 발명의 실시예들에 따라, 루틴(400)은 완료될 수 없었던 이벤트 로그(28)에서의 세션 엔트리들을 완료하기 위하여 시작 시에 클라이언트 컴퓨터(2)상에서 실행된다. 완료되지 않은 세션 엔트리들은, 예를 들어, 어플리케이션이 실행되고 있는 동안 컴퓨터(2)로부터 전력이 제거되는 경우, 고장이 운영 시스템(16)에의 고장으로 귀결되는 경우, 또는 종료의 유형 및 세션 길이가 이벤트 로그(28)에 쓰여질 수 없는 임의의 기타 상황 하에서 발생할 수 있다.
루틴(400)은 이전의 세션 엔트리가 완료되었는지에 대한 결정이 행해지는 동작(402)에서 시작한다. 만약 세션 엔트리가 완료되었다면, 세션 엔트리에 대해 임의의 프로세싱을 더 수행할 필요가 없다. 따라서, 세션 엔트리가 완료된 경우 루틴(400)은 동작(402)으로부터 종료하는 동작(412)으로 분기한다. 세션 엔트리가 완료되지 않았다면, 루틴(400)은 어플리케이션 프로그램이 비정상적으로 종료되었다는 지시가 세션 엔트리에 행해지는 동작(406)으로 진행한다. 그 후 루틴(400)은 종료하는 동작(412)으로 진행한다.
이제 도 5를 참조하여, 예외 핸들러(32)의 동작에 관한 부가적인 세부사항들 이 설명될 것이다. 상기에 간략히 논의된 바와 같이, 예외 핸들러(32)는 어플리케이션 프로그램의 비정상적인 종료에 이어 호출된다. 예외 핸들러(32)는 예외를 캐치하고 핸들링하기 위하여 도 5에 도시된 것들보다 더 많은 함수들을 수행한다. 어플리케이션 안정성 모니터(24)의 동작에 대한 논의에 관련하여 예외 핸들러에 의해 수행된 함수들만이 도 5에 도시되고 설명된다.
루틴(500)은 클라이언트 컴퓨터(2)에서 구현된 정책에 대한 결정이 행해지거나, 또는 사용자가 보고(reporting) 때문에 귀찮게 되기를 원하지 않는다는 것을 나타내는 레지스트리 엔트리가 어플리케이션 안정성 모니터(24)의 실행을 방지하는 동작(502)에서 시작한다. 만약 그렇다면, 루틴(500)은 종료하는 동작(512)으로 분기한다. 만약 그렇지 않다면, 루틴(500)은 사용자 인터페이스("UI") 훼방 기관(pester throttle)이 어플리케이션 안정성 모니터(24)가 실행되지 못 하도록 하는지에 대한 결정이 행해지는 동작(504)으로 진행한다. UI 훼방 기관은 사용자가 어플리케이션 성능 모니터링에 관련된 UI 때문에 너무 빈번히 귀찮아지는 것을 방지한다. 만약 UI 훼방 기관이 어플리케이션 안정성 모니터(24)의 실행을 방해한다면, 루틴(500)은 종료하는 동작(512)으로 분기한다. 그렇지 않으면, 루틴(500)은 감사 훼방 기관(audit pester throttle)이 어플리케이션 안정성 모니터(24)의 실행을 방해하는지에 대한 결정이 행해지는 동작(506)으로 진행한다. 감사 훼방 기관은 어플리케이션 안정성 모니터(24)가 너무 빈번히 실행되어 클라이언트 컴퓨터(2)의 성능에 영향을 주는 것을 방지한다. 만약 감사 훼방 기관이 어플리케이션 안정성 모니터(24)의 실행을 방해한다면, 루틴(500)은 종료하는 동작(512)으로 분기한 다. 그렇지 않으면 루틴(500)은 동작(506)으로부터 동작(508)으로 진행한다. UI 훼방 기관 및 감사 훼방 기관의 동작에 관한 부가적인 세부사항들은 제목이 "이벤트 보고의 큐 모드 전송(Queued Mode Transmission of Event Reports)"이고 본 발명에 참고로 명백히 포함되는 공동 계류중인 미국 특허 출원 일련 번호 10/305,215에서 발견될 수 있다.
이제 도 6을 참조하여, 어플리케이션 안정성 모니터(24)의 동작에 관한 부가적인 세부사항들이 제공될 것이다. 특히, 루틴(600)은 어플리케이션 안정성 모니터(24) 실행에 대해 설명될 것이다. 루틴(600)은 이벤트 로그(28)의 분석이 수행되는 동작(602)에서 시작한다. 어플리케이션 프로그램의 안정성을 안정성의 상태로 카테고리화하기 위하여 이벤트 로그(28)가 분석된다. 상기에 논의된 바와 같이, 본 발명의 일 실시예에 따라, 안정성은 "좋음", "나쁨", 또는 "매우 나쁨"으로 카테고리화될 수 있다. 이벤트 로그 분석을 수행하기 위한 예시적인 루틴(700)이 도 7에 관하여 하기에 설명된다.
동작(602)으로부터, 루틴(600)은 어플리케이션 프로그램의 안정성이 이벤트 로그 분석에 의해 "좋음"으로 카테고리화되었는지에 대한 결정이 행해지는 동작(604)으로 진행한다. 만약 어플리케이션 프로그램의 안정성이 "좋음"이라면, 루틴(600)은 어플리케이션 안정성 모니터(24)가 사용자에 의해 수동으로 시작되었는지에 대한 결정이 행해지는 동작(606)으로 분기한다. 만약 어플리케이션 안정성 모니터(24)가 수동으로 시작되지 않았다면, 루틴(600)은 종료하는 동작(620)으로 분기한다. 만약 어플리케이션 안정성 모니터(24)가 수동으로 시작되었다면, 루틴 (600)은 동작(606)으로부터 동작(608)으로 진행한다. 사용자가 프로그램의 안정성이 "좋음"인 경우조차 수동으로 프로그램을 시작하는 경우, 이것은 사용자가 어플리케이션 안정성 모니터(24)와 상호작용하도록 허용한다.
만약, 동작(604)에서, 어플리케이션 프로그램의 안정성이 이벤트 로그 분석에 의해 "나쁨" 또는 "매우 나쁨"으로 카테고리화되었다고 결정되면, 루틴(600)은 동작(604)으로부터 동작(608)으로 진행한다. 동작(608)에서, 루틴(600)은 상기에 설명된 진단 상태 레지스트리 키의 현재 값에 의해 정의된 바와 같이, 어플리케이션 안정성 모니터와의 사용자 사전검토 상호작용에 기초하여 동작(610, 612, 614 또는 618) 중 하나로 분기한다. 만약 진단 상태 레지스트리 키의 값이 "신규"라면, 루틴(600)은 동작(610)으로 분기한다. 이것은 사용자가 이전에 어플리케이션 안정성 모니터(24)를 이용한 적이 없다는 것을 의미한다. 따라서, 진단(34)을 실행하기 위하여 사용자에게 다이얼로그 박스가 제공될 수 있다. 진단의 결과에 따라, 진단 상태 레지스트리 키의 값이 "도움", "변경됨" 또는 "동일시됨"으로 설정될 수 있다.
만약 진단 상태 레지스트리 키의 값이 "변경된 진단(diagnostics altered)"이라면, 루틴(600)은 동작(608)로부터 동작(612)으로 분기한다. 이것은 진단이 이전에 실행되었고, 안정성을 개선하기 위한 시도로 어플리케이션 프로그램의 구성에 변경이 행해졌다는 것을 나타낸다. 이 때, 사용자는 제품에 대한 면제 또는 인하된 요금 제품 지원에 향해질 수 있다. 선택된 코스(course)에 따라, 진단 상태 레지스트리 키의 값이 "도움", "변경됨" 또는 "동일시됨"으로 설정될 수 있다.
만약 진단 상태 레지스트리 키의 값이 "외부적 진단"이라면, 루틴(600)은 동작(614)으로 분기한다. 이것은 진단(34)이 이전에 수행되었고 어플리케이션 프로그램 이외의 문제가 감지되었다는 것을 나타낸다. 이러한 경우에, 사용자는 어떠한 사용자 인터페이스 통지로 인해서도 귀찮아지지 않는다.
만약 진단 상태 레지스트리 키의 값이 "도움"이라면, 루틴(600)은 동작(618)으로 분기한다. 이것은 사용자가 이전에 인하된 요금 또는 면제 제품 지원에 대한 정보를 제공받은 적이 있다는 것을 나타낸다. 사용자는 다시 이러한 정보를 제공받을 수 있다. 예를 들어, 사용자는 제품 지원이 획득될 수 있는 제품 지원 웹 사이트에 향해질 수 있다. 동작들(610, 612, 614 및 618)로부터, 루틴(600)은 종료하는 동작(620)으로 진행한다.
이제 도 7을 참조하여, 이벤트 로그(28)를 분석하기 위한 루틴(700)이 설명될 것이다. 루틴(700)은 어떤 임계값 버전을 이용할 것인지에 대한 결정이 행해지는 동작(702)에서 시작한다. 상기에 논의된 바와 같이, 임계값들은 클라이언트 컴퓨터(2)상에서 어플리케이션 프로그램의 버전에 대응하는 버전 번호를 할당받을 수 있다. 이것은 동일한 어플리케이션 프로그램의 상이한 버전들에 상이한 임계값들이 할당되도록 허용한다. 사용할 임계값 버전은 분석이 수행될 어플리케이션 프로그램의 버전에 기초하여 결정된다.
어플리케이션 프로그램의 버전 번호가 식별되면, 루틴(700)은 어플리케이션 프로그램의 버전에 대한 원격 제어 파일(36)에 임계값들이 존재하는지에 대한 결정이 행해지는 동작(704)으로 진행한다. 만약 그 버전에 대한 임계값들이 존재하지 않는다면, 루틴(700)은 "좋음"의 임계값이 리턴되는 동작(722)으로 분기한다. 그러나, 만약 적절한 임계값들이 존재하면, 루틴(700)은 동작(706)으로 진행한다.
동작(706)에서, 세션 분석에서 이용되어야 하는 이벤트 로그에 있는 엔트리들의 적절한 시간 구간이 결정된다. 시간 구간은 현재 시각과 어플리케이션 프로그램에 수정이 적용되었던 마지막 시각 사이의 시간의 구간을 포함할 수 있다. 대안적으로, 만약 어떠한 수정도 행해지지 않았다면, 시간 구간은 현재 시각과 바람직한 시간 윈도우(예를 들어, 30일) 사이의 시간 구간을 포함할 수 있다. 이러한 식으로, 분석에서 고려되는 로그 엔트리들의 영역이 제한될 수 있다.
동작(706)으로부터, 계산된 시간 구간 동안 통계적으로 중요한 최소 수의 세션들이 이벤트 로그(28)에 존재하는지에 대한 결정이 행해지는 동작(708)으로 진행한다. 만약 필수적인 최소 수의 세션들이 존재하지 않는 경우, 루틴(700)은 임계값 "좋음"이 리턴되는 동작(722)으로 분기한다. 만약 필수적인 최소 수의 세션들이 존재하는 경우, 루틴(700)은 동작(708)으로부터 동작(710)으로 진행한다.
동작(710)에서, 시간 구간 동안의, 어플리케이션 프로그램들의 안정성을 설명하는 특정 어플리케이션 프로그램에 대한 이벤트 로그(28)의 내용에 기초하여 많은 통계가 생성된다. 예를 들어, 프로그램 실행 횟수 당 프로그램의 비정상적 종료의 횟수에 기초한 통계가 생성될 수 있다. 생성될 수 있는 또다른 통계는 프로그램 실행의 분 당 비정상적 종료의 횟수에 기초한다. 어플리케이션 프로그램의 안정성을 나타내는 기타 유형의 통계들 또한 시간 구간 동안의 이벤트 로그(28)의 내용에 기초하여 생성될 수 있다. 개개의 어플리케이션에 대한 특정 통계가 생성 될 수 있고, 어플리케이션 제품군과 같은 어플리케이션들의 그룹에 대해 기타 통계들이 생성될 수 있다는 점을 잘 알아야 한다.
통계들이 생성되면, 통계들은 원격 제어 파일(36)에 포함된 임계값들에 비교된다. 비교에 기초하여, 어플리케이션 프로그램의 안정성은 "좋음", "나쁨", 또는 "매우 나쁨"으로 카테고리화될 수 있다. 어플리케이션 프로그램의 안정성이 카테고리화되면, 루틴(700)은 프로그램의 안정성이 "매우 나쁨"으로 카테고리화되었는지에 대한 결정이 행해지는 동작(712)으로 진행한다. 안정성이 "매우 나쁨"으로 카테고리화되지 않았다면, 루틴(700)은 안정성이 "나쁨"으로 카테고리화되었는지에 대한 결정이 행해지는 동작(714)으로 분기한다. 만약 안정성이 "나쁨"으로 카테고리화되었다면, 루틴(700)은 "나쁨" 임계값이 리턴되는 동작(720)으로 진행한다. 만약 안정성이 "나쁨"으로 카테고리화되지 않았다면, 루틴은 "좋음"이 리턴되는 동작(722)으로 분기한다.
동작(712)에서, 임계값이 "매우 나쁨"으로 카테고리화되었다고 결정되면, 루틴(700)은 동작(716)으로 진행한다. 동작(716)에서, 임계값들이 만료되었는지에 대한 결정이 행해진다. 상기에 간략히 논의된 바와 같이, 임계값들은 만료 날짜를 포함할 수 있다. 만약 임계값들이 만료되었다면, 루틴(700)은 "나쁨"이 리턴되는 동작(720)으로 분기한다. 그렇지 않으면, 루틴(700)은 "매우 나쁨"이 리턴되는 동작(718)으로 진행한다.
전술한 것에 기초하여, 본 발명의 다양한 실시예들은 실행 불안정성의 레벨들에 기초하여 컴퓨터 프로그램에 대한 커스텀 제품 지원을 제공하기 위한 방법, 시스템, 장치, 및 컴퓨터 판독가능 매체를 포함한다. 상기의 상세설명, 예 및 데이터는 본 발명의 구성의 제조 및 사용의 완전한 설명을 제공한다. 본 발명의 많은 실시예들이 본 발명의 취지 및 범위를 벗어나지 않고서 행해질 수 있기 때문에, 본 발명은 이후 첨부되는 특허청구범위에 귀속한다.
높은 빈도의 프로그램 실행 불안정성을 갖는 컴퓨터 시스템들을 식별하고 그러한 컴퓨터 시스템의 사용자에게 커스텀 제품 지원을 제공할 수 있다.

Claims (26)

  1. 프로그램 실행 불안정성의 상태들에 기초하여 소프트웨어 프로그램에 대한 커스텀 제품 지원(custom product support)을 제공하기 위한 방법으로서,
    프로그램 실행 불안정성의 적어도 하나의 임계값 레벨 및 상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨과 연관된 적어도 하나의 만료 날짜를 포함하는 원격 제어 파일을 수신하는 단계;
    메모리 저장소에 결합되는 프로세서를 포함하는 컴퓨팅 시스템에 의해, 상기 소프트웨어 프로그램의 실행 안정성을 결정하기 위해 일정한 시간 구간(a period of time)에 걸쳐 상기 소프트웨어 프로그램의 실행을 모니터링하되,
    상기 소프트웨어 프로그램이 실행될 때마다 로그에 세션 엔트리를 생성하고 - 상기 세션 엔트리는 상기 소프트웨어 프로그램 및 상기 소프트웨어 프로그램이 실행된 시간의 길이를 식별하는 데이터를 포함함 - ,
    상기 세션 엔트리에 따라 상기 소프트웨어 프로그램의 상기 실행 안정성을 설명하는 적어도 하나의 통계를 생성하기 위해 상기 로그를 주기적으로 분석하고,
    상기 소프트웨어 프로그램의 상기 실행이, 정상적으로 종료되었는지 비정상적으로 종료되었는지를 식별함 - 상기 비정상적으로 종료된다는 것은 프로그램 고장(program crash), 프로그램 정지(program hang) 및 비정상적 프로그램 종료 중의 적어도 하나를 포함함 -
    에 의해 모니터링하는 단계;
    상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨과 연관된 상기 적어도 하나의 만료 날짜가 경과하지 않았는지 여부를 결정하는 단계;
    상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨과 연관된 상기 적어도 하나의 만료 날짜가 경과하지 않았는지 여부를 결정하는 것에 대한 응답으로, 상기 컴퓨팅 시스템에 의해, 상기 적어도 하나의 통계를 대응하는 임계값과 비교함으로써 상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨에 기초하여 상기 소프트웨어 프로그램의 상기 실행 안정성을 카테고리화하여, 상기 소프트웨어 프로그램의 상기 실행 안정성을 프로그램 실행 불안정성의 복수의 상태 중 하나로 카테고리화하는 단계;
    상기 컴퓨팅 시스템에 의해, 상기 소프트웨어 프로그램의 이전에 설정된 진단 상태를 식별하는 단계; 및
    상기 카테고리화 및 상기 소프트웨어 프로그램의 상기 이전에 설정된 진단 상태에 기초하여 상기 소프트웨어 프로그램에 대한 커스텀 제품 지원을 제공하는 단계
    를 포함하는 커스텀 제품 지원 제공 방법.
  2. 제1항에 있어서, 상기 소프트웨어 프로그램의 상기 실행 안정성을 설명하는 적어도 하나의 통계를 생성하기 위해 상기 로그를 분석하는 단계는, 프로그램 실행의 횟수 당 비정상적 종료의 횟수를 포함하는 상기 적어도 하나의 통계를 생성하는 단계를 포함하는, 커스텀 제품 지원 제공 방법.
  3. 제2항에 있어서, 상기 소프트웨어 프로그램의 상기 실행 안정성을 설명하는 적어도 하나의 통계를 생성하기 위해 상기 로그를 분석하는 단계는, 프로그램 실행의 분(minute) 당 비정상적 종료의 횟수를 포함하는 상기 적어도 하나의 통계를 생성하는 단계를 더 포함하는, 커스텀 제품 지원 제공 방법.
  4. 제1항에 있어서, 상기 원격 제어 파일을 수신하는 단계는, 상기 소프트웨어 프로그램의 적어도 하나의 버전에 대하여 프로그램 실행 불안정성의 상기 적어도 하나의 임계값 레벨을 식별하는 데이터를 포함하는 상기 원격 제어 파일을 수신하는 단계를 포함하며,
    상기 방법은,
    상기 소프트웨어 프로그램의 상기 실행 안정성을 카테고리화하기에 앞서, 상기 원격 제어 파일이 상기 소프트웨어 프로그램의 상기 적어도 하나의 버전에 대한 임계값들을 포함하는지 여부를 결정하는 단계를 더 포함하는 커스텀 제품 지원 제공 방법.
  5. 제4항에 있어서, 상기 소프트웨어 프로그램에 대한 커스텀 제품 지원을 제공하는 단계는, 상기 카테고리화에 기초하여 상기 소프트웨어 프로그램의 사용자를 상기 소프트웨어 프로그램에 대한 면제 또는 인하된 요금의 제품 지원을 갖는 정보 자원에 향하게 하는 단계를 포함하는, 커스텀 제품 지원 제공 방법.
  6. 제4항에 있어서, 상기 소프트웨어 프로그램에 대한 커스텀 제품 지원을 제공하는 단계는, 상기 카테고리화에 기초하여 상기 소프트웨어 프로그램의 사용자를 식별된 정보 자원에 향하게 하는 단계를 포함하는, 커스텀 제품 지원 제공 방법.
  7. 제4항에 있어서, 상기 소프트웨어 프로그램에 대한 커스텀 제품 지원을 제공하는 단계는, 상기 카테고리화에 기초하여 진단 프로그램을 실행하는 단계를 포함하는, 커스텀 제품 지원 제공 방법.
  8. 프로그램 실행 불안정성의 임계값 레벨들에 기초하여 소프트웨어 프로그램에 대한 커스텀 제품 지원을 제공하기 위한 시스템으로서, 클라이언트 컴퓨터를 포함하고, 상기 클라이언트 컴퓨터는,
    상기 소프트웨어 프로그램의 적어도 하나의 버전에 대하여 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨 및 상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨과 연관된 적어도 하나의 만료 날짜를 식별하는 데이터를 포함하는 원격 제어 파일을 서버 컴퓨터로부터 수신하고,
    상기 소프트웨어 프로그램의 실행 안정성을 결정하기 위해 일정한 시간 구간에 걸쳐 상기 소프트웨어 프로그램의 실행을 모니터링하되,
    상기 소프트웨어 프로그램이 실행될 때마다 상기 클라이언트 컴퓨터에 저장된 로그에 세션 엔트리를 생성하고 - 상기 세션 엔트리는 상기 소프트웨어 프로그램 및 상기 소프트웨어 프로그램이 실행된 시간의 길이를 식별하는 데이터를 포함함 - ,
    상기 클라이언트 컴퓨터에서 상기 세션 엔트리에 따라 상기 소프트웨어 프로그램의 상기 실행 안정성을 설명하는 적어도 하나의 통계를 생성하기 위해 상기 로그를 주기적으로 분석하며,
    상기 소프트웨어 프로그램의 상기 실행이, 정상적으로 종료되었는지 비정상적으로 종료되었는지를 식별함 - 상기 비정상적으로 종료된다는 것은 프로그램 고장, 프로그램 정지 및 비정상적 프로그램 종료 중의 적어도 하나를 포함함 -
    에 의해 모니터링하고,
    상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨과 연관된 상기 적어도 하나의 만료 날짜가 경과하지 않았는지 여부를 결정하며,
    상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨과 연관된 상기 적어도 하나의 만료 날짜가 경과하지 않았는지 여부를 결정하는 것에 대한 응답으로, 상기 적어도 하나의 통계를 대응하는 임계값과 비교함으로써 상기 원격 제어 파일에 포함된 상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨에 기초하여 상기 소프트웨어 프로그램의 상기 실행 안정성을 카테고리화하여, 상기 소프트웨어 프로그램의 상기 실행 안정성을 프로그램 실행 불안정성의 복수의 상태 중 하나로 카테고리화하고,
    상기 소프트웨어 프로그램의 이전에 설정된 진단 상태를 식별하며,
    상기 카테고리화 및 상기 소프트웨어 프로그램의 상기 이전에 설정된 진단 상태에 기초하여 상기 소프트웨어 프로그램에 대한 커스텀 제품 지원을 제공하도록 동작하는, 시스템.
  9. 제8항에 있어서, 상기 적어도 하나의 통계는 프로그램 실행의 횟수 당 비정상적 종료의 횟수를 포함하는, 시스템.
  10. 제9항에 있어서, 상기 적어도 하나의 통계는 프로그램 실행의 분 당 비정상적 종료의 횟수를 더 포함하는, 시스템.
  11. 제10항에 있어서, 상기 소프트웨어 프로그램에 대한 커스텀 제품 지원을 제공하도록 동작하는 상기 클라이언트 컴퓨터는, 사용자를 상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨에 따라 면제 또는 인하된 요금 제품 지원을 제공하는 정보 자원에 향하게 하도록 동작하는 클라이언트 컴퓨터를 포함하는, 시스템.
  12. 제10항에 있어서, 상기 소프트웨어 프로그램에 대한 커스텀 제품 지원을 제공하도록 동작하는 상기 클라이언트 컴퓨터는, 상기 클라이언트 컴퓨터의 사용자를 상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨에 기초하여 결정되는 정보 자원에 향하게 하도록 동작하는 클라이언트 컴퓨터를 포함하는, 시스템.
  13. 제10항에 있어서, 상기 소프트웨어 프로그램에 대한 커스텀 제품 지원을 제공하도록 동작하는 상기 클라이언트 컴퓨터는, 상기 소프트웨어 프로그램의 문제점들을 진단하기 위해 상기 클라이언트 컴퓨터 상의 진단 프로그램을 실행하도록 동작하는 클라이언트 컴퓨터를 포함하는, 시스템.
  14. 컴퓨터 실행가능 명령어가 저장된 컴퓨터 판독가능 기록 매체로서, 상기 컴퓨터 실행가능 명령어는 컴퓨터에 의해 실행되는 경우 상기 컴퓨터로 하여금,
    프로그램 실행 불안정성의 적어도 하나의 임계값 레벨 및 상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨과 연관된 적어도 하나의 만료 날짜를 포함하는 원격 제어 파일을 수신하고,
    소프트웨어 프로그램의 실행 안정성을 결정하기 위해 일정한 시간 구간에 걸쳐 상기 소프트웨어 프로그램의 실행을 모니터링하되,
    상기 소프트웨어 프로그램이 실행될 때마다 로그에 세션 엔트리를 생성하고 - 상기 세션 엔트리는 상기 소프트웨어 프로그램 및 상기 소프트웨어 프로그램이 실행된 시간의 길이를 식별하는 데이터를 포함함 - ,
    상기 세션 엔트리에 따라 상기 소프트웨어 프로그램의 상기 실행 안정성을 설명하는 적어도 하나의 통계를 생성하기 위해 상기 로그를 주기적으로 분석하며,
    상기 소프트웨어 프로그램의 상기 실행이, 정상적으로 종료되었는지 비정상적으로 종료되었는지를 식별함 - 상기 비정상적으로 종료된다는 것은 프로그램 고장, 프로그램 정지 및 비정상적 프로그램 종료 중의 적어도 하나를 포함함 -
    에 의해 모니터링하고,
    상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨과 연관된 상기 적어도 하나의 만료 날짜가 경과하지 않았는지 여부를 결정하며,
    상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨과 연관된 상기 적어도 하나의 만료 날짜가 경과하지 않았는지 여부를 결정하는 것에 대한 응답으로, 상기 적어도 하나의 통계를 대응하는 임계값과 비교함으로써 상기 프로그램 실행 불안정성의 적어도 하나의 임계값 레벨에 기초하여 상기 소프트웨어 프로그램의 상기 실행 안정성을 카테고리화하여, 상기 소프트웨어 프로그램의 상기 실행 안정성을 프로그램 실행 불안정성의 복수의 상태 중 하나로 카테고리화하고,
    상기 소프트웨어 프로그램의 이전에 설정된 진단 상태를 식별하며,
    상기 카테고리화 및 상기 소프트웨어 프로그램의 상기 이전에 설정된 진단 상태에 기초하여 상기 소프트웨어 프로그램에 대한 커스텀 제품 지원을 제공하도록 하는, 컴퓨터 판독가능 기록 매체.
  15. 제14항에 있어서, 상기 적어도 하나의 통계는 프로그램 실행의 횟수 당 비정상적 종료의 횟수를 포함하는, 컴퓨터 판독가능 기록 매체.
  16. 제14항에 있어서, 상기 적어도 하나의 통계는 프로그램 실행의 분 당 비정상적 종료의 횟수를 더 포함하는, 컴퓨터 판독가능 기록 매체.
  17. 제14항에 있어서, 상기 컴퓨터 실행가능 명령어는 상기 소프트웨어 프로그램의 문제점들을 진단하기 위해 상기 컴퓨터 상의 진단 프로그램을 실행하도록 하는 명령어를 더 포함하는, 컴퓨터 판독가능 기록 매체.
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
KR1020050045549A 2004-09-30 2005-05-30 프로그램 실행 불안정성의 상태들에 기초하여 소프트웨어프로그램에 대한 커스텀 제품 지원을 제공하기 위한 방법,시스템 및 장치 KR101036702B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/955,421 US7681181B2 (en) 2004-09-30 2004-09-30 Method, system, and apparatus for providing custom product support for a software program based upon states of program execution instability
US10/955,421 2004-09-30

Publications (2)

Publication Number Publication Date
KR20060046276A KR20060046276A (ko) 2006-05-17
KR101036702B1 true KR101036702B1 (ko) 2011-05-24

Family

ID=35759407

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050045549A KR101036702B1 (ko) 2004-09-30 2005-05-30 프로그램 실행 불안정성의 상태들에 기초하여 소프트웨어프로그램에 대한 커스텀 제품 지원을 제공하기 위한 방법,시스템 및 장치

Country Status (5)

Country Link
US (1) US7681181B2 (ko)
EP (1) EP1650662B1 (ko)
JP (1) JP5341295B2 (ko)
KR (1) KR101036702B1 (ko)
CN (1) CN1755644B (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409596B2 (en) * 2004-09-02 2008-08-05 International Business Machines Corporation Apparatus and method for initializing diagnostic functions when specified run-time error criteria are satisfied
US8548955B1 (en) 2004-11-30 2013-10-01 Centurylink Intellectual Property Llc System and method for automating disaster recovery of a mainframe computing system
US8255747B1 (en) * 2004-11-30 2012-08-28 Centurylink Intellectual Property Llc System and method for providing resolutions for abnormally ended jobs on a mainframe computer system
US7478095B2 (en) * 2005-01-19 2009-01-13 Microsoft Corporation Generation and retrieval of incident reports
US7958512B2 (en) * 2005-10-31 2011-06-07 Microsoft Corporation Instrumentation to find the thread or process responsible for an application failure
KR100837334B1 (ko) * 2006-11-29 2008-06-12 엔에이치엔(주) 검색로그의 악용을 방지하는 방법 및 그 장치
JP2008197988A (ja) * 2007-02-14 2008-08-28 Win The Web:Kk アプリケーション分析支援システム、プログラム
US7921381B2 (en) * 2007-04-26 2011-04-05 Verigy (Singapore) Pte. Ltd. Method and apparatus for displaying test data
US8209675B2 (en) * 2007-07-25 2012-06-26 Sap Ag Method and system for customizing a software application
US20090271663A1 (en) * 2008-04-24 2009-10-29 Vining Robert G Providing detailed program state information for error analysis
CN101510167B (zh) * 2009-03-31 2016-04-20 阿里巴巴集团控股有限公司 一种插件运行的方法、装置及系统
US8171345B2 (en) * 2009-04-15 2012-05-01 Vmware, Inc. Disablement of an exception generating operation of a client system
US8239709B2 (en) * 2009-08-12 2012-08-07 Apple Inc. Managing extrinsic processes
JP5272047B2 (ja) * 2010-12-22 2013-08-28 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理システム
US20130081001A1 (en) * 2011-09-23 2013-03-28 Microsoft Corporation Immediate delay tracker tool
US20130254747A1 (en) * 2012-03-21 2013-09-26 International Business Machines Corporation Method and apparatus for testing programs
US8990763B2 (en) * 2012-03-23 2015-03-24 Tata Consultancy Services Limited User experience maturity level assessment
CN102681874B (zh) * 2012-05-14 2015-10-21 腾讯科技(深圳)有限公司 一种确保软件正常运行的方法及装置
CN103973746A (zh) * 2013-02-04 2014-08-06 鸿富锦精密工业(深圳)有限公司 远程控制管理系统及方法
US9021444B2 (en) * 2013-08-19 2015-04-28 Concurix Corporation Combined performance tracer and snapshot debugging system
US9465721B2 (en) 2013-08-19 2016-10-11 Microsoft Technology Licensing, Llc Snapshotting executing code with a modifiable snapshot definition
US20150052400A1 (en) 2013-08-19 2015-02-19 Concurix Corporation Breakpoint Setting Through a Debugger User Interface
CN103699472B (zh) * 2013-11-29 2016-08-31 深圳市理邦精密仪器股份有限公司 一种软件死机监测的方法及使用该方法的医用外接设备
US8990637B1 (en) 2014-03-17 2015-03-24 Splunk Inc. Computing and accessing quality indicators of computer applications
KR101503213B1 (ko) * 2014-04-04 2015-03-17 경주대학교 산학협력단 영상 이미지의 지리정보 및 패턴인식 기술을 이용한 시정거리 측정 장치 및 그 측정 방법
CN105468499B (zh) * 2014-09-04 2019-04-09 中芯国际集成电路制造(上海)有限公司 用于管理调度程序的系统和方法
JP6333467B2 (ja) * 2015-03-24 2018-05-30 三菱電機株式会社 情報処理装置
CN105224420B (zh) * 2015-10-08 2018-11-09 Tcl通讯科技(成都)有限公司 一种自动解析终端异常的分析方法及系统
US10102109B2 (en) * 2016-05-31 2018-10-16 Red Hat, Inc. Exception resolution in a software development session
US11188449B2 (en) 2016-05-31 2021-11-30 Red Hat, Inc. Automated exception resolution during a software development session based on previous exception encounters
US10379934B2 (en) 2017-07-31 2019-08-13 Oracle International Corporation System and method of providing post error analysis for instances of applications in cloud service environments on a per user basis
CN110769019B (zh) * 2018-07-27 2022-05-06 阿里巴巴集团控股有限公司 会话处理方法、装置、系统、存储介质和计算设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6830515B2 (en) 2002-09-10 2004-12-14 Igt Method and apparatus for supporting wide area gaming network
US6915342B1 (en) 2000-02-04 2005-07-05 Ricoh Company Limited Method and system for maintaining the business office appliance through log files

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63259738A (ja) * 1987-04-17 1988-10-26 Hitachi Ltd ソフトウエア品質評価方式
JPH05143395A (ja) * 1991-11-18 1993-06-11 Nec Corp 診断プログラム実行方式およびそれに使用されるログ情報表示方式
US5548718A (en) * 1994-01-07 1996-08-20 Microsoft Corporation Method and system for determining software reliability
US5539907A (en) * 1994-03-01 1996-07-23 Digital Equipment Corporation System for monitoring computer system performance
US5655074A (en) * 1995-07-06 1997-08-05 Bell Communications Research, Inc. Method and system for conducting statistical quality analysis of a complex system
US5678002A (en) * 1995-07-18 1997-10-14 Microsoft Corporation System and method for providing automated customer support
US6006331A (en) * 1997-07-29 1999-12-21 Microsoft Corporation Recovery of online sessions for dynamic directory services
US6330689B1 (en) * 1998-04-23 2001-12-11 Microsoft Corporation Server architecture with detection and recovery of failed out-of-process application
JP3104685B2 (ja) * 1998-07-31 2000-10-30 日本電気株式会社 システムログ記録装置、システムログ記録方法および記録媒体
US6425017B1 (en) * 1998-08-17 2002-07-23 Microsoft Corporation Queued method invocations on distributed component applications
US6219805B1 (en) * 1998-09-15 2001-04-17 Nortel Networks Limited Method and system for dynamic risk assessment of software systems
US6195695B1 (en) * 1998-10-27 2001-02-27 International Business Machines Corporation Data processing system and method for recovering from system crashes
JP2000181761A (ja) * 1998-12-18 2000-06-30 Nec Corp 端末監視システム及び方法
JP2000187585A (ja) * 1998-12-22 2000-07-04 Mitsubishi Electric Corp 遠隔障害情報管理装置並びにその方法
EP1190475A1 (en) 1999-05-29 2002-03-27 Nowonder, Inc User support system and method
US6651244B1 (en) * 1999-07-26 2003-11-18 Cisco Technology, Inc. System and method for determining program complexity
US6594774B1 (en) * 1999-09-07 2003-07-15 Microsoft Corporation Method and apparatus for monitoring computer system objects to improve system reliability
US6363524B1 (en) * 1999-09-10 2002-03-26 Hewlett-Packard Company System and method for assessing the need for installing software patches in a computer system
US6785015B1 (en) * 1999-11-12 2004-08-31 Hewlett-Packard Development Company, L.P. System and method for monitoring a computer system process or peripheral
US6557120B1 (en) * 2000-03-31 2003-04-29 Microsoft Corporation System and method for testing software reliability over extended time
US6728907B1 (en) * 2000-04-14 2004-04-27 Microsoft Corporation System and method for self-diagnosing system crashes
US6785848B1 (en) * 2000-05-15 2004-08-31 Microsoft Corporation Method and system for categorizing failures of a program module
US6665824B1 (en) * 2000-05-15 2003-12-16 Microsoft Corporation System and method for handling a failure reporting conversation
US6701454B1 (en) * 2000-06-05 2004-03-02 Microsoft Corporation Method and system for recovering information during a program failure
US6738928B1 (en) * 2000-06-19 2004-05-18 Hewlett-Packard Development Company, L.P. Method and expert system for analysis of crash dumps
US6708333B1 (en) * 2000-06-23 2004-03-16 Microsoft Corporation Method and system for reporting failures of a program module in a corporate environment
JP2002157171A (ja) 2000-11-17 2002-05-31 Canon Inc 情報処理装置、機器管理プログラム、機器管理プログラムが格納された記録媒体、及び機器管理方法
US6718489B1 (en) * 2000-12-07 2004-04-06 Unisys Corporation Electronic service request generator for automatic fault management system
US6681348B1 (en) * 2000-12-15 2004-01-20 Microsoft Corporation Creation of mini dump files from full dump files
US20020144124A1 (en) * 2001-03-12 2002-10-03 Remer Eric B. Method and apparatus to monitor use of a program
US6785834B2 (en) * 2001-03-21 2004-08-31 International Business Machines Corporation Method and system for automating product support
US7050936B2 (en) * 2001-09-06 2006-05-23 Comverse, Ltd. Failure prediction apparatus and method
US20030074657A1 (en) * 2001-10-12 2003-04-17 Bramley Richard A. Limited time evaluation system for firmware
US20030084376A1 (en) * 2001-10-25 2003-05-01 Nash James W. Software crash event analysis method and system
US7216160B2 (en) * 2001-10-31 2007-05-08 Sun Microsystems, Inc. Server-based application monitoring through collection of application component and environmental statistics
JP2003233512A (ja) * 2002-02-13 2003-08-22 Nec Corp 保守機能付きクライアント監視システム及び監視サーバ及びプログラム並びにクライアント監視・保守方法
US20030187672A1 (en) * 2002-04-01 2003-10-02 Sun Microsystems, Inc. Method, system, and program for servicing customer product support requests
US7421490B2 (en) * 2002-05-06 2008-09-02 Microsoft Corporation Uniquely identifying a crashed application and its environment
US7107340B2 (en) * 2002-05-31 2006-09-12 Microsoft Corporation System and method for collecting and storing event data from distributed transactional applications
US7171651B1 (en) * 2002-11-26 2007-01-30 Microsoft Corporation Method and system for remotely controlling the reporting of events occurring within a computer system
US7062681B2 (en) * 2002-12-03 2006-06-13 Microsoft Corporation Method and system for generically reporting events occurring within a computer system
JP4343526B2 (ja) * 2002-12-27 2009-10-14 キヤノンマーケティングジャパン株式会社 エラー監視装置およびエラー監視方法およびコンピュータが読取り可能な記憶媒体およびプログラム
US7334028B2 (en) * 2003-05-21 2008-02-19 Hewlett-Packard Development Company, L.P. Tiered multi-source software support using automated diagnostic-data transfers
US7386837B2 (en) * 2003-09-19 2008-06-10 International Business Machines Corporation Using ghost agents in an environment supported by customer service providers
US7379999B1 (en) * 2003-10-15 2008-05-27 Microsoft Corporation On-line service/application monitoring and reporting system
US7072805B2 (en) * 2003-10-17 2006-07-04 International Business Machines Corporation Mechanism for on-line prediction of future performance measurements in a computer system
US7389444B2 (en) * 2004-07-27 2008-06-17 Microsoft Corporation Method and system for troubleshooting a misconfiguration of a computer system based on product support services information

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6915342B1 (en) 2000-02-04 2005-07-05 Ricoh Company Limited Method and system for maintaining the business office appliance through log files
US6830515B2 (en) 2002-09-10 2004-12-14 Igt Method and apparatus for supporting wide area gaming network

Also Published As

Publication number Publication date
EP1650662B1 (en) 2017-07-12
CN1755644A (zh) 2006-04-05
CN1755644B (zh) 2010-12-08
US20060070037A1 (en) 2006-03-30
JP2006107428A (ja) 2006-04-20
US7681181B2 (en) 2010-03-16
JP5341295B2 (ja) 2013-11-13
KR20060046276A (ko) 2006-05-17
EP1650662A2 (en) 2006-04-26
EP1650662A3 (en) 2009-09-02

Similar Documents

Publication Publication Date Title
KR101036702B1 (ko) 프로그램 실행 불안정성의 상태들에 기초하여 소프트웨어프로그램에 대한 커스텀 제품 지원을 제공하기 위한 방법,시스템 및 장치
US9069889B2 (en) Automated enablement of performance data collection
US20060070077A1 (en) Providing custom product support for a software program
US11061756B2 (en) Enabling symptom verification
Zheng et al. Co-analysis of RAS log and job log on Blue Gene/P
US6460151B1 (en) System and method for predicting storage device failures
US8082471B2 (en) Self healing software
Murphy et al. Windows 2000 dependability
US7805630B2 (en) Detection and mitigation of disk failures
US20060167891A1 (en) Method and apparatus for redirecting transactions based on transaction response time policy in a distributed environment
US8381036B2 (en) Systems and methods for restoring machine state history related to detected faults in package update process
US10489232B1 (en) Data center diagnostic information
US7685469B2 (en) Method and apparatus of analyzing computer system interruptions
US11573848B2 (en) Identification and/or prediction of failures in a microservice architecture for enabling automatically-repairing solutions
Grottke et al. Recovery from software failures caused by mandelbugs
Murphy Automating Software Failure Reporting: We can only fix those bugs we know about.
CN110457907B (zh) 一种固件程序检测方法和装置
US20030212788A1 (en) Generic control interface with multi-level status
US20190079854A1 (en) Systems and methods for executing tests
US7206975B1 (en) Internal product fault monitoring apparatus and method
US11150972B1 (en) Self-reporting and self-upgrading of enterprise systems
JP5240709B2 (ja) シンプトンを評価するためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
Huang et al. PDA: A Tool for Automated Problem Determination.
Flora et al. A Study on the Aging and Fault Tolerance of Microservices in Kubernetes
US10735246B2 (en) Monitoring an object to prevent an occurrence of an issue

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140417

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160419

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180417

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190417

Year of fee payment: 9