(57)【特許請求の範囲】
【請求項１】
位置標定の開始時刻を確定するステップと、
位置標定の開始時刻でのシステム環境を取得するステップと、
前記位置標定の開始時刻でのシステム環境において、位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現するステップと、
再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定するステップと、を含み、
前記の位置標定の開始時刻を確定するステップにおいては、
ソフトウェアに障害が発生した今回の動作を時間的に複数のタイムスライスに分割することと、
第ｉ個のタイムスライスの開始時刻を位置標定の開始時刻として選択することとを含んでおり、
ここで、前記ｉは自然数であり、前記第ｉ個のタイムスライスは、前記障害発生時刻に最も近いタイムスライスである、ことを特徴とするソフトウェア障害の位置標定方法。
【請求項２】
前記の位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現するステップにおいては、具体的には、
記録された位置標定の開始時刻から障害発生時刻までのマウスクリックイベントに基づいて、位置標定の開始時刻から障害発生時刻までの動作状態を再現することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記位置標定の開始時刻から障害発生時刻までの動作状態を再現する前に、
記録されたマウスクリックイベントにおける無効クリックイベントを削除して、有効クリックイベントを取得することをさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記の再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定するステップにおいては、
再現された動作状態が障害発生時刻における動作状態に合致しないと、改めて位置標定の開始時刻を確定することと、
再現された動作状態が障害発生時刻での動作状態に合致すると、すべての有効クリックイベントを分析して、ソフトウェアの実行論理を確定し、さらにソフトウェア障害が発生する原因を位置標定することとを含むことを特徴とする請求項１乃至３のいずれかに記載の方法。
【請求項５】
位置標定の開始時刻を確定するための確定モジュールと、
位置標定の開始時刻でのシステム環境を取得するための取得モジュールと、
前記位置標定の開始時刻でのシステム環境において、位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現するための再現モジュールと、
再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定するための分析モジュールと、を含み、
前記確定モジュールは、
ソフトウェアに障害が発生した今回の動作を時間的に複数のタイムスライスに分割するための分割ユニットと、
第ｉ個のタイムスライスの開始時刻を位置標定の開始時刻として選択するための選択ユニットとを含んでおり、
ここで、前記ｉは自然数であり、前記第ｉ個のタイムスライスは、前記障害発生時刻に最も近いタイムスライスである、ことを特徴とするソフトウェア障害の位置標定装置。
【請求項６】
前記再現モジュールは、具体的には、
記録された位置標定の開始時刻から障害発生時刻までのマウスクリックイベントに基づいて、位置標定の開始時刻から障害発生時刻までの動作状態を再現するための再現ユニットを含むことを特徴とする請求項５に記載の装置。
【請求項７】
前記再現モジュールはさらに、
記録されたマウスクリックイベントにおける無効クリックイベントを削除して、有効クリックイベントを取得するための取得ユニットを含むことを特徴とする請求項６に記載の装置。
【請求項８】
確定モジュールはさらに、
再現モジュールにより再現された動作状態が障害発生時刻での動作状態に合致しないと、改めて位置標定の開始時刻を確定することと、
再現された動作状態が障害発生時刻での動作状態に合致すると、すべての有効クリックイベントを分析して、ソフトウェアの実行論理を確定し、さらにソフトウェア障害が発生する原因を位置標定することとに用いられることを特徴とする請求項５乃至７のいずれかに記載の装置。
【請求項９】
一つ又は複数のプロセッサと、
メモリと、
前記メモリに記憶されており、前記一つ又は複数のプロセッサによって実行される場合に、
位置標定の開始時刻を確定することと、
位置標定の開始時刻でのシステム環境を取得することと、
前記位置標定の開始時刻でのシステム環境において、位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現することと、
再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定することと、が実行され、
前記位置標定の開始時刻を確定することにおいては、
ソフトウェアに障害が発生した今回の動作を時間的に複数のタイムスライスに分割することと、
第ｉ個のタイムスライスの開始時刻を位置標定の開始時刻として選択することと、が実行され、
ここで、前記ｉは自然数であり、前記第ｉ個のタイムスライスは、前記障害発生時刻に最も近いタイムスライスである、一つ又は複数のプログラムと、を含むことを特徴とする設備。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
本特許出願は、２０１４年４月８日に提出された、出願番号が２０１４１０１３８４１７．４であり、出願人が安一恒通（北京）科技有限公司であり、発明の名称が「ソフトウェア障害の位置標定方法及び装置」である中国特許出願の優先権を主張し、当該出願の全文が援用することによって本願に組み込まれた。
【技術分野】
【０００２】
本発明はコンピュータの分野に関し、特にソフトウェア障害の位置標定方法、装置及び設備に関する。
【背景技術】
【０００３】
従来技術では、コンピュータにおいて実行されるソフトウェアに障害が発生する場合に、ソフトウェアが自己回復することを待ち、又はソフトウェアの動作を強引に停止するしかない。ユーザは、ソフトウェア障害が発生する原因、例えば自分の操作によるものであるか、それともソフトウェア自体によるものであるかを確定するいかなる手段がない。ユーザの操作によるソフトウェア障害であり、そしてユーザが意識していない場合に、次回でユーザの同じ操作は依然としてソフトウェア障害を招いてしまう。ユーザはソフトウェアの開発者に頼っても、開発者は障害を招く原因を判断することができない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、ソフトウェア障害の位置標定方法、装置及び設備を提供する。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、第一方面において、本発明の実施例は、
位置標定の開始時刻を確定するステップと、
位置標定の開始時刻でのシステム環境を取得するステップと、
前記位置標定の開始時刻でのシステム環境において、位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現するステップと、
再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定するステップと、を含むソフトウェア障害の位置標定方法を提供する。
【０００６】
第二方面において、本発明の実施例は、
位置標定の開始時刻を確定するための確定モジュールと、
位置標定の開始時刻でのシステム環境を取得するための取得モジュールと、
前記位置標定の開始時刻でのシステム環境において、位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現するための再現モジュールと、
再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定するための分析モジュールと、を含むソフトウェア障害の位置標定装置を提供する。
【０００７】
第三方面において、本発明の実施例はさらに、
一つ又は複数のプロセッサと、
メモリと、
前記メモリに記憶されており、前記一つ又は複数のプロセッサによって実行される場合に、
位置標定の開始時刻を確定することと、
位置標定の開始時刻でのシステム環境を取得することと、
前記位置標定の開始時刻でのシステム環境において、位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現することと、
再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定することとが実行される一つ又は複数のプログラムと、を含む設備を提供する。
【０００８】
本発明の提供する解決手段は、ソフトウェア障害の自動的な位置標定を実現し、ユーザに操作上の問題を意識させることを助け、ソフトウェア開発者にソフトウェア設計の欠陥を発見させることを助けることができる。
【図面の簡単な説明】
【０００９】
以下の図面を参照しながら非限定的な実施例を詳細に説明することにより、本願の他の特徴、目的及び利点はより明らかになる。
【図１】本発明の実施例一によるソフトウェア障害の位置標定方法のフローチャートである。
【図２】本発明の実施例二によるソフトウェア障害の位置標定装置の構造概略図である。
【図３】本発明の実施例四による設備のハードウェア構造概略図である。
【発明を実施するための形態】
【００１０】
本発明の目的、技術案及び利点をより明らかにさせるために、以下、図面を参照しながら本発明の実施例について詳細に説明する。
以下、本発明の実施例を詳細に説明し、説明される実施例による例は図面に示されており、そのうち、終始同様又は類似の符号は、同様又は類似の素子、あるいは同様又は類似の機能を有する素子を表す。以下、図面を参照して説明される実施例は例示的なものであり、本発明を解釈するためのものに過ぎず、本発明を制限するものとして理解すべきではない。逆に、本発明の実施例としては、付いている特許請求の範囲の精神と内包範囲におけるすべての変形、変更及び等価物を含む。
【００１１】
本発明の説明において、理解する必要があるのは、用語「第一」や「第二」等は目的を説明するためのものに過ぎず、相対的重要性を指示したり又は暗示したりするものとして理解すべきではない。本発明の説明において、説明する必要があるのは、別途明確な規定と限定がない限り、用語「連結」や「接続」は広義に解すべきであり、例えば、固定接続であってもよく、取外し可能な接続又は一体的な接続であってもよく、また、機械的接続であってもよく、電気的接続であってもよく、また、直接連結されてもよく、仲介物を介して間接的に連結されてもよい。当業者にとっては、実情に基づいて上記した用語の本発明での具体的な意味を理解することができる。また、本発明の説明において、別途説明していない限り、「複数」は二つ又はそれ以上を意味している。
【００１２】
フローチャートにおける、又は、ここで他の方式で説明されるあらゆる過程又は方法の説明は、一つ又はそれ以上の所定の論理機能又は過程を実現するためのステップにおける実行可能な命令のコードを含むモジュール、断片又は部分として理解されてもよく、そして、本発明の好ましい実施形態の範囲はその他の実現を含み、そのうち、示される又は検討する順番に従わなくてもよく、係る機能に応じてほぼ同時に又は逆の順で機能を実行することを含むことは、本発明の実施例が属する技術分野の当業者に理解されるべきである。
【００１３】
実施例一
図１は、本発明の実施例一によるソフトウェア障害の位置標定方法のフローチャートであり、図１に示されるように、当該方法は、
位置標定の開始時刻を確定するステップ１０１と、
位置標定の開始時刻でのシステム環境を取得するステップ１０２と、
前記位置標定の開始時刻でのシステム環境において、位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現するステップ１０３と、
再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定するステップ１０４とを含む。
【００１４】
上記ステップ１０１に記載された位置標定の開始時刻を確定することについて説明する必要があるのは、位置標定の開始時刻とソフトウェアの動作開始時刻は同一の概念ではないことである。
【００１５】
本発明は、
ソフトウェアに障害が発生した今回の動作時間帯を時間的に複数のタイムスライスに分割し、
位置標定の開始時刻として第ｉ個のタイムスライスの開始時刻を選択する（前記ｉは自然数である）、というような位置標定の開始時刻を確定する方法を提供する。
【００１６】
つまり、ソフトウェアの動作開始時刻からソフトウェアの障害発生時刻までの時間帯をソフトウェアの正常動作時間Ｔとし、また、動作時間Ｔを複数のタイムスライスに分割する場合に、均等に分割してもよく、不均等に分割してもよく、本願はこれに限定されない。第ｉ個のタイムスライスの開始時刻を位置標定の開始時刻として選択するが、そのうち、ｉは自然数である。ここでの自然数ｉは、一般的に、障害発生時刻に最も近いタイムスライスから選択される。これは、ステップ１０３における再現過程を可能な限り短くして、ユーザシステムの性能に過大な影響を与えることを回避するためである。
【００１７】
ソフトウェアの正常動作時間Ｔにおいて、時点とシステム環境との関係を絶えず保存できるから、ステップ１０２においては、位置標定の開始時刻に基づいてシステム環境を取得することが可能になる。
【００１８】
ステップ１０３における位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現することは、具体的には、記録された位置標定の開始時刻から障害発生時刻までのマウスクリックイベントに基づいて、位置標定の開始時刻から障害発生時刻までの動作状態を再現することを含む。
【００１９】
さらに、位置標定の開始時刻から障害発生時刻までの動作状態を再現する前に、記録されたマウスクリックイベントにおける無効クリックイベントを削除して、有効クリックイベントを取得する。これにより、ステップ１０３における再現効率をより一層向上することができる。
【００２０】
また説明する必要があるのは、再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定するステップは、
再現された動作状態が障害発生時刻での動作状態に合致しないと、改めて位置標定の開始時刻を確定することと、
再現された動作状態が障害発生時刻での動作状態に合致すると、上記すべての有効クリックイベントを分析して、ソフトウェアの実行論理を確定し、さらにソフトウェア障害が発生する原因を位置標定することとを含む。
【００２１】
本発明の提供するソフトウェア障害の位置標定方法は、障害が発生する前の一定時間内のソフトウェアの動作状態を再現することにより、ソフトウェア障害の自動的な位置標定を実現すし、大量のリソースを占有する必要がなく、ユーザに操作上の問題を意識させることを助け、ソフトウェア開発者にソフトウェア設計の欠陥を発見させることう助けている。
【００２２】
また説明する必要があるのは、本発明の提供する方法はコンピュータプログラムソフトウェアとして実施され得ることであり、例えば、本発明による実施例はコンピュータプログラム製品であってもよく、当該プログラム製品を実行することにより、例示される方法をコンピュータに実行させる。前記コンピュータプログラム製品はコンピュータ可読記憶媒体を含み、当該媒体には、前記方法を実現するためのコンピュータプログラム論理又はコード部分が含まれている。前記コンピュータ記憶媒体は、コンピュータに取り付けられ得る内蔵型媒体、又はコンピュータ本体から取り外し得る携帯型媒体（例えば、活線挿抜技術による記憶装置）であってもよい。前記内蔵型媒体は、書換可能な不揮発性メモリ、例えばＲＡＭ、ＲＯＭ、フラッシュメモリ及びハードディスクを含むが、これらに限定されない。前記携帯型媒体は、光記憶媒体（例えば、ＣＤ−ＲＯＭやＤＶＤ）、磁気光記憶媒体（例えば、ＭＯ）、磁気記憶媒体（例えば、カセットテープやポータブルハードディスク）、内蔵された書換可能な不揮発性メモリを備える媒体（例えば、メモリカード）、及び内蔵ＲＯＭを備える媒体（例えば、ＲＯＭカセット）を含むが、これらに限定されない。
【００２３】
実施例二
図２は、本発明の実施例二によるソフトウェア障害の位置標定装置の構造概略図であり、図２に示されるように、当該装置は上記した方法にかかる実施例を実行する本体であり、方法のステップは上記実施例の説明を参照することができるから、本実施例では省略する。
【００２４】
当該装置は、
位置標定の開始時刻を確定するための確定モジュール２０１と、
位置標定の開始時刻でのシステム環境を取得するための取得モジュール２０２と、
前記位置標定の開始時刻でのシステム環境において、位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現するための再現モジュール２０３と、
再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定するための分析モジュール２０４とを含む。
【００２５】
一つの実施形態では、確定モジュール２０１は、
ソフトウェアに障害が発生した今回の動作を時間的に複数のタイムスライスに分割するための分割ユニットと、
第ｉ個のタイムスライスの開始時刻を位置標定の開始時刻として選択する（前記ｉは自然数である）ための選択ユニットとを含む。
【００２６】
もう一つの実施形態では、再現モジュール２０３は、
記録された位置標定の開始時刻から障害発生時刻までのマウスクリックイベントに基づいて、位置標定の開始時刻から障害発生時刻までの動作状態を再現するための再現ユニットを含む。
【００２７】
上記実施形態に基づいて、再現モジュール２０３はさらに、
記録されたマウスクリックイベントにおける無効クリックイベントを削除して、有効クリックイベントを取得するための取得ユニットを含む。
【００２８】
上記いずれかの実施形態に基づいて、確定モジュール２０１はさらに、
再現モジュール２０３により再現された動作状態が障害発生時刻での動作状態に合致しないと、改めて位置標定の開始時刻を確定することに用いられる。
【００２９】
本発明が提供するソフトウェア障害の位置標定装置は、障害が発生する前の一定時間内のソフトウェアの動作状態を再現することにより、ソフトウェア障害の自動的な位置標定を実現し、大量のリソースを占有する必要がなく、ユーザに操作上の問題を意識させることを助け、ソフトウェア開発者にソフトウェア設計の欠陥を発見させることを助けている。
【００３０】
実施例三
本発明の実施例はさらに、
一つ又は複数のプログラムを記憶しており、前記一つ又は複数のプログラムが設備によって実行される場合に、前記設備に、
位置標定の開始時刻を確定することと、
位置標定の開始時刻でのシステム環境を取得することと、
前記位置標定の開始時刻でのシステム環境において、位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現することと、
再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定することとを実行させる不揮発性コンピュータ記憶媒体
を提供する。
【００３１】
上記の記憶媒体において前記設備により上記した操作が実行される場合に、好ましくは、前記位置標定の開始時刻を確定することは、
ソフトウェアに障害が発生した今回の動作を時間的に複数のタイムスライスに分割することと、
第ｉ個のタイムスライスの開始時刻を位置標定の開始時刻として選択する（前記ｉは自然数である）こととを含む。
【００３２】
さらに、前記位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現することは、具体的には、
記録された位置標定の開始時刻から障害発生時刻までのマウスクリックイベントに基づいて、位置標定の開始時刻から障害発生時刻までの動作状態を再現することを含む。
【００３３】
さらに、前記位置標定の開始時刻から障害発生時刻までの動作状態を再現する前に、記録されたマウスクリックイベントにおける無効クリックイベントを削除して、有効クリックイベントを取得する。
【００３４】
さらに、前記再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定することは、
再現された動作状態が障害発生時刻における動作状態に合致しないと、改めて位置標定の開始時刻を確定することを含む。
【００３５】
実施例四
図３を参照して、本発明の実施例は、設備のハードウェア構造を提供し、当該設備は、プロセッサ３０１と、メモリ３０２と、入力装置３０３と、出力装置３０４とを含み、プロセッサ３０１の数は一つ又は複数であってもよく（図３では一つのプロセッサ３０１を例とする）、プロセッサ３０１、メモリ３０２、入力装置３０３及び出力装置３０４はバス又はその他の手段で接続されてもよい（図３ではバスによる接続を例とする）。
【００３６】
コンピュータ可読記憶媒体として、メモリ３０２は、ソフトウェアプログラム、コンピュータ実行可能なプログラム及びモジュール、例えば本発明の実施例におけるソフトウェア障害の位置標定方法に対応するプログラム命令／ユニット（例えば、図２に示されるソフトウェア障害の位置標定装置における確定モジュール２０１、取得モジュール２０２、再現モジュール２０３及び分析モジュール２０４）を記憶するために用いることができる。プロセッサ３０１は、メモリ３０２に記憶されているソフトウェアプログラム、命令及びモジュールを実行することによって、端末装置の各種の機能的アプリケーション及びデータ処理を実行し、即ち、上記方法にかかる実施例におけるソフトウェア障害の位置標定方法を実現する。
【００３７】
メモリ３０２はプログラム記憶領域及びデータ記憶領域を含んでもよく、そのうち、プログラム記憶領域はオペレーティングシステム及び少なくとも一つの機能に必要なアプリケーションプログラムを記憶でき、データ記憶領域は端末装置の使用によって作成されたデータ等を記憶できる。また、メモリ３０２は高速ランダムアクセスメモリを含んでもよく、不揮発性メモリ、例えば少なくとも一つの磁気ディスクメモリ、フラッシュメモリ、又はその他の不揮発性固体メモリを含んでもよい。一部の実例では、メモリ３０２は、プロセッサ３０１に対して遠隔的に設けられるメモリをさらに含んでもよく、これらの遠隔のメモリはネットワークを介してサーバに接続してもよい。上記のネットワークの実例は、インターネット、イントラネット、ローカルエリアネットワーク、移動通信ネットワーク、及びそれらの組合せを含むが、これらに限定されない。
【００３８】
入力装置３０３は、入力される数字又は文字情報を受信し、端末でのユーザ設定及び機能制御に関するキー信号入力を生成するために用いることができる。出力装置３０４はディスプレイスクリーン等の表示装置を含んでもよい。
【００３９】
即ち、上記設備は、
一つ又は複数のプロセッサと、
メモリと、
前記メモリに記憶されており、前記一つ又は複数のプロセッサによって実行される場合に、
位置標定の開始時刻を確定することと、
位置標定の開始時刻でのシステム環境を取得することと、
前記位置標定の開始時刻でのシステム環境において、位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現することと、
再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定することとが実行される一つ又は複数のモジュールと、を含む。
【００４０】
さらに、前記位置標定の開始時刻を確定することは、
ソフトウェアに障害が発生した今回の動作を時間的に複数のタイムスライスに分割することと、
第ｉ個のタイムスライスの開始時刻を位置標定の開始時刻として選択する（前記ｉは自然数である）こととを含む。
【００４１】
さらに、前記位置標定の開始時刻から障害発生時刻までのソフトウェアの動作状態を再現することは、具体的には、
記録された位置標定の開始時刻から障害発生時刻までのマウスクリックイベントに基づいて、位置標定の開始時刻から障害発生時刻までの動作状態を再現することを含む。
【００４２】
さらに、前記位置標定の開始時刻から障害発生時刻までの動作状態を再現する前に、記録されたマウスクリックイベントにおける無効クリックイベントを削除して、有効クリックイベントを取得する。
【００４３】
さらに、前記再現された動作状態に基づいて、ソフトウェア障害の原因となる問題を確定することは、
再現された動作状態が障害発生時刻での動作状態に合致しないと、改めて位置標定の開始時刻を確定することを含む。
【００４４】
以上の実施形態についての説明によれば、当業者は、本発明をソフトウェア及び必要な汎用ハードウェアにより実現してもよく、ハードウェアにより実現してもよいのは当然であるが、多くの場合に、前者はより好ましい実施形態であることを明瞭に分かり得る。このような知見に基づけば、本発明の技術的解決手段は本質的に、又は従来技術に寄与する部分は、ソフトウェア製品として表されることができ、当該コンピュータソフトウェア製品はコンピュータ可読記憶媒体、例えばコンピュータのフロッピーディスク、読み出し専用の記憶装置（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＲＯＭ）、ランダムアクセス記憶装置（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＲＡＭ）、フラッシュメモリ（ＦＬＡＳＨ）、ハードディスク又は光ディスク等に記憶されて、若干の命令を含んで一つのコンピュータ装置（パソコン、サーバ、又はネットワーク装置等であってもよい）に本発明の各実施例に記載の方法を実行させることができる。
【００４５】
注意すべきなのは、上記ソフトウェア障害の位置標定装置の実施例では、含まれる各ユニット及びモジュールは単に機能論理に基づいて区分されるものであり、上記の区分に限らず、対応する機能を実現できればよい。また、各機能ユニットの具体的な名称も互いに区別しやすいためのものに過ぎず、本発明の保護範囲を制限するためのものではない。
【００４６】
上記は本発明の具体的な実施形態に過ぎず、本発明の保護範囲はこれに制限されなく、当業者が本発明の開示した技術範囲において容易に想到できるあらゆる変形又は置換は、いずれも本発明の保護範囲に含まれるべきである。このため、本発明の保護範囲は記載された請求項の保護範囲を基準とすべきである。
【図１】
0006259522.tif 000002
【図２】
0006259522.tif 000003
【図３】
0006259522.tif 000004