製品理念
ソフトウェアの品質について
我々は PDFlib というソフトウェアを、エンタープライズ用途にも利用できるよう尽力しており、ミッションクリティカルなウェブやデータベースサーバでの使用にも堪えるソフトウェアとなっています。
PDFlib 社が提供する全てのソフトウェアは、一般公開の前に非常に厳しいテストを行っており、高い品質を維持するために、自社開発のテスト用フレームワークである PTF を利用しています。
自社製品を積極的に活用
我々は、単にソフトウェアを販売するだけで、それが顧客に役立つことを期待してじっと待つ、というようなことはしません。自社の作業を自動化するために、自社製品を自ら利用しています。
PDFlib Personalization Server(PPS)を利用し、毎月何百もの請求書や、税務処理に必要な月次課金報告書の PDF を生成しています。データは MS Access に格納され、COM 版の PDFlib を利用して VBA スクリプトで請求書を自動生成しています。
PDFlibはスレッドセーフ
PDFlib はスレッドセーフなため、マルチスレッドなサーバアプリケーションにおいても問題なく使用することが出来ます。特にCOM版はパフォーマンス向上のために "both-threaded"(訳注:COMのスレッドモデルの一つ。COM内部でマルチスレッド処理が可能。反対にApartment-Threadedでは、一般的にCOM内部で新たにスレッドを作成することは出来ない)となっています。また、C言語やC++で PDFlib を使用する場合は、独自のメモリ管理・エラー処理ルーチンを設定することも出来ます。
PDFlib のメモリ管理
ダウンタイム無しで24時間稼働するという高可用性を保証するために、PDFlib のメモリ管理は厳密な設計とメモリリークのテストが行われています。
スモークテスト
開発中に新たに紛れ込んだバグを早期に発見するために、「スモークテスト」という名前の PDFlib アプリケーションを頻繁に実行しています。
このアプリケーションは PDFlib の全API を呼び出し、新しい問題が発見されると即座に開発者に通知します。この「スモークテスト」は日々の開発の一部となっています。
PTFによるリリースのテスト
PDFlib 各機能のより厳密なテストや、各バージョンとOSに対して回帰テストを実行するために、「Portable Test Framework」(PTF)という汎用的なフレームワークを開発しました。PTFは、いわば傘のような役割で、様々なテストを実行してそれらの結果を収集します。テストは自動的に行われ、開発者にはテストが失敗した数とそれらのテストに関する補足情報が通知されます。
PTFは開発中に一定の間隔で実行され、リリースの前にはより詳細なテストが行われます。PTFによる完全テストでは、長年収集してきた非常に多くのテストデータを用いて PDFlib の各機能がテストされます。テストデータには何百ものフォント、画像、PDF ファイルが含まれます。PTF はランタイムエラーだけではなく、 テストで生成された何万という PDF ファイルを、「正しい」と保証されている PDF ファイルと比較することで、正しく PDF ファイルが生成されるかどうかについてもテストしています。
テストやテストデータを追加し続けることで、私たちはより多くの PDFlib の機能を PTF でカバーすることができ、また回帰テストでこれらの機能が永続的にテストされることを保証しています。これまでにも、PTFによってささいなプログラム上のミスからコンパイラのバグ、そして OS 特有のエラーといった様々な問題が発見されています。
PTF は自社で開発しているフレームワークなので、メインフレームを含む全ての OS で利用可能です。また、PureCoverage を利用して、PTF ではまだカバーしきれていないコードを特定しています。
商用ツールによるメモリリークの特定
我々は、パフォーマンスとメモリの扱いは非常に重要だと考えています。(特にサーバサイドで悪影響を与える)潜在的なメモリリークを発見するために、IBM Purify® という商用ツールを使用しています。Purify は何万行にも及ぶコードを走査して各コードをチェックし、メモリの確保と解放が正しく行われているかどうかをチェックします。また Purify は未初期化のメモリの使用など、その他のプログラム上のミスを発見するのにも役立ちます。