JP2004192644A - 電子ソフトウェア設計仕様文書検証方法及び装置、並びにコンピュータ可読媒体 - Google Patents

電子ソフトウェア設計仕様文書検証方法及び装置、並びにコンピュータ可読媒体 Download PDF

Info

Publication number
JP2004192644A
JP2004192644A JP2003408497A JP2003408497A JP2004192644A JP 2004192644 A JP2004192644 A JP 2004192644A JP 2003408497 A JP2003408497 A JP 2003408497A JP 2003408497 A JP2003408497 A JP 2003408497A JP 2004192644 A JP2004192644 A JP 2004192644A
Authority
JP
Japan
Prior art keywords
function
design specification
section
attribute
undeclared
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2003408497A
Other languages
English (en)
Inventor
Tetsuro Motoyama
モトヤマ テツロウ
Avery Fong
フォング アベリ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of JP2004192644A publication Critical patent/JP2004192644A/ja
Pending legal-status Critical Current

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
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】設計仕様検証ツール付きのソフトウェア開発環境を提供する。
【解決手段】自動化された設計仕様検証ツールが、設計仕様の第1セクションで定義されている1つまたは複数の関数について、各関数名が同一設計仕様の第2セクションで宣言されているかどうかを自動的に判定する。さらに、第1セクション内の各関数に関連するパラメータ名が第2セクションで宣言されているかどうか、および第1セクション内の各関数に関連するクラス属性名が第3セクションで宣言されているかどうかを判定することができる。検証プロセスの結果は報告することができる。実施形態では、第1セクションは関数定義セクションであり、第2セクションは関数リストセクションであり、第3セクションはクラス属性セクションであって、それぞれ設計仕様文書のクラス仕様の一部である。
【選択図】 図24

Description

本発明は、包括的には、製品開発プロジェクト管理に関し、特に、電子ソフトウェア設計仕様を自動的にチェックし検証する技術に関する。
[関連出願への相互参照]
本出願は、「Automated Management Of Development Project Files Over A Network」と題する米国特許出願第09/881,250号、および「Project Management Over A Network With Automated Task Schedule Update」と題する米国特許出願第10/059,654号に関連し、これら両方の内容は、事実上本明細書に完全に記載されているかのごとく、全体として参照により本明細書に援用される。
製品開発プロジェクトは通常、監視および管理のための多大な努力を必要とする。さらに、コンピュータソフトウェア開発プロジェクトは本質的に管理が困難である。この困難は、部分的には、ソフトウェアパッケージを構成するタスクおよび関連する成果物が多数であること、ならびにこれらのタスクおよび成果物に関連する事務処理およびプロジェクトファイルが膨大であることに起因する。もう1つの寄与要因は、ソフトウェアパッケージの開発サイクル中に個別のタスクと成果物の間に確立される複雑な相互依存関係である。さらにもう1つの寄与要因は、開発中のソフトウェアに関連する設計仕様を生成し保守する必要があることである。
開発プロジェクトの管理は通常、プロジェクト文書、スケジュール等を編成し、保守し、およびそれらへのアクセスを制御することを含む。さらに、企業組織内で複数の開発プロジェクトが同時並行して行われているために文書管理労力が相当拡大している場合も多い。従来、マスタープロジェクトスケジュールの管理は、他のタスクのうちでもとりわけ、スケジューリングアプリケーションにデータを手入力すること、スケジュール間のリンクを手動で作成すること、および個別の開発者のタスクスケジュールをマスタープロジェクトスケジュールに手動で集約することを伴う。これらは面倒で誤りやすいタスクであり、監督および品質管理はほとんどまたは全くない。
マスタープロジェクトスケジュールは、しばしば絶え間なく変化しており、そのため管理側は開発者に、タスクステータスおよび関連するスケジュール更新を要請する。開発者によって管理側に提供されるフィードバックはほとんど監督がなく、したがって厳格なポリシー、手順、または検証プロセスに従っていないことが多い。このため、プロジェクトスケジュールの実際のステータスは確認が困難であることが多い。というのは、個人のタスクの進度は、そのタスクに割り当てられた個人による主観的な、しかもしばしば自分に有利な進度レポートによって決定されるからである。
例えば、いくつかのスケジューリングシステムでは、開発者は、タスクが部分的に完了したこと、例えば90パーセント完了したことを表明することができる。そしてこの情報は、プロジェクトがスケジュール通りであるかどうかを判定するためにスケジューリングシステムに入力される。しかし、一般に、個人のステータスが信頼できるかどうかについての説明責任はないため、プロジェクトステータスを取得する現在のプロセスは、プロジェクトの現実の進度を隠蔽しがちである。
上記の点に鑑みると、相互依存的な開発プロジェクトのタスクスケジュールを管理するための、それに関連する手作業を減らす技法が明らかに必要とされている。
さらに、ソフトウェアの開発中に、正確で一貫性のある設計仕様を生成し保守することは難題である。時には、変数名がスペルミスされ、または設計仕様内で一貫性なしに使用されて、これらのエラーは検査プロセスで検出されないことも多い。さらに、時には、設計仕様で参照される変数名が、変数名前付け規則のような組織規則、制約およびプロセスと整合しないことがある。
設計仕様が不正確な、または一貫性のない変数名を含み、それが文書検査プロセス中に検出されない場合、これらのエラーは通常、その仕様に関連するソフトウェアコードがコンパイルされる時にコンパイラによって検出される。このような状況では、コード内および設計仕様内の両方において、エラーを訂正するのに時間と資源が浪費される。いくつかの組織では、設計仕様は、組織の文書変更管理プロセスにも従わなければならない。このため資源の浪費は悪化する。というのは、仕様文書の改訂は、文書変更要求の発生と、文書および変更要求のさらなる検査とを必要とし、このことがコストを追加し、結果として資源の浪費を増大させるからである。
本発明の目的は、上記の点に鑑み、ソフトウェア設計仕様文書の正確さおよび一貫性をチェックし検証するための自動化された技法を提供することにある。
一態様では、本発明のソフトウェア設計仕様文書を検証する技法は、関数定義セクションのような、設計仕様文書の第1セクションで定義されている1つまたは複数の関数のそれぞれについて、各関数名が、関数リストセクションのような、同一設計仕様文書の第2セクションで宣言されているかどうかを自動的に判定することを含む。関数名が第2セクションで宣言されていない場合、未宣言関数が報告される。一実施形態では、関数名が第2セクションで宣言されている場合、第1セクションで各関数名に関連する各パラメータ名が第2セクションで宣言されているかどうかが自動的に判定される。各パラメータ名が宣言されていない場合、その各パラメータ名が未宣言パラメータとして格納され、その各パラメータ名および各関数に関連する未宣言パラメータ頻度変数がインクリメントされる。さらに、一実施形態では、未宣言パラメータ名が存在する場合、その未宣言パラメータ名が未宣言パラメータ頻度変数の値とともに報告される。これは、未宣言パラメータが各関数で使用されている回数を示す。
一実施形態では、第1セクションで各関数名に関連する各属性名が、クラス属性セクションのような、同一設計仕様文書の第3セクションでリストされているかどうかがさらに自動的に判定される。各属性名がリストされていない場合、その各属性名が未宣言属性として格納され、その各属性名および各関数に関連する未宣言属性頻度変数がインクリメントされる。さらに、一実施形態では、未宣言属性名が存在する場合、その未宣言属性名が未宣言属性頻度変数の値とともに報告される。これは、未宣言属性が各関数で使用されている回数を示す。
一実施形態では、第1セクションで参照されている1つまたは複数のローカル変数名が格納され、各ローカル変数名および処理中の各関数に関連するローカル変数名頻度変数がインクリメントされる。1つまたは複数のローカル変数名(もしあれば)、および関連する頻度変数の値が報告される。
本発明によれば、電子設計仕様文書におけるスペルミスされた関数ならびに関連するパラメータおよび属性の発生は、設計仕様に関連するソフトウェアコードへの拡散の前に発見される。こうして、多くの場合、設計仕様文書のような管理されている文書を訂正することに関連する資源の使用は減少するか、または回避される。さらに、その後のコンパイル時エラーが減少するか、または回避される。
以下では、開発プロジェクトの管理に関与するタスクを自動化する諸技法が記述される。それらの技法は本明細書では主としてソフトウェア開発プロジェクトに関して記述されるが、それらの技法を他の開発プロジェクトに適用する場合にも本発明の利益が利用可能であることは当業者には認識されるはずである。以下の記述では、説明の目的上、本発明の徹底的な理解を提供するために数多くの具体的細目が記載される。しかし、明らかなように、本発明はこれらの具体的細目がなくても実施され得る。他の場合、本発明を不必要に不明瞭にすることを避けるために、よく知られている構造およびデバイスはブロック図形式で示される。
<動作環境>
図1は、本発明の諸態様が実施され得る動作環境の非限定的例を示している。この例示的動作環境は、複数のワークステーション102、ウェブサーバ104、およびデータベース106を備え、これらすべてが、これらの間の通信のために、ソフトウェア開発ネットワーク108に直接または間接に接続されている。随意に、後述の理由でデータベース110が存在してもよい。
ワークステーション102は通常、図2のコンピュータシステム200によって例示されるように構成されるコンピュータシステムであり、例えば、開発プロジェクトに関連するタスクを完了するためにソフトウェア技術者/開発者によって利用される。このようなタスクの適切な非限定的例には、プロジェクトを開始すること、タスクスケジュールを作成し保守すること、ソフトウェアアーキテクチャを設計すること、仕様を作成すること、ソフトウェアコードを作成すること、ソフトウェアコードを実装しテストすること、種々のタスク成果物を検査すること等がある。さらに、プロジェクト管理者は、プロジェクトの進度を検討し管理するための情報にアクセスするためにワークステーション102を利用する。開発者および管理者は、ネットワーク108を通じて他の接続されているコンポーネント、すなわちウェブサーバ104およびデータベース106に情報を送信する。
ウェブサーバ104は、従来のウェブサーバを表している。これはコンピュータハードウェアとソフトウェアの組合せであって、適当なプロトコル(例えば、Hypertext Transfer Protocol[HTTP]およびTransmission Control Protocol/Internet Protocol[TCP/IP])を用いて、ウェブページを形成するファイル(例えば、Hypertext Markup Language[HTML]またはExtensible Markup Language[XML]ファイル)を、ワークステーション102を使用している開発者または管理者のようなユーザに提供する。一般に、開発プロジェクトのライフサイクル中に交換され管理される情報の大部分は、ウェブサーバ104によってネットワーク108を通じて提供される。さらに、本明細書で説明されるように、開発プロジェクトファイルの管理を自動化する技法の諸態様は、ウェブサーバ104上で実施され実行されてもよい。ただし、本発明の実施はこのような実施態様に限定されない。それらの技法は、ワークステーション102または図2に例示されているように同様に構成されるコンピュータシステムのような、いかなる他の処理システム上でも実施されることが可能である。
データベース106は、開発プロジェクトに関係する情報を格納する従来のデータベースを表している。したがってデータベース106は、ネットワーク108を通じて送信される問合せを通じて、ワークステーション102またはウェブサーバ104を使用している権限のある個人による情報へのアクセスを提供する。データベース106に格納される情報の種類は実質的に無限であり、非限定的例として、プロジェクト開始フォーム、個人および集約管理タスクスケジュール、仕様、ソフトウェアコード、検査レポート、ウェブページファイル、ならびに文書ディレクトリおよびインデックスがある。さらに、図3に示されそれに関して説明されるように、他の情報がデータベース106に格納されてもよい。代替的な動作環境では、従来のデータベース110がデータベースサーバとしてネットワーク108に直接接続される。
ネットワーク108は、ワークステーション102、ウェブサーバ104、およびデータベース106のような種々の接続されているコンポーネント間での情報の交換を容易にする従来のネットワーク、例えばパケット交換ネットワークを表している。ネットワーク108は、従来型イーサネット、ファーストイーサネット、トークンリング、または(Institute of Electrical and Electronics Engineers[IEEE]のワーキンググループによって開発された)802.11aおよび802.11bに規定されているような無線LAN等のローカルエリアネットワーク(LAN)であってもよく、これは企業内で実施されるであろう。さらに、ネットワーク108は、仮想私設ネットワーク(VPN)を通じてリモートユーザとの通信を容易にするために、インターネットのような広域ネットワーク(WAN)であってもよく、あるいはネットワーク108は、LANおよびWANの組合せとなってもよい。さらに、ネットワーク108は、種々の異なる媒体を用いて形成されることが可能であり、そのような媒体としては、以下のものには限定されないが、電気的有線すなわちケーブル接続、光接続、または無線接続がある。
<ハードウェア概要>
図2は、本発明の諸実施形態が実施され得るコンピュータシステム200を例示するブロック図である。コンピュータシステム200はさらに、ワークステーション102(図1)およびウェブサーバ104(図1)のシステム構成の非限定的例を示している。コンピュータシステム200は、情報を通信するためのバス202等の通信メカニズム、およびバス202に結合した、情報を処理するプロセッサ204を含む。コンピュータシステム200はまた、ランダムアクセスメモリ(RAM)等のダイナミック記憶デバイスのような、バス202に結合した、情報およびプロセッサ204によって実行されるべき命令を格納するメインメモリ206も含む。メインメモリ206は、プロセッサ204によって実行されるべき命令の実行中に一時変数等の中間的情報を格納するために使用されてもよい。コンピュータシステム200はさらに、バス202に結合した、プロセッサ204のためのスタティックな情報および命令を格納する読み出し専用メモリ(ROM)208等のスタティック記憶デバイスを含む。磁気ディスク、光ディスク、または光磁気ディスクのような記憶デバイス210が、情報および命令を格納するために提供され、バス202に結合している。
コンピュータシステム200は、バス202を通じて、ブラウン管(CRT)や液晶ディスプレイ(LCD)のような、情報をコンピュータユーザに対して表示するディスプレイ212に結合してもよい。英数字等のキーを含む入力デバイス214が、情報およびコマンド選択をプロセッサ204に伝えるためにバス202に結合している。もう1つのタイプのユーザ入力デバイスは、マウス、トラックボール、またはカーソル方向キーのような、方向情報およびコマンド選択をプロセッサ204に伝え、ディスプレイ212上のカーソル移動を制御するカーソルコントロール216である。この入力デバイスは通常、第1軸(例えばx)および第2軸(例えばy)という2つの軸方向に2つの自由度を有し、それによりこのデバイスは平面内の位置を指定することができる。
本発明は、本明細書で説明される諸技法を実施するためのコンピュータシステム200の使用に関する。本発明の一実施形態によれば、それらの技法は、プロセッサ204がメインメモリ206に含まれる1つまたは複数の命令の1つまたは複数のシーケンスを実行することに応答してコンピュータシステム200によって実行される。このような命令は、記憶デバイス210のような別のコンピュータ可読媒体からメインメモリ206に読み込まれてもよい。メインメモリ206に含まれる命令のシーケンスの実行により、プロセッサ204は、本明細書で説明されるプロセスステップを実行する。代替実施形態では、本発明を実施するために、ソフトウェア命令に代えて、またはそれとともに、固定配線回路を使用してもよい。したがって、本発明の諸実施形態は、ハードウェア回路およびソフトウェアのいかなる特定の組合せにも限定されない。
本明細書で使用される場合、「コンピュータ可読媒体」という用語は、実行のためにプロセッサ204に命令を提供することに関与するいかなる媒体をも指す。このような媒体は多くの形態をとることが可能であり、以下のものには限定されないが、不揮発性媒体、揮発性媒体、および伝送媒体がある。不揮発性媒体の例としては、以下のものには限定されないが、記憶デバイス210のような、光ディスク、磁気ディスク、または光磁気ディスクがある。揮発性媒体としては、メインメモリ206のようなダイナミックメモリがある。伝送媒体としては、同軸ケーブル、銅線および光ファイバがあり、バス202を構成するワイヤも含まれる。伝送媒体は、電波および赤外線データ通信中に生成されるもののような音波または光波の形態をとることも可能である。
コンピュータ可読媒体の普通の形態としては、以下のものには限定されないが、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ等の磁気媒体;CD−ROM、DVD等の光または光磁気媒体;パンチカード、紙テープ等の、穴あきパターンを有する物理媒体;RAM、PROM、EPROM、フラッシュEPROM等のメモリチップもしくはカートリッジ、本明細書で以下で説明されるような搬送波、またはコンピュータが読み取ることができるいかなる他の媒体も含まれる。
種々の形態のコンピュータ可読媒体が、実行のためにプロセッサ204に1つまたは複数の命令の1つまたは複数のシーケンスを伝えることに関与してもよい。例えば、命令はまずリモートコンピュータの磁気ディスクに保持されていてもよい。リモートコンピュータはその命令を自己のダイナミックメモリにロードし、モデムを用いて電話回線を通じてその命令を送信することができる。コンピュータシステム200側のモデムが電話回線上のデータを受信し、赤外線送信機を用いてそのデータを赤外線信号に変換することができる。赤外線検出器が赤外線信号で伝送されたデータを受信し、適当な回路がそのデータをバス202上に置くことができる。バス202はそのデータをメインメモリ206に伝送し、そこからプロセッサ204が命令を取り出して実行する。メインメモリ206によって受信された命令は、随意に、プロセッサ204による実行の前後に記憶デバイス210に格納されてもよい。
コンピュータシステム200は、バス202に結合した通信インタフェース218も含む。通信インタフェース218は、ローカルネットワーク222に接続されたネットワークリンク220に結合する双方向データ通信を提供する。例えば、通信インタフェース218は、対応するタイプの電話回線へのデータ通信接続を提供するためのサービス総合デジタル網(ISDN)カードまたはモデムであってもよい。もう1つの例として、通信インタフェース218は、互換性のあるLANへのデータ通信接続を提供するためのローカルエリアネットワーク(LAN)カードであってもよい。無線リンクも実施され得る。いかなるこのような実施態様においても、通信インタフェース218は、種々のタイプの情報を表すデジタルデータストリームを伝送する電気、電磁または光信号を送受信する。
ネットワークリンク220は通常、1つまたは複数のネットワークを通じて他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク220は、ローカルネットワーク222を通じて、ホストコンピュータ224、またはインターネットサービスプロバイダ(ISP)226によって運用されるデータ機器への接続を提供してもよい。ISP226は、さらに、現在「インターネット」228と普通呼ばれているワールドワイドパケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク222およびインターネット228はいずれも、デジタルデータストリームを伝送する電気、電磁または光信号を使用する。コンピュータシステム200との間でデジタルデータを伝送する、種々のネットワークを通る信号ならびにネットワークリンク220上の信号および通信インタフェース218を通る信号は、情報をトランスポートする搬送波の例示的形態である。
コンピュータシステム200は、ネットワーク(複数可)、ネットワークリンク220および通信インタフェース218を通じて、メッセージを送信し、プログラムコードを含むデータを受信する。インターネットの例では、サーバ230がインターネット228、ISP226、ローカルネットワーク222および通信インタフェース218を通じてアプリケーションプログラムのための要求されたコードを送信してもよい。
受信されたコードは、受信されるとともにプロセッサ204によって実行されてもよく、および/または後で実行するために記憶デバイス210または他の不揮発性ストレージに格納されてもよい。このようにして、コンピュータシステム200は、搬送波の形態でアプリケーションコードを取得し得る。
<プロジェクトデータベース>
図3は、データベース106のデータコンポーネントおよびウェブコンポーネントの非限定的例を示している。データベース106は、種々のプロジェクト文書を表すファイルを格納することが可能であり、その一部は、開発プロジェクトを運営し管理することに関するガイダンスを提供するために企業によって使用される汎用のプロジェクト関連文書であり、一部は特定のプロジェクトに固有である。汎用文書の例として、データベースは、以下のものには限定されないが、プロジェクト参加者(すなわち、技術者/開発者、管理者等)が使用するための1つまたは複数のひな形フォーム302、例えば、プロジェクト開始フォーム(対話的プロジェクト開始フォームの印刷された例として図5Bおよび図5C参照)または検査フォーム(対話的検査フォームの印刷された例として図13参照);ならびに、少なくとも開発プロジェクトに関して、企業のインフラストラクチャ、ポリシーおよび手順についてプロジェクト参加者に指示するための1つまたは複数のマニュアル304、ポリシー306、および手順308、を格納するように構成され得る。フォーム302は、システムデータベース106への情報の対話的入力を容易にし、主としてクライアント、または個人プロジェクト参加者によって使用され、印刷出力も定義する。
プロジェクトデータ310とは、プロジェクト固有の文書のことであって、以下のものには限定されないが、完成したプロジェクト開始フォーム(図5Bおよび図5C参照)、個人タスクスケジュール(図12参照)、集約管理タスクスケジュール(図14参照)、仕様、ソフトウェアコード、完成した検査フォーム(図13参照)、ウェブページファイル、文書ディレクトリおよびインデックス、タスク割当てフォーム(図19参照)、ならびに個人タスクスケジューラフォーム(図20参照)を含み得る。なお、文書ディレクトリおよびインデックス、ならびにタスク割当てフォームおよび個人タスクスケジューラフォームは、代替的または追加的に、データベース110(図1)に格納されてもよいことに留意されたい。ワークステーション102で、または別法としてウェブサーバ104で作業するプロジェクト参加者は、サーチエンジン320を利用してデータベース106にアクセスし、種々の汎用およびプロジェクト固有文書を検索することができる。
プロジェクトホームページ312および1つまたは複数のプロジェクトサイト314によって表されているように、異なるレベルのプロジェクト固有情報がデータベース106からアクセスされることが可能である。プロジェクトホームページ312は、それらの1つまたは複数のプロジェクトサイト314へのリンクを提供する。当技術分野で知られているように、リンクとは、ある語、ピクチャ、または情報オブジェクトから他への選択可能な連絡である。リンクの実施態様の1つの非限定的例はハイパーリンクであり、適当なプロトコルおよび言語、例えばそれぞれHTTPおよびHTML、を利用する。リンクによってユーザは、リンクを作動させることによってホームページ312からプロジェクトサイト314にアクセスすることができる。リンクは通常、カーソルコントロール216(図2)および/または入力デバイス214(図2)を用いて、従来のウェブブラウザのような適当なアプリケーションと対話することによって作動する。プロジェクトサイト314にリンクされ、したがってプロジェクトサイト314からアクセス可能な情報の例については以下で説明する。
<自動化されたプロジェクトファイル管理の開始>
図4Aは、本発明の一実施形態による、ネットワークを通じてプロジェクトファイルの自動化された管理を開始するステップを説明するフローチャートである。まず、ステップ402で、個人が、プロジェクト承認を求めて管理側に提出するためのプロジェクト開始フォームを完成させる。図5Aは、オンライン対話的プロジェクト開始フォーム500を通じてプロジェクトを開始する構成のブロック図である。対話的フォームは、HTMLまたはXMLに基づくページであることが可能である。プロジェクト開始者は、ウェブブラウザのようなネットワークインタフェースを通じて、必要な情報を入力する。その非限定的例としては、プロジェクトタイトル502、プロジェクトの説明504、予想されるプロジェクトメンバおよび責任506、全体スケジュール508、および予算510がある。入力された情報はウェブサーバ104を通じてデータベース106に送信され、そこでまず、図4Aのステップ404で、要求されたプロジェクトの承認前のドラフト形式で格納される。さらに、開始者は、プロジェクト認可/承認プロセスに進む前に、ドラフトフォームを再検討することができる。図5Aのデータベース106に描かれている情報のブロックは、図6のプロジェクトサイト600のようなプロジェクトホームページまたはサイトで抽出され提示されることが可能な種々の情報を含む。
図5Aはさらに、設計仕様検証ツール512を含む。これは、設計仕様文書のドラフトを自動的に検証するために使用される。設計仕様検証ツール512は、図22に示されるソフトウェア設計プロセスをサポートするために使用可能である。設計仕様検証ツール512については後で詳細に説明する。
印刷または表示されたプロジェクト開始フォーム550の例を図5Bおよび図5Cに示す。関連する情報見出しは示すが情報は除いてある。対話的プロジェクト開始フォーム500(フォーム550としても例示されている)は、データベース106(図1)のフォーム302(図3)コンポーネントから利用可能であり、一部のデータフィールドの自動入力のためにデータベース106内の他のデータにリンクされる。印刷/表示されたプロジェクト開始フォーム550のフォーマットはフォーム302に関連している。
図4Aに戻って、判定ブロック406で、適当なプロジェクト承認権者が、提案されたプロジェクトを承認したかどうかが判定される。プロジェクトが承認されていない場合、ステップ408で、プロジェクト開始フォームは、プロジェクトが未承認であることを示すようにマークされ、ドラフトとしてデータベース106に格納される。提案されたプロジェクトが承認されると、ステップ410で、プロジェクトにはプロジェクト番号が自動的に割り当てられ、プロジェクトサイト314(図3)のような公式プロジェクトサイトが自動的に作成されて、プロジェクトホームページ312(図3)のようなプロジェクトホームページにリンクされる。さらに、ステップ410で、種々のデータベース106のエントリおよびインデックスページが作成される。ステップ412で、個人プロジェクト参加者に対するウェブサイトが作成され、ステップ414で、適当な公式プロジェクトサイトにリンクされる。さらに、必要なエントリがデータベース106に作成され、プロジェクト参加者によって利用される適当なスケルトンファイルにリンクされる。プロジェクト参加者は、取組中すなわちドラフトの文書を自己の個人サイトにリンクすることが可能であり、それによりその文書は、プロジェクトホームページ、すなわちプロジェクトホームページ312からのリンクの適当な連鎖を通じて、権限のあるプロジェクトメンバに利用可能となる。アクセス許可は、文書管理ポリシーに従って制限され管理される。いくつかの実施形態では、プロジェクトに関連するプロジェクトファイルのディレクトリが作成され、データベース106およびデータベース110(図1)に格納され、(図6に示すように)プロジェクトサイトにリンクされる。適当であれば、サブディレクトリおよびインデックスが作成され、プロジェクトサイト上の適当なディレクトリエントリにリンクされることが可能である。
<検査プロセス−クライアント>
図4Bは、一実施形態による、個人(クライアント)が文書検査プロセスに関して実行するステップを説明するフローチャートである。ステップ452で、文書、記録、またはレポート(参考資料)が個人プロジェクト参加者によって生成される。ステップ454の判定ブロックで、参考資料が、品質を保証するために検査を必要とする種類であるかどうかが判定される。例えば、技術情報および記録のような一部の情報は、品質検査を必要としないかもしれない。この場合、ステップ456で、当該個人は文書の登録を要求し、それによりフローはR1に進み、これは図4Cに示されている。参考資料の検査が品質を保証するために必要であるとみなされる場合、ステップ458で、当該個人はその検査を手配する。ステップ460で、検査が要求され、それにより、検査はプロジェクトファイル管理システムに登録され、本明細書で説明されるプロセスによって管理されることになる。この場合、フローはR2に進み、これは図4Dに示されている。
<検査プロセス−サーバ>
図4Cは、図4BのR1から続くサーバ側プロセスを説明するフローチャートである。この場合、参考資料は検査されず、文書登録が要求されている。ステップ472で、参考資料が、管理された環境下でデータベース106(図1)にコピーされ、その資料を作成した個人がそれをもはや修正することができないようにされる。別法として、資料は安全なファイルシステムにコピーされ、資料への参照がデータベース106に保存される。ステップ474で、情報エントリ、例えば、文書参照番号、タイトル、日付、および発信者が、適当なインデックスページ(図7Aの700参照)に作成される。ステップ476で、インデックスページから適当な文書および対応する文書フィールドへのリンクが作成される。
図4Dは、図4BのR2から続くサーバ側プロセスを説明するフローチャートである。この場合、参考資料の検査が要求されている。一般に、本明細書で説明されるファイル管理プロセスを具現化するファイル管理システムは、要求された検査がスケジュール通りに完了しているかどうか、したがって検査結果が利用可能であるかどうかを監視する。ステップ482で、検査結果オブジェクト(図7Bの774参照)が参考資料にリンクされる。判定ブロック484で、検査結果が利用可能であるかどうかが定期的に判定される。検査結果がまだ利用可能でない場合、ステップ485で、プロセスは実質的にある一定期間経過するのを待機した後、検査結果を期待してブロック484に戻る。検査結果が利用可能になると、それが分析される。判定ブロック486で、検査結果が分析され、参考資料が、関連する検査者によって受理されるものと表示されたかどうかが判定される。資料は受理されないと判定された場合、ステップ488で、資料は再検査を必要とするか、それとも条件付きで受理されるか(受理とは異なる処分)が判定される。資料が再検査を必要とする場合、データベースがそのように更新される。この時点で、プロセスはブロック484に戻り、追加の検査結果が利用可能であるかどうかを判定してもよい。資料が条件付きで受理された場合、フローは判定ブロック490に進み、資料は、検査レポートからの指定された条件を満たすように修正されているかどうか、および訂正が検査長によって認定されているかどうかを判定するためにチェックされる。資料がまだ検査長によって認定されていない場合、ステップ491で、プロセスはある期間待機してブロック490に戻る。検査長による認定なしに所定期間が経過した後、文書がまだ認定されていないことを警告する電子メールが文書作成者および検査長に送られる。
判定ブロック490で、資料が検査長によって認定されたと判定されると、プロセスはステップ492に進む。これは、参考資料がブロック486で受理された場合に実行されるのと同じステップである。ステップ492で、現在の検査資料が、管理された環境下でデータベース106(図1)にコピーされ、その資料を作成した個人がそれをもはや修正することができないようにされる。ステップ494で、情報エントリ、例えば、文書参照番号、タイトル、日付、および発信者が、適当なインデックスページ(図7Aの700参照)に作成される。ステップ496で、インデックスページから適当な文書および対応する文書フィールドへのリンクが作成される。
<プロジェクトウェブページ>
図6は、プロジェクトサイト600の例を示している。これは、特定プロジェクト(この場合、プロジェクトサイト600の最初に示されているように、J06プロジェクト)に固有の情報のいくつかの他のページへのリンク(下線付きのエンティティ)を有する。リンクには、以下のものには限定されないが、公式プロジェクト文書および記録のディレクトリ602;プロジェクトソースコードリンク604;プロジェクト要件リンク606;プロジェクトスケジュールリンク608;1つまたは複数の現行タスクリストリンク610ならびにプロジェクトに取り組んでいる個人、すなわち技術者/開発者に対するメンバウェブサイトリンク612がある。
ディレクトリ602は、プロジェクトに関連する種々の公式文書および記録のインデックスへのリンクを提示する。そのような文書および記録の非限定的例として、プロジェクト文書、検査結果、会議記録、変更、エラー追跡等の記録がある。
プロジェクトスケジュールリンク608は、集約管理タスクスケジュールへのアクセスを提供する。これは図14に関連して例示され説明される。現行タスクリストリンク610は、プロジェクトについて各個人の割り当てられたタスクのタスクスケジュールへのアクセスを提供する。これは図12に関連して例示され説明される。さらに、現行タスクリストリンク610を通じてアクセスされる個人タスクスケジュールと、プロジェクトスケジュールリンク608を通じてアクセスされる集約管理タスクスケジュールとの間の関係については、以下の「管理スケジュール生成」および「プロジェクトスケジュールの更新」と題する箇所で詳細に説明する。最後に、メンバウェブサイトリンク612は、1つまたは複数の個人ウェブサイトへのアクセスを提供する。そのウェブサイトの作成については上記で図4のステップ408に関連して説明されている。個人ウェブサイトは、個人タスクリスト(図12参照)へのアクセスとともに、その個人による取組中のドラフト文書へのアクセスを提供する。
図7Aは、インデックス700の例を示している。これは、「プロジェクト文書のインデックス」である。インデックス700、およびディレクトリ602にリンクされるいかなる他のインデックスも、データベース106(図1)に格納されている実際のファイルへのリンクを含む。図7Bは、例示的インデックスウェブページ750、プロジェクトデータベース106、および、データベース106によって管理される電子的または物理的ファイル/オブジェクト770の間のリンク関係を示している。参照番号752、文書タイトル754、および改訂番号756は同一オブジェクト、すなわち公式文書772にリンクされている。有効日758は、その文書が有効になるか、または改訂番号756に対応して最後に改訂された日付に対応する。検査760フィールドは、その文書に対して実行された検査に対応する検査結果774にリンクされている。ステータス762は、インデックスされている文書の現在のステータス、すなわち、その文書が適当な当事者からの認可を依然として待機しているのかどうかを提示する。ステータス762フィールドは、認可履歴オブジェクト776にリンクされている。インデックスウェブページ750に含まれる情報は、データベース106の管理下で、ウェブブラウザインタフェースを通じてクライアントに対して表示可能である。
<ネットワークを通じてプロジェクトファイルを管理する方法>
図8は、本発明の一態様による、ネットワークを通じてプロジェクトファイルを管理するステップを説明するフローチャートである。ステップ802で、プロジェクト開始情報が受信される。これは好ましくは、少なくともプロジェクトの記述およびプロジェクトタスクを実行する個人の記述を含む。ステップ802で受信される情報の非限定的例は、図5Bおよび図5Cのプロジェクト開始フォーム550に示されている。ステップ804で、プロジェクトが適当なエンティティによって承認されているかどうかが判定される。ステップ806で、プロジェクトが承認されている場合、プロジェクト開始情報が、プロジェクトが承認されていることを示すようにして、データベース106(図1および図3)のようなデータベースに格納される。
図8のステップ808で、個人ウェブサイト、またはページが、プロジェクトに取り組んでいる各個人ごとに作成される。種々の情報および業務成果文書(例えば、以下のものには限定されないが、ドラフトファイルおよびタスクスケジュール)が、個人ウェブサイトにリンクされ得る。この情報へのアクセスは通常は規制され、権限のある個人がネットワークを通じて利用可能である。ステップ810で、個人サイトは、プロジェクトサイト600のメンバウェブサイト612(図6)によって例示されているように、プロジェクトサイトにリンクされる。ステップ812で、プロジェクトに関連するファイルのディレクトリが作成される。これは、ステップ814でデータベースに格納される。ステップ816で、ファイルのディレクトリは、図6に関連してディレクトリ602によって例示され関連する本文で説明したように、プロジェクトサイトにリンクされる。
図8のステップ818で、ドラフトファイルが完成しているかどうかが判定される。その完成は、検査に合格したこととして定義される。完成ファイルを定義するこの基準は、少なくとも以下の目的に役立つ。すなわち、この基準は、プロジェクトに関係する、ファイルの作成者でない2人以上の人による検査の結果として、ファイルの品質および完全性を保証する。またこの基準は、2値の完了ステータスを提供することによって、タスクが完了しているかどうかを明確にする。すなわち、タスクは、完了しているか否かとして記録され、ある割合の完了の記録を許容しない。なお、ステップ818は、図4Dの検査プロセスに関係していることに留意されたい。
ドラフトファイルが完成すると、そのファイルのステータスがドラフトから公式に変更され、これは、ステップ820で、そのステータスを示すようにデータベース106に格納される。別法として、物理ファイルが安全なファイルシステムにコピーされ、そのファイルへの参照がデータベース106に格納されてもよい。最後に、ステップ822で、公式ファイルがプロジェクトサイトにリンクされる。図6および図7に関連して例示したように、公式ファイルは、インデックス700のようなインデックスへのリンクを通じてプロジェクトサイトに間接的にリンクされてもよい。その場合、インデックスそのものはディレクトリ602のようなディレクトリにリンクされ、そのディレクトリが、プロジェクトサイト600のようなプロジェクトサイトに提示される。
図9は、図8の方法の一実施形態を示している。この実施形態では、個人タスクスケジュールが自動的に管理される。ステップ902で、1つまたは複数のタスクスケジュールが、プロジェクトに取り組んでいる個人から受信される。ステップ904で、個人タスクスケジュールがデータベース106(図1)に格納される。ステップ906および908は、いかなる順序で完了してもよいが、ステップ906で、個人タスクスケジュールを、図6の現行タスクリストリンク610を通じてアクセス可能な関連する個人のサイトに自動的にリンクすること、およびステップ908で、個人タスクスケジュールをプロジェクトサイトに自動的にリンクすることを含む。プロジェクトサイトリンクは、図6に関連して現行タスクリストリンク610として図示され、関連する本文で説明されている。
<管理スケジュール生成>
図10は、図8の方法のもう1つの実施形態を示している。この実施形態では、総括管理スケジュールが自動的に管理される。ステップ1002で、1つまたは複数のタスクスケジュールが、プロジェクトに取り組んでいる個人から受信される。ステップ1004で、同一プロジェクトに関連する管理スケジュールが、個人タスクスケジュールに基づいて更新される。個人タスクスケジュールを管理タスクスケジュールにリンクさせることの利点は、管理タスクスケジュールを、個人タスクスケジュールへの変更時に自動的に更新することができることである。ステップ1006で、管理タスクスケジュールが、図6に関連してプロジェクトスケジュールリンク608として図示され関連する本文で説明されているように、プロジェクトサイトにリンクされる。
図11は、本発明の一態様による、プロジェクトスケジュールを自動的に更新することによってプロジェクトスケジュールを管理するために使用されるリンク関連づけを説明するブロック図である。この例では、複数のタスクリスト1102、1104、および1106(個人タスクリスト/スケジュールの例については図12参照)がシステムマネージャ1110にリンクされ、システムマネージャ1110は本明細書に説明されるプロジェクトスケジュールを管理する方法を具現化している。タスクリスト1102〜1106は、プロジェクトに取り組んでいる個人ごとにあり、各タスクリストは通常は別々の個人に関連するが、本発明の実施はそのようには限定されない。プロジェクトスケジュール1112(または「管理スケジュール」)は、個人タスクリスト1102〜1106の集約であり、通常は、個人タスクスケジュールのような詳細なレベルでのタスク定義を含まない。したがって、プロジェクトスケジュール1112は、個人タスクリスト1102、1104、および1106を総括している。例えば、図14は、管理スケジュール1400の例を示している。これについては以下でさらに詳細に説明する。
個人タスクスケジュール内の各タスクの完了は検査フォームにリンクされ、その完成バージョンがデータベース106(図1)に格納される。例えば、図13は、印刷または表示された検査フォーム1300の例を示している。これについては以下でさらに詳細に説明する。個人タスク成果物に関して検査権限を有する検査チームによる肯定的処分があると、関連するタスクは完了したとみなされる。一実施形態では、各タスクのステータスは、タスクが一部完了したとは記録され得ないという意味で2値変数である。例えば、本明細書で説明されるプロジェクトファイル管理技法によれば、タスクは完了しているか完了していないかのいずれかであり、ある割合が完了しているということはない。したがって、権限のあるタスク検査チームがタスク成果物の検査を完了し、完成した検査フォームをデータベース106に格納した後にのみ、そのタスク成果物は「受理」または同様の処分を受ける。いくつかの実施形態では、個人タスクスケジュールは、完成した検査フォームの結果に基づいて自動的に更新される。さらに、個人タスクリスト1102、1104、および1106が更新されると、プロジェクトスケジュール1112が、更新された個人タスクリスト1102、1104、および1106に基づいて、(例えば図21に関連して説明されるように)続いて更新される。
図12は、個人「TM」の個人タスクスケジュール1200の例を示している。図13は、印刷または表示されたオンライン検査フォーム1300の例を示している。一実施形態では、個人タスクスケジュール1200および検査フォーム1300は、図14に示されているような管理スケジュール1400を自動的に生成または更新するために使用されるステータスデータを提供する。このプロセスは、図11に関連して説明したリンクによって容易になる。(フォーム1300のような)検査フォームが完成すると、(タスクスケジュール1200のような)個人タスクスケジュールが、完成した検査フォームに従って更新され、(スケジュール1400のような)管理スケジュールがその結果として更新される。
図13を参照すると、文書参照1302が、関係する個人タスクスケジュール内の同一タスクにマッピングされている。なお、文書参照1302は、文書のみを参照しているのではなく、より包括的に、個人タスクの成果物を参照していることに留意されたい。さらに、結果参照1304は、図12のスケジュール1200のような、関係する個人タスクスケジュールの「実際の終了(Actual End)」列1208(図12)にマッピングされている。「実際の終了」列1208に自動的に入力される日付は、特定タスクに対して要求されるすべての検査フォーム(すなわち、結果参照1304における「受理(Accept)」)についての最終受理完了日に基づいて自動的に決定される。本方法は、列1208の「実際の終了」日を決定するために、すべての検査が完了した時を判定すること、およびすべての完成した検査フォームが結果参照1304に「受理」を示しているかどうかを判定することのためのロジックを含む。別法として、検査結果が条件付き受理である場合、図4Dのステップ490に示されているように、検査長は、すべての訂正が成果物に含まれていることを通知しなければならない。
図12および図14を参照すると、タスクスケジュール1200のいくつかのセルが管理スケジュール1400にマッピングされている。例えば、タスクスケジュール1200のセル1202は、特定タスクの最も早い「計画された開始(Planned Start)」に関連しており、管理スケジュール1400のセル1402にマッピングされている。同様に、セル1204は、特定タスクの「計画された終了(Planned End)」に関連しており、セル1404にマッピングされている。したがって、セル1202または1204のデータが追加、改訂、または削除された場合、セル1402または1404がそれに応じて自動的に改訂される。セル1206および1406も、前述のセルと同様に相互に関係している。他にもセル1202と同様に、特定の個人(この場合は「TM」)について、関連する管理スケジュールセルにマッピングされている多くのタスクスケジュールセルがあり、それにより、本発明の一態様による高水準の管理スケジュール1400の自動更新を提供している。
<プロジェクトスケジュールの更新>
図15は、本発明の一態様による、プロジェクトのスケジュールを生成および/または更新するステップを説明するフローチャートである。ステップ1502で、検査データを含む完成した検査フォームがネットワークを通じてデータベース106(図1)から受信される。完成した検査フォームは、タスク成果物を検査するために開かれる検査チーム会議の結果に対応し、それにより、完成した検査フォームは検査に基づく情報を含む。検査フォーム1300の例は再び図13を参照されたい。
ステップ1504で、個人のタスクスケジュール(すなわち、その個人はそのタスクを完了する責任がある)が、受信された検査フォームに基づいて自動的に更新される。ポリシーによれば、検査結果レポートが完了を示していなければ、あるいは図4Dに示したように検査結果が条件付き受理を示している場合には検査長が成果物への訂正を認定しなければ、プロジェクトタスクは完了しない。ステップ1506で、図14に例示したような、プロジェクトに関連するすべての個人タスクスケジュールの集約である管理スケジュールが、ステップ1504からの更新された個人タスクスケジュールに基づいて自動的に更新される。
一実施形態では、個人スケジュールおよび管理スケジュールは、プロジェクトタスクが部分的には完了し得ないことを規定するポリシーによって支配され、スケジュールの自動更新はこのポリシーに従って実行される。
ステップ1508で、完成したプロジェクトタスク成果物がデータベース106(図1および図3)に格納され、その成果物へのアクセスは文書管理ポリシーに従って規制される。一実施形態では、完成したタスク成果物は、ハイパーリンクのような適当なリンクを通じて、インターネットまたは企業ネットワークのようなパケット方式のネットワークによりアクセス可能である。
<タスク階層>
本発明の一実施形態によれば、開発プロジェクトを管理するためにタスク階層が使用される。タスク階層は、開発プロジェクトの完了に関連するタスク間の関係を表す。一実施形態では、この関係は、親タスクの完了が1つまたは複数の下位レベルの子タスクの完了に依存するような、階層内のタスク間の依存関係を表す。したがって、この依存関係は、階層内のメンバタスクへの変更が階層内の他のメンバタスクに対して、もし影響があればどのように影響するかを指定する。タスク階層の使用により、下位レベルのタスクスケジュールへの変更に応じてプロジェクトタスクスケジュールを自動的に更新することが容易になる。
図16は、本発明の一実施形態による、開発プロジェクトを管理するために使用可能なタスク階層を表している。図16に示されたタスク階層は、3レベルのタスクを含む。これらはレベル1タスク、特定のレベル1タスクを完了するために完了することが必要とされるレベル2タスク、および特定のレベル2タスクを完了するために完了することが必要とされるレベル3タスクを含む。タスクの階層のレベル数は図16に示されるような3レベルには限定されず、開発プロジェクトの主要タスクおよび関連するサブタスク(または詳細タスク)を定義する必要に応じた数のレベルを含み得る。
なお、いかなる特定レベルのタスクも、関連するサブタスクを有することが必要なわけではないことに留意されたい。例えば、タスク1602(設計文書ガイドライン)およびタスク1604(J07プロジェクトプラン)は、レベル1タスクとして定義されているが、いかなる関連する下位レベルタスクを有するようにも定義されていない。さらに、タスク1608としてまとめて識別されているレベル2タスク(共通、Send Service、およびSend Timer)は、タスク1608を完了するために完了を必要とするいかなる関連するレベル3タスクを有するようにも定義されていない。図16に示されているように、タスク1602、1604、1606、および1610はレベル1タスク(主要タスクとも呼ばれる)である。タスク1608としてまとめて識別されている3つのタスクは、関連するレベル1タスク、すなわちタスク1606(パッケージ設計)を完了するために完了を必要とするレベル2タスクである。さらに、タスク1610(クラス仕様)はレベル1タスクであり、これは2つの関連するレベル2タスク、1612(共通)および1614(Send Timer)を有する。さらに、タスク1612は2つの関連するレベル3タスク、1616(CBaseService)および1618(CBaseSystemRegistry)を有し、タスク1614は2つの関連するレベル3タスク、1620(CSendTimer)および1622(CSendSystemRegistry)を有する。図16に示されているタスクは、開発プロジェクトの完了に関係するタスクの階層を説明するための、単なる例示目的のものである。したがって、本発明の実施は、図示されているタスクに限定されない。
<タスクデータ構造体>
図17は、本発明の一実施形態によるタスクデータ構造体1700を図式的に説明する図である。各タスクに関連するデータは、ある形態のコンピュータメモリ、例えば、限定はされないが、データベース106に関連するメモリに格納される。タスクデータ構造体1700は、オブジェクト指向プログラミング技法を用いて実装されてもよい。それによりタスクデータ構造体1700はオブジェクトクラスとして定義され、各タスクは、当該オブジェクトの状態である対応するデータを有するオブジェクトとしてインスタンス化される。本発明の実施または実施態様は、オブジェクト指向プログラミング技法の使用に限定されず、当技術分野で既知の他のコンピュータソフトウェアプログラミング技法も、本明細書で説明される技法を実施するために使用可能である。
図17は、オブジェクトクラスとして実装されたタスクデータ構造体1700を表している。ここで属性としては、以下のものには限定されないが、タスク名1702、タスクスケジュール1704、下位レベル参照のベクタ1706、親参照1708、および履歴のベクタ1710がある。タスク名1702は単にタスクに割り当てられた名前であり、タスクオブジェクトを識別するために使用される。タスク名1702の例は、「CSendTimer」(図16の参照1620)である。
タスクスケジュール1704は、タスクの履行に関係する日付を含む。一実施形態では、日付は「計画日」、「計画された開始」日、「計画された終了」日、「実際の開始」日、および「実際の終了」日を含む。計画日は、他のタスクスケジュール日付のいずれかが最後に入力または更新された日付を示す。一実施形態では、現在の日付(すなわち、スケジュールへの入力または変更がなされた日付)が、システムクロックから自動的に取得され、適当な計画日フィールドに入力される。他のタスクスケジュール日付、すなわち、計画された日付、および実際の日付の内容は、改めて説明するまでもない。これらのフィールドの操作は、図20に示されそれに関連して説明されるオンラインタスクスケジューラフォームを用いることにより実行され得る。
タスクスケジュール1704の実装は複数の形態をとることが可能であり、それらは本発明の範囲内に入る。例えば、限定されないが、タスクスケジュール1704は、プログラミングオブジェクトのベクタ、マップ、リスト、または構造体クラスを用いて実装され得る。
下位レベル参照のベクタ1706は、タスクの階層構造において特定タスクから下位レベルタスクへの参照を提供するために使用されるプログラミングツールである。例えば、タスク1612(図16)のようなレベル2タスクは、それに関連する下位レベルタスク、すなわち子タスクであるタスク1616(図16)および1618(図16)を指す参照のベクタを有する。「ベクタ」という用語は、C++プログラミング言語に関連する標準テンプレートライブラリのことであり、項目の1次元のランダムアクセスシーケンスの実装を提供する。本発明の実施は、あるタスクオブジェクトから他のタスクオブジェクトへの参照を提供する際のベクタの使用に限定されず、他の参照技法も実施可能であり、やはり本発明の範囲内に入る。
親参照1708は、タスクの階層構造において特定タスクから関連する上位レベルタスク、すなわち親タスクへの参照を提供するために使用される。例えば、タスク1612(図16)のようなレベル2タスクは、それに関連する親タスク1610への親参照を有する。親参照1708は、いかなる特定の形態にも限定されず、例えば、タスクからその親タスクへの単純なポインタの形態をとってもよい。参照のベクタ1706および親参照1708の使用については、図18に関連してさらに詳細に説明する。
履歴のベクタ1710は、特定タスクから、その特定タスクに関係する履歴データへの参照を提供する。例えば、履歴のベクタ1710は、特定タスクに関連する履歴日付を表すデータの位置への単純なポインタとして実装されることが可能である。したがって、タスクスケジュールは、図12の要素1210としてまとめて参照されているように、現在の日付とともに、計画された開始、計画された終了、実際の開始、および実際の終了のような、日付フィールドのいずれかについての履歴(すなわち、「古くなった(old)」、または「使われなくなった(obsolete)」)日付を含み得る。この特徴は、タスクスケジュールを見る人に、スケジュールの抜けや進捗の増分的規模に関する情報を提供する。
図18は、本発明の一実施形態による、タスクオブジェクト間の関係を視覚的に表すタスクデータ構造体の階層関係を説明する図である。図18は、レベル1タスクオブジェクト1800;レベル2タスクオブジェクト1810、1820、および1830;ならびにレベル3タスクオブジェクト1840および1850を表している。各オブジェクトは、名前、スケジュール、子参照、親参照、および履歴を含む、図17に示されたデータ構造を有するように表されている。一部のデータフィールドはヌル値を有し、関連データがないフィールドを表している。そのようなフィールドとしては、例えば、タスクオブジェクト1800の親参照フィールド1804(親がないこと、したがって親参照がないことを示している)、タスクオブジェクト1810の子参照フィールド1814(子がないこと、したがって子参照がないことを示している)、およびタスクオブジェクト1840の子参照フィールド1844(子がないこと、したがって子参照がないことを示している)がある。
図18は、開発プロジェクトに対する複数のタスクオブジェクト間の関係および相互作用を示しており、以下の例は、オブジェクト相互作用を説明することを助けるために使用される。例えば、タスクオブジェクト1840のスケジュールデータに更新が行われた場合、本明細書で説明される自動タスクスケジュール更新技法によれば、タスクオブジェクト1840の親参照1846が、オブジェクト1840の親タスクを識別するためにアクセスされる。なお、親参照1846(一般には、図17の親参照1708)はベクタとして実装されてもよく、したがってタスクデータ構造体1700は、タスクが複数の親タスクを有し得るようなタスクの階層を可能にする。本例では、タスクオブジェクト1840は、親参照1846で参照される単一の親タスクを有し、これはタスクオブジェクト1820を参照しており、これは完了のためにタスクオブジェクト1840に関連するタスクに依存する。親タスクが識別されると、それが、その子参照を識別するためにアクセスされる。例えば、タスクオブジェクト1820の下位レベル参照のベクタはタスクオブジェクト1820の2つの子タスク、すなわちタスクオブジェクト1840およびタスクオブジェクト1850を指している。子タスクが識別されると、子タスクオブジェクトのスケジュールデータがアクセスされ、親オブジェクト1820のスケジュール日付のいずれかが、子オブジェクト1840のスケジュールデータに対する変更の結果として更新を必要とするかどうかを判定するために解析される。例えば、タスクオブジェクト1840によって表されるタスクの実際の終了日が、兄弟タスクオブジェクト1850によって表される実際の終了日より後となるように更新された場合、親タスクオブジェクト1820は、親タスクの現在の実際の終了日を反映するように更新を要求し、タスクオブジェクト1820のスケジュールデータがそれに応じて更新される。
さらに、親オブジェクト1820の親参照が、タスクオブジェクト1820の親があればそれを識別するためにアクセスされ、次の上位レベルにある親タスクオブジェクトのスケジュールデータが、タスクオブジェクト1840のスケジュールデータに対する変更およびそれにより生じるオブジェクト1820への変更の結果として更新を必要とするかどうかについて判定をすることができる。例えば、オブジェクト1820の親参照はタスクオブジェクト1800を指している。タスクオブジェクト1800が、その子参照を識別するためにアクセスされる。例えば、タスクオブジェクト1800の下位レベル参照のベクタは、タスクオブジェクト1800の3つの子タスク、すなわちタスクオブジェクト1810、タスクオブジェクト1820、およびタスクオブジェクト1830を指している。子タスクが識別されると、子タスクオブジェクト(すなわち、1810、1820、および1830)のスケジュールデータがアクセスされ、それらの親オブジェクト1800のスケジュール日付のいずれかが、孫オブジェクト1840のスケジュールデータに対する変更の結果として更新を必要としているかどうかを判定するために解析される。このプロセスは、最上位レベル(レベル1)に到達し、最上位レベルにあるタスクスケジュールに対する必要な更新が判定されるまで、タスク階層のすべての必要なレベルに沿って実行される。本発明の一実施形態による、タスクスケジュールデータ構造体を更新する方法は、タスクスケジュール日付の解析をさらに詳細に例示するが、これは図21で説明される。
<タスク管理ツール>
図19は、特定のプロジェクト参加者に特定のタスクを割り当てるために本発明の一実施形態で実施される、オンラインタスク割当てフォーム1900の例を示している。タスク割当てフォーム1900は、「タスク(Tasks)」列1902および「担当者(Assigned To)」列1904を含む。列1902および1904は、タスク1612の「共通」(図16)のようなタスク名を列1902のフィールドに入力するため、およびプロジェクト参加者名(またはその他の識別データ、例えば従業員番号)を列1904のフィールドに入力するためのデータ入力フィールドを含む。
タスク割当てフォーム1900はさらに、「主要タスクリスト(Major Task List)」メニュー1906および「タスクレベル(Task Level)」メニュー1908のようなプルダウンメニューを含む。場合によっては、特定のタスクが、例えば会社のポリシーまたは開発プロジェクトの性質によって、開発プロジェクトに必要であるかもしれない。このような場合、メニュー1906は、このような必要なタスクを含むようにプログラムされることが可能である。その結果として、プルダウンメニュー1906は、オンラインタスク割当てフォーム1900を通じてプロジェクトタスクを割り当てる際に、プロジェクト参加者、例えば技術管理者またはプロジェクトリーダによって利用され得る。さらに、主要な、すなわち上位レベルのタスクがプロジェクトのために識別されると、それらのタスクは、アドミニストレータまたはプロジェクト管理者のような者によってメニュー1906に追加され得る。一実施態様では、メニュー1906は、レベル1タスクとして定義される主要タスクのみを含むが、本発明はそのようには限定されない。「タスクレベル」プルダウンメニュー1908は、システムに入力されオンラインタスク割当てフォーム1900を通じて割り当てられるタスクにレベル(例えば図16のレベル1〜3)を割り当てるために、管理側プロジェクト参加者によって利用され得る。
図20は、タスクスケジュールおよび階層情報を入力するために本発明の一実施形態で実施される、オンライン個人タスクスケジューラフォーム2000の例を示している。タスクスケジューラフォーム2000は、タスクおよび関連する日付を入力するために使用されるとともに、システムにすでに入力されているタスクを閲覧するために使用されるインタフェースである。タスクスケジューラフォーム2000は、「タスク(Tasks)」列2002を含む。これは、タスク1612の「共通」(図16)のようなタスク名を列2002のフィールドに入力するためのデータ入力フィールドを含む。一実施形態によれば、データベース106(図1)のようなデータベースに入力されるタスクが、タスクスケジューラフォーム2000に提示される。さらに、タスクスケジューラフォーム2000に提示されるタスクは、タスク階層におけるそれらのタスクの位置を表すように提示される。例えば、列2004は、「+」を表示することができる。これは、コンピュータのマウス等のポインティングデバイスでクリックすることが可能であり、それにより、関連する下位レベルタスクが、好ましくはその親、すなわち依存するタスクからインデントされて表示される。例えば、列2002において「パッケージ設計」タスク1606(図16)の隣の「+」をクリックすると、それに関係する下位レベルタスク、すなわち、タスク1608としてまとめて識別されている「共通」、「SendService」、および「Send Timer」タスク(図16)が表示されることになる。さらに、オンライン個人タスクスケジューラフォーム2000を通じて、新たな下位レベルタスクをタスク階層のこの特定ステージに直接入力することが可能であり、したがってそのタスクは現在表示されている親タスク(例えばパッケージ設計)に自動的に関連づけられる。一実施形態によれば、この関連づけは依存関係であり、それにより、タスクはその完了のために1つまたは複数の他のタスクの完了に依存する。レベル2タスクは、例えばインデントにより、タスク階層内の他のタスクとの関係で、階層内のそれらの位置を視覚的に描写するように提示される。
タスクスケジューラフォーム2000はさらに、「主要タスクリスト(Major Task List)」メニュー2006および「タスクレベル(Task Level)」メニュー2008であるプルダウンメニューを含む。これらのプルダウンメニューは、主要タスクを閲覧および/または入力するため(メニュー2006)、ならびに階層的タスクレベルを指定するため(メニュー2008)に、図19のメニュー1906および1908と同様に使用される。
タスクスケジューラフォーム2000はさらに、開発プロジェクトタスクの履行および完了に関係するいくつかの列を含む。これらは、タスクのそれぞれのスケジュール日付の入力および閲覧のためのデータ入力フィールドを含む。日付列としては、「計画された日付(Planned date)」列2010(図12の「識別された日付(Identified Date)」および図17の「計画日」と同等)、「計画された開始(Planned Start)」列2012、「計画された終了(Planned End)」列2014、「実際の開始(Actual Start)」列2016、および「実際の終了(Actual End)」列2018があり、これらはタスクオブジェクトのタスクスケジュール1704(図17)データ要素に対応する。
オンラインタスクスケジューラフォーム2000の使用は、タスクを定義するタスクオブジェクトに対して作用する。いかなるタスクについても、列2002および2010〜2018のいずれかにデータを入力することは、その特定タスクを定義するタスクオブジェクトの状態を作成または変更する。例えば、列2002内のデータを入力または変更することは、タスク名1702属性(図17)の状態に影響し、列2010〜2018内のデータを入力または変更することは、タスクスケジュール1704属性(図17)、およびおそらくは履歴のベクタ1710属性(図17)の状態に影響し、特定タスクに関連してのメニュー2008の使用は、下位レベル参照のベクタ1706(図17)および親参照1708の属性(図17)の状態に影響する。
<タスクスケジュールデータを更新する方法>
図21は、本発明の一実施形態による、タスクスケジュールデータ構造体を更新するプロセスを説明するフローチャートである。図示されているプロセスは、例えば、オンラインタスクスケジューラフォーム2000を通じて特定の開発プロジェクトに対するタスク階層のいずれかのレベルにあるデータを入力または変更するというようなイベントによって、またはタスクの完了によって、トリガされる。このトリガイベントは、親参照1708(図17)を用いて、親タスクに対する更新プロセス(図21)をトリガする。図示されているプロセスは、タスク階層のすべてのレベルで動作可能であるが、所与のタスクの視点から、(図示のように)タスクを更新するプロセスはタスク階層を「下方に見ていき」、当該所与のタスクに対する更新を判定し実施するように構成されている。
したがって、所与のタスクに対して、(図14の管理スケジュール1400のような)プロジェクトタスクスケジュールに対する更新プロセスをトリガするアクションがあると、ステップ2102で、所与のタスクが(上記のタスク階層に関して)下位レベルタスク、すなわち子タスクを有するかどうかが判定される。下位レベルタスクが存在しない場合、ステップ2104で、本方法はアクションなしで復帰する。例えば、関連するレベル3タスクのないレベル2タスクが処理されている場合、ステップ2102の問合せはNOとなり、処理は呼出し側プロセスに復帰する。一実施形態では、プロセスは、例えば、図20のタスクスケジューラフォーム2000の使用により変更されたトリガ側タスクに復帰する。
ステップ2102の応答がYESである場合、すなわち、所与のタスクが、定義されたタスク階層において下位レベルタスクを有している場合、ステップ2106で、トリガアクションが下位レベルタスクの追加であったかどうかが判定される。ステップ2106に対する応答がNOである場合、ステップ2108で、トリガアクションが、下位レベルタスクのタスクスケジュール1704データ(図17)の「計画された」日付(すなわち、計画された開始または計画された終了)に対する変更であったかどうかが判定される。ステップ2108に対する応答がNOである場合、ステップ2110で、実際の開始日が所与のタスクに対して更新されているかどうかが判定される。ステップ2110に対する応答がNOである場合、ステップ2112で、すべての下位レベルタスクが考慮されたかどうかが判定される。ステップ2112に対する応答がNOである場合、本方法はステップ2114で開始点に復帰する。
ステップ2112に対する応答がYESである場合、ステップ2126で、下位レベルタスクから最終の実際の終了日が取得され、所与のタスクのデータ構造体に格納される。例えば、所与のタスクの下位レベル参照のベクタ1706(図17)が、所与のタスクのすべての子を識別するためにアクセスされる。ステップ2126に従って、各子タスク(ブロック2126で下位レベルタスクとして参照される)のタスクスケジュール1704(図17)が、それらのタスクの間で最終の実際の終了日を判定するためにアクセスされ、これはその後所与のタスクのタスクスケジュール1704内で参照される。こうして、トリガ側タスクのタスクスケジュール1704に対してなされた変更が、必要であれば、所与のタスクのタスクスケジュール1704内に「ロールアップ」される。トリガ側タスクに対する変更の結果、そのタスクがその兄弟タスク(すなわち、同一階層レベルにあり、同一親タスクを有するタスク)のうちの最終の実際の終了日を有することにならない場合、所与のタスクスケジュールに対する変更は不要である。ステップ2126が完了するとすぐに、ステップ2114で、プロセスが呼出し側プロセスに復帰する。一実施形態では、ステップ2114は、タスクスケジューラフォーム2000(図20)で操作された子タスクの呼出し側プロセスに復帰する。
ステップ2110に戻って、ステップ2110に対する応答がYESである場合(すなわち、下位レベルタスクの実際の開始日が更新され、これがトリガイベントである場合)、ステップ2124で、所与のタスクの下位レベルタスクから最初の実際の開始日が取得され、所与のタスクのデータ構造体に格納される。ステップ2124に従って、各下位レベルタスクのタスクスケジュール1704(図17)が、それらのタスクの間で最初の実際の開始日を判定するためにアクセスされ、これはその後所与のタスクのタスクスケジュール1704内で参照される。こうして、トリガ側子タスクのタスクスケジュール1704に対してなされた変更が、必要であれば、所与のタスクのタスクスケジュール1704内にロールアップされる。トリガ側タスクに対する変更の結果、そのタスクが最初の実際の開始日を有することにならない場合、所与のタスクスケジュールに対する変更は不要である。ステップ2124が完了するとすぐに、ステップ2114で、プロセスは呼出し側プロセスに復帰する。
ステップ2108に戻って、ステップ2108に対する応答がYESである場合(すなわち、下位レベルタスクの計画された開始日または終了日が更新され、これがトリガ側イベントである場合)、プロセスはステップ2116に進み、これにより、現在のデータが所与のタスクの履歴のベクタ1710(図17)に移動される。
ステップ2106に戻って、ステップ2106の応答がYESである場合(すなわち、下位レベルタスクが追加され、所与のタスクに関連づけられた場合)、ステップ2116で、現在のデータが所与のタスクの履歴のベクタ1710(図17)に移動される。ステップ2118で、現在の日付が、所与のタスクのタスクスケジュール1704(図17)における計画日として使用される。さらに、トリガ側タスクに対する改訂が、トリガ側タスクの別の関連する親タスクに対する改訂を必要とする場合、現在の日付は、当該別の親のタスクスケジュール1704における計画日としても使用される。一実施形態では、現在のデータは、プロジェクト管理システムが実行されているワークステーション102(図1)またはコンピュータシステム200(図2)のようなコンピュータプラットフォームのシステムクロックから取得される。
ステップ2120で、下位レベルタスク(これはトリガ側タスクを含む)から最初の計画された開始日が取得され、所与のタスクのデータ構造体に格納される。ステップ2120に従って、各下位レベルタスクのタスクスケジュール1704(図17)が、それらのタスクの間で最初の計画された開始日を判定するためにアクセスされ、これはその後所与のタスクのタスクスケジュール1704内で参照される。こうして、トリガ側子タスクのタスクスケジュール1704に対してなされた変更が、必要であれば、所与のタスクのタスクスケジュール1704内にロールアップされる。トリガ側タスクに対する変更が計画された開始日に対するものでない場合、ロジックは単にステップ2122に進む。トリガ側タスクに対する変更の結果、そのタスクが最初の計画された開始日を有することにならない場合、所与のタスクスケジュールに対する変更は不要である。
別法として、図21のロジックは、ステップ2120の前に、次のような判定ブロックを含んでもよい。すなわち、この判定ブロックでは、計画された日付に対する変更が計画された開始日に対する変更であるか、それとも計画された終了日に対する変更であるかが判定される。その後ロジックは、その判定ブロックからの結果に応じて、ステップ2120またはステップ2122のいずれかに進むことができる。
図21に示された方法に戻って、ステップ2122で、ステップ2120に関して上記で説明したのと同様に、下位レベルタスクから最終の計画された終了日が取得され、所与のタスクのデータ構造体に格納される。この場合も、トリガ側タスクのタスクスケジュール1704に対してなされた変更が、必要であれば、所与のタスクのタスクスケジュール1704内にロールアップされる。トリガ側子タスクに対する変更の結果、そのタスクが最終の計画された終了日を有することにならない場合、所与のタスクスケジュールに対する変更は不要である。ステップ2122が完了するとすぐに、ステップ2114で、プロセスは開始点に復帰する。
図21に示されたプロセス全体を通じて、所与のタスクのスケジュールエントリのいずれかが変化した場合、所与のタスクは、親タスク1708(図17)への参照を通してその親タスクにおいて図21と同じプロセスをトリガすることになる。図21のプロセスは子タスクによってトリガされるので、ステップ2102は、無関係のプロセスが図21のプロセスフローをトリガしないようにする安全性チェックとなる。
<ソフトウェア設計仕様>
図22は、ソフトウェア設計およびコーディングプロセスの概要を説明するフローチャートである。ブロック2200で、設計者は設計仕様文書を起草する。設計仕様文書は多くの形態をとり得るが、一実施形態では、設計仕様文書はクラス仕様セクションを含む。
クラス仕様の一部の例(HTTP_HTMLクラス仕様:A00と称す)を表1〜表3に示す。この実施形態によれば、クラス仕様は次の3つのセクションに編成される。すなわち、(1)関数リストA02、(2)クラス属性A04、および(3)関数定義A06である。
Figure 2004192644
Figure 2004192644
Figure 2004192644
Figure 2004192644
Figure 2004192644
表1の関数リストA02セクションは、設計仕様のクラス仕様セクションで記述される特定クラスの関数宣言を含む。表1〜表3の例示的クラス仕様A00では、「CHTTP_HTML」という名前のクラスが指定される。さらに、関数リストA02は、関数リストA02で宣言される関数に関連するパラメータを含む。一実施態様では、関数のパラメータには、そのパラメータがそれぞれの関数でどのように使用されるかに応じて「in_」、「out_」または「inOut_」というプレフィクスが付けられる。例えば、パラメータA10は、「in_sIP」という名前のパラメータを表しており、またパラメータA12は、「out_StatusInfo」という名前のパラメータを表している。上記のプレフィクスが例として提示されているが、パラメータ名前付けに関連する組織規則および必要な付加物の意味は後でさらに説明する。
さらに、構造体も関数リストA02で宣言されてよい。例えば、構造体A14は、「VendorModelInfo」という名前の構造体を表している。一実施態様では、構造体のメンバには、構造体メンバA16の「m_sVendorName」によって表されているように、「m_」というプレフィクスが付けられる。上記のプレフィクスは例として提示されているが、名前付け規約の意味は後でさらに説明する。
表2のクラス属性A04セクションは、設計仕様文書のクラス仕様セクションで記述される特定クラスの属性メンバを記載し、かつ定義する。一実施態様では、属性名には「m_」というプレフィクスが付けられる。例えば、属性A18は「m_VendorModelInfoVector」という名前の属性を表している。上記のプレフィクスが例として提示されているが、クラス属性名前付けに関連する組織規則および必要な付加物の意味は後でさらに説明する。
表3の関数定義A06セクションは、設計仕様文書のクラス仕様セクションで記述される特定クラスに関連する関数を実装するために使用されるアルゴリズムを記述する。パラメータA10およびA12のような関数パラメータならびに属性A18のようなクラス属性が、関数定義A06セクションで記述される関数定義で使用される。
さらに、関数定義で使用されるローカル変数が、関数定義A06セクションの関連アルゴリズムで指定されてもよい。一実施態様では、関数定義A06セクションで指定されるローカル変数名には「loc_」というプレフィクスが付けられる。上記のプレフィクスが例として提示されているが、ローカル変数名前付けに関連する組織規則および必要な付加物の意味は後でさらに説明する。
図22に戻って、ブロック2202で、対応する設計仕様文書に関連するソフトウェアコードが、その内部のロジックを検証するためにテストされる。ブロック2200がブロック2202と同時並行して、または反復的に実行されることも多い。ブロック2204で、ブロック2200で生成されたドラフト設計仕様文書が検討され検査される。ブロック2204の検討および検査プロセスは、1つの統合されたプロセスであっても、または複数のプロセスであってもよい。
ブロック2206で、ブロック2204の検査に合格した後、設計仕様文書は、組織の内部で公式文書として登録される。公式文書として、設計仕様は、文書管理システムを通じて管理される。さらに、設計仕様文書は、より大きなソフトウェア仕様文書の一部であってもよい。最後に、ブロック2208で、適切な時に、ソフトウェアコーダが、設計仕様に指定された設計を実施する。この目的のため、コーダは通常、ソフトウェアをコーディングしテストする。
<設計仕様検証ツール>
図23は、図5Aの検証ツール512のような、設計仕様検証ツール(「検証ツール」)の機能コンポーネントを示すブロック図である。検証ツール512は、変数チェッカ2302、規則2304、レポータ2306ならびに任意選択で、名前付け規則エンフォーサ2308およびクラスレコンサイラ2310を含む。
変数チェッカ2302は、設計仕様のクラス属性セクションに記述されているクラス属性名と対照して、設計仕様の関数定義セクション内のクラス属性名を自動的にチェックするように構成される。例えば表1〜表3を参照すると、変数チェッカ2302は、クラス仕様A00の関数定義A06セクションに記載されているクラス属性名を見つけ、それを同一設計仕様のクラス仕様A00のクラス属性A04セクションに記述されているクラス属性名と比較する。
例えば、変数チェッカは、関数定義A06で参照されているクラス属性名A20(m_VendorModelInfoVector)を見つけ、クラス属性名A20を、クラス属性A04に記述されているクラス属性名と比較する。この例では、クラス属性名A18(m_VendorModelInfoVector)がクラス属性A04に見つかり、関数定義A06のクラス属性名A20と一致する。よって、設計仕様がクラス属性m_VendorModelInfoVectorに関して正しいことが検証される。すなわち、特定のクラス属性に関してスペルミスがなく、また特定のクラス属性に関してクラス仕様A00のクラス属性A04と関数定義A06のセクション間に不整合がない。一実施形態では、変数チェッカ2302は、関数定義A06内に他にクラス属性m_VendorModelInfoVectorが出現すればそれを見つけ、それをもとの出現と対照して検証する。一実施形態では、クラス属性名が関数定義A06に現れるがクラス属性A04には見つからないことが発見された場合、そのクラス属性名は格納され、未宣言、または未定義のクラス属性名として報告される。こうして、スペルミスは、2つのセクション間の不整合に基づいて特定されることになる。
変数チェッカ2302はさらに、設計仕様の関数定義セクション内の関数パラメータ名を、同一設計仕様の関数リストセクション内の関数パラメータ名と対照して自動的にチェックするように構成される。例えば表1〜表3を参照すると、変数チェッカ2302は、設計仕様のクラス仕様A00の関数定義A06セクションに含まれる関数パラメータ名を見つけ、それを同一設計仕様のクラス仕様A00の関数リストA02で宣言されている関数パラメータ名と比較する。
例えば、変数チェッカは、関数定義A06内の関数A21(setIPAddress)の関数パラメータ名A22(in_sIP)を見つけ、関数パラメータ名A22を、関数リストA02に含まれ、すなわち宣言されている関数パラメータ名と比較する。この例では、関数パラメータ名A10(in_sIP)が関数リストA02内のA11(setIPAddress)に見つかり、関数定義A06の関数パラメータ名A22と一致する。よって、設計仕様は関数パラメータ名in_sIPに関して正しい。すなわち、パラメータ名に関してスペルミスがなく、また特定の関数パラメータ名に関してクラス仕様A00の関数リストA02と関数定義A06のセクション間に不整合がない。さらに、変数チェッカ2302は、関数定義A06内に他に任意のパラメータ名in_sIPが出現すればそれを見つけ、それをもとの出現と対照して検証する。一実施形態では、パラメータ名が関数定義A06に現れるが関数リストA02には見つからないことが発見された場合、そのパラメータ名は格納されるか、あるいは未宣言パラメータとして報告されることが可能である。こうして、スペルミスは、2つのセクション間の不整合に基づいて識別されることになる。
一実施形態では、変数チェッカ2302はさらに、関数定義A06で参照されるローカル変数名を探索するように構成される。ローカル変数は、関数定義A06内のアルゴリズムで指定されてもよい。ローカル変数名が関数定義A06で指定される場合、それらのローカル変数名は、組織規則に従って名前付けされるべきである。しかし、ローカル変数名はクラス仕様A00の他のセクションでは必ずしも使用されず、そのため関数定義A06セクションで見つかった場合、そのローカル変数名をチェックすべき他のセクションはない。そこで、ローカル変数名が関数定義A06内の所与のアルゴリズムで1回だけ見つかった場合、その変数は、所与のアルゴリズム内のどこか他の場所で誤ったスペルで綴られている可能性が存在する。決定的ではないが、関数定義A06のアルゴリズム内でローカル変数名が1回だけ出現することは、設計仕様にエラーがあるかもしれないことを意味し得るので、ローカル変数名の単一出現は報告される。別法として、ローカル変数の出現頻度を報告してもよい。したがって、ユーザは、エラーの可能性が警告され、問題をさらに調査することができる。
上記のようなクラス属性名および関数パラメータ名に関係するチェックに関して、検証ツール512は、矛盾が見つかればそれを報告する。例えば、検証ツール512のレポータ2306は、問題を表すデータをローカルメモリまたは共有メモリに保存することによって、問題の指示を表示することによって、問題の指示を印刷することによって、またはこれらのいずれかの組合せによって、検証中の設計仕様に関する矛盾があればそれを報告することができる。さらに、ローカル変数の出現が検証される実施形態では、レポータ2306は、同じいずれかの方法によりローカル変数の単一出現を報告することができる。一実施形態では、矛盾を報告する際に使用される情報は、所与の属性またはパラメータが関数定義A06に表されているそれぞれの関数で使用される回数を含む。
規則2304は、例えば、クラス属性名、関数パラメータ名、構造体名およびローカル変数名に関する組織名前付け規約に関する文書化規則を含む。例えば、一実施態様では、属性名には「m_」というプレフィクスが付けられ、関数パラメータには「in_」、「out_」または「inOut_」のいずれかのプレフィクスが付けられ、ローカル変数名には「loc_」というプレフィクスが付けられる。規則2304は、上記の規則の数またはタイプには限定されない。というのは、規則2304は、設計仕様生成に関係する任意個数の組織制約、すなわち、名前付け規則等を含むように実施され得るからである。規則2304に具現化される他の規約が、設計仕様の他の要素を検証するために使用可能である。
規則2304は、設計仕様文書またはファイルをチェックするために変数チェッカ2302によって使用される。規則2304に具現化される名前付け規約は、クラス仕様A00の異なるセクション(すなわち、関数リストA02、クラス属性A04、関数定義A06)内の適用可能な要素、例えば、クラス属性名、関数パラメータ名およびローカル変数名を探索するために、それらの要素がクラス仕様A00の他のセクションにおける出現と比較され得るように使用される。当該要素のタイプが、規則2304に基づいて、例えばそれぞれの要素タイプに関連する名前付けプレフィクスによって、関数リストA02またはクラス属性A04のセクションに見つかるとすぐに、関数定義セクションA06が、対応する要素を求めて検索される。この検索は、適用可能なプレフィクスだけでなく、それぞれのセクションに見つかる完全な要素名または要素名の一部を必要とし得る。こうして、対応する要素のスペルミスされた出現が、より容易に見つかる可能性が高くなる。
これらの教示の実施態様はさまざまとなり得る。例えば、要素がまず関数定義A06で探索された後、関数リストA02およびクラス属性A04内の対応する要素を検索し、それにより検証されてもよい。
検証ツール512の任意の名前付け規則エンフォーサ2308は、設計仕様のクラス仕様A00内の要素の出現に対して名前付け規則を強制することができるモジュールである。例えば、クラス仕様A00の種々のセクション内に矛盾が発見された場合、名前付け規則エンフォーサ2308は、規則に従ってスペルミスされた要素の名前を付け直すことによって矛盾点を一致させるように構成される。規則2304が、名前付け規約を強制する間に名前付け規則エンフォーサ2308によって参照される。さらに、検証ツール512は、名前付け規則エンフォーサ2308に加えて、またはその代わりに、他の同様に機能する規則エンフォーサとともに構成されてもよく、それにより、任意個数の他の規則または組織規約が設計仕様文書に対して強制されることが可能である。
検証ツール512の任意のクラスレコンサイラ2310は、ソフトウェアアプリケーションの異なるクラス間で、要素、例えばクラス属性名および関数パラメータ名の使用法を一致させることができるモジュールである。最初のクラス(設計仕様のクラス仕様によって表される)が検証ツール512によって処理された後、他のクラス仕様のその後の検証は、最初のクラスを検証し、かつ一致させる際に得られる知識を使用することができる。したがって、異なる対応するクラス仕様によって表される異なるクラス間の一貫性が、参照されるクラス属性および関数パラメータに関して保証される。検証ツール512の機能が、本明細書で論考した、具体的に想定されているもの以外の他の要素の検証を含むように拡張される場合、クラスレコンサイラ2310の機能は、種々のクラス仕様間で当該他の要素を一致させるために、それに応じて拡張されることが可能である。
一実施形態では、クラスレコンサイラ2310は、親クラスと、関連する任意の派生クラスとの間で要素を一致させるように構成される。よって、派生クラスの検証は、親クラスを検証する際に得られる知識を使用することによって利益を受ける。
<設計仕様文書を検証するプロセス>
図24は、電子設計仕様文書を検証するプロセス2400を説明するフローチャートである。プロセス2400への入力は、設計仕様文書を表現し、かつ適当なコンピュータ可読媒体に格納されている1つまたは複数のコンピュータ可読ファイルである。例えば、設計仕様文書の複数のクラス仕様のそれぞれのクラス仕様が、別個のコンピュータ可読ファイルとして表現されてもよい。プロセス2400は、コンピュータソフトウェアコードとして、したがって自動化された検証プロセスとして具現化される。さらに、プロセス2400は、検証ツール512(図23)によって実行されてもよい。プロセス2400は、本明細書で説明される諸実施形態の特定の実施態様を表している。したがって、ステップによってはプロセス2400において追加または削除されてもよいものもあり、その結果として得られるプロセスも依然として、より一般的な本明細書の教示の範囲内に入る。
判定ブロック2402で、入力ファイルが指定されているかどうかが判定される。入力ファイルが指定されていないと判定されることは、不適当な入力コマンドがプログラムプロセスに提示されたことを示している。入力ファイルが指定されていない場合、ブロック2404でエラーメッセージが報告され、またブロック2406でプロセスは終了する。一実施形態では、エラーメッセージは、プロセス2400を実施するプログラムの使用法についての案内を含む。ブロック2402で、入力ファイルが指定されていると判定された場合、ブロック2408でプログラムのタイトルが報告される。例えば、一実施態様では、ブロック2408で、「Variable Checker」が、出力ファイルoutput.txtの最初の付近に報告される。
判定ブロック2410で、まだ他に処理すべきファイル名があるかどうかが判定される。一実施態様では、設計仕様のクラス仕様を表すファイル名は、配列としてコマンドラインからプロセス2400に渡され、配列に示される順序で処理される。他に処理すべきファイル名がない場合、ブロック2412で終了メッセージが報告され、ブロック2414でプロセスは終了する。ブロック2410で、まだ他に処理すべきファイル名があると判定された場合、すなわち、コマンド配列に示される処理すべきクラス仕様がまだ他にある場合、ブロック2416で次の未処理ファイルが取得される。
判定ブロック2418で、現在処理中のファイルが正しいファイルタイプであるかどうかが判定される。非限定的例として、一実施態様によれば、すべてのクラス仕様ファイルがHTMLフォーマットであることが要求される。ファイルタイプがクラス仕様ファイルとして正しくない場合、プロセスは判定ブロック2410に戻り、まだ他に処理すべきファイルがあるかどうかが判定される。ブロック2418で、現在のファイルのファイルタイプが正しいと判定された場合、ブロック2420でファイルがオープンされる。判定ブロック2422で、ブロック2420におけるファイルのオープンが不成功である場合、プロセスはブロック2410に戻り、まだ他に処理すべきファイルがあるかどうかが判定される。例えば、ファイルはファイル破損のためにオープンに成功しないかもしれない。
ブロック2420におけるファイルのオープンが成功した場合、判定ブロック2424で、ファイルがクラス仕様を表現しているかどうかが判定される。ファイルがクラス仕様を表現していない、または含まない場合、プロセスは判定ブロック2410に戻り、まだ他に処理すべきファイルがあるかどうかが判定される。例えば、クラス仕様ファイル名以外のファイル名が、不注意により入力コマンドを通してプロセスに渡されてしまっているかもしれない。ファイルがクラス仕様を表現している場合、ブロック2426でクラス名が報告される。非限定的例として、表1〜表3のクラス仕様との関連では、「CHTTP_HTML」が出力ファイルoutput.txtに関連して報告される。
ブロック2428で、関数名および関連するパラメータが格納される。例えば、クラス仕様A00の関数リストA02(表1)が走査および/または解析され、関数リストA02に見つかった関数および関連するパラメータがメモリに格納される。
ブロック2430で、属性名が格納される。例えば、クラス仕様A00のクラス属性A04(表2)が走査および/または解析され、関数リストA02に見つかった属性がメモリに格納される。
ブロック2432で、処理すべき関数があるかどうかが判定される。例えば、A00のようなクラス仕様の関数リストA02(表1)に全く関数が記載されていない可能性がある。その場合、関数定義A06(表3)セクションはないであろう。すると、プロセスはブロック2410に戻り、まだ他に処理すべき入力ファイルがあるかどうかが判定される。ブロック2432で、処理すべき関数がもう存在しないと判定された場合、プロセスはブロック2410に戻り、まだ他に処理すべき入力ファイルがあるかどうかが判定される。処理すべき関数がある場合、ブロック2434で、クラス仕様A00の関数定義A06のような、ファイルの関数定義セクションが探索される。
関数を特定するために関数定義A06が走査および/または解析され、各関数が順に処理される。ブロック2436で、現在処理中の関数の名前が報告される。例えば、関数名はoutput.txtのような出力ファイルに格納され、これを印字することができる。判定ブロック2438で、関数名が、例えばブロック2428で格納されているかどうかが判定される。こうして、ブロック2428で、クラス仕様ファイルの関数リスト(例えば、表1の関数リストA02)に見つかった関数名が格納されているので、ブロック2438で、関数定義セクション(例えば、表3の関数定義A06)が処理され、関数定義セクションで定義されている関数が関数リストセクションに見つかった関数と整合しているかどうかが判定される。したがって、関数定義セクションは、設計仕様のクラス仕様の関数リストセクションと対照して検証され、関数名のそれぞれの出現が整合しているかどうかが判定される。
ブロック2438で、関数定義セクションに見つかった関数名がすでに格納されたものではない場合、ブロック2440で、処理中の関数が宣言されていないことの指示がなされる。例えば、関数名が未宣言関数として出力ファイルに格納され、これを印字することができる。宣言されていない関数に遭遇することは、その関数が関数定義A06または関数リストA02のいずれかでスペルミスされていることを示している可能性がある。というのは、一致する関数名が見つからなかったからである。
関数を未宣言と指摘することは、単に関数名がクラス仕様の関数リストまたは関数定義のいずれかのセクションでスペルミスされていることを意味するだけかもしれない。名前付け規則エンフォーサ2308(図23)を含む実施形態では、関数のスペルミスされた出現を探索し、スペルミスされた出現を訂正するように名前付け規則を強制することによって、「未宣言」関数を一致させることが可能であり、それにより、クラス仕様全体を通じて一貫した正しい関数名前付けが得られる。例えば、関数定義A06で定義されている関数を処理している間に関数名setIPOAddressに遭遇し、関数定義A06のそれぞれの関数名を関数リストA02と比較している間に関数リストA02において関数名setIPAddressに遭遇した場合、setIPOAddressが未宣言関数名として報告される。さらに、規則エンフォーサは、関数リストA02が正しいスペルの関数名を宣言しているとの仮定の下で、関数定義A06で見つかった関数名setIPOAddressを、関数リストA02で見つかったsetIPAddressに訂正するように動作することができる。
未宣言関数の存在によりブロック2440に到達した場合、関数パラメータチェックは迂回され、またブロック2446で、クラス仕様の関数定義セクション(例えば、表3の関数定義A06)で参照されている見つかったクラス属性名が、ブロック2430で格納されたものと対照してチェックされ、一致するパラメータ名が存在するかどうかが判定される。
判定ブロック2438に戻って、現在の関数名が格納されていると判定された場合、ブロック2442で、関数定義セクションで現在の関数に関連するパラメータ名がチェックされ、それらが、例えばブロック2428で格納されているかどうかが判定される。現在の関数に関連する所与の任意のパラメータ名が格納されていない場合、ブロック2444で、当該所与のパラメータ名が未宣言パラメータとして報告(例えば格納)され、当該所与のパラメータ名に関連する未宣言パラメータ頻度変数がインクリメントされる。
現在の関数に関連するすべてのパラメータ名がブロック2428で格納されたパラメータ名と対照してチェックされるとすぐに、プロセスはブロック2446に進み、クラス属性名がチェックされる。すなわち、クラス仕様の関数定義セクション(例えば、表3の関数定義A06)で参照されている各クラス属性名が、クラス仕様のクラス属性セクション(例えば、表2のクラス属性A04)で見つかったクラス属性名と比較され、かつブロック2430で格納される。現在の関数に関連する所与のクラス属性名が格納されていない場合、ブロック2448で、当該所与のクラス属性名が未宣言または未定義クラス属性として報告(例えば、出力ファイルに格納)され、当該所与のクラス属性名に関連する未宣言属性頻度変数がインクリメントされる。
未宣言関数の場合と同様に、名前付け規則エンフォーサ2308(図23)を含む実施形態では、それぞれのパラメータおよびクラス属性のスペルミスされた出現を探索し、スペルミスされた出現を訂正するように名前付け規則を強制することによって、「未宣言」のパラメータおよびクラス属性を一致させることが可能であり、それにより、クラス仕様全体を通じて一貫した正しい名前付けが得られる。
ブロック2450で、クラス仕様の関数定義セクション(例えば、表3の関数定義A06)で参照されている任意のローカル変数名があればそれが報告(例えば、出力ファイルに格納)される。さらに、それらが所与の関数に現れる頻度が格納される。上記のように、ローカル変数名が所与の関数定義に1回だけ現れる場合、当該所与の関数定義内のローカル変数名がスペルミスされて他に出現している可能性がある。
ブロック2452で、ブロック2444で発見され、かつ格納された未宣言パラメータ名、ブロック2448で発見され、かつ格納された未宣言属性名、およびそれらに関連する頻度変数のそれぞれの値が報告される。ブロック2454で、ブロック2450で発見され、かつ格納されたローカル変数名およびそれらに関連する頻度変数のそれぞれの値が報告される。例えば、検証ツール512(図23)のレポータ2306(図23)が、上記のパラメータ、属性およびローカル変数の名前ならびにそれらに関連する頻度を印刷する。
最後に、プロセスはブロック2432に戻り、まだ他に処理すべき関数があるかどうかが判定される。依然として処理を必要とする関数が関数リスト(例えば、表1の関数リストA02)に発見された場合、プロセスは再びブロック2434に進み、関数定義セクション(例えば、表3の関数定義A06)で現在の関数を捜す。ブロック2432で、現在のクラス仕様ファイルに対して処理すべき関数がもう存在しないと判定された場合、ブロック2410で、まだ処理されていない入力ファイル名が他にあるかどうかが判定される。まだ他に処理すべきファイルがある場合、プロセスはブロック2416に進み、次のファイルを取得する。処理すべきファイルが他に存在しない場合、ブロック2412で終了メッセージが報告(例えば、印刷のために出力ファイルに格納)され、自動化された設計仕様検証プロセスは終了する。
本明細書で説明された実施形態は、設計仕様文書の特定のセクションを参照している。例えば、設計仕様文書の「クラス仕様」部分の「関数リスト」、「クラス属性」、および「関数定義」セクションという用語が全体を通じて使用されている。しかし、本発明の実施形態の使用は、これらの特定のタイトルを有するセクションでの使用に限定されない。というのは、異なるタイトルを有する同様のセクションに関連した実施形態の使用も具体的に想定されるからである。上記のタイトルの使用は、より一般的な本明細書の教示の実施態様の一例である。したがって、クラスに関連する関数および関連パラメータを記載または宣言するクラス仕様のセクション、クラスに関連するクラス属性を記載するセクション、およびクラスに関連する関数を基礎づけるアルゴリズムを定義するセクションが、上記の教示に従って解析され、かつ処理されることが可能である。
このように、上記の詳細な説明は、設計仕様の自動検証技法を説明している。さらに、本開示では、いくつかのプロセスステップが特定の順序で記載され、またいくつかのステップを識別するために英字および英数字ラベルが使用されている。本開示で特に断らない限り、本発明の実施形態は、このようなステップを実行するいかなる特定の順序にも限定されない。特に、ラベルは単にステップの便宜的識別のために使用されており、このようなステップを実行する特定の順序を含意、指定または要求することを意図していない。
以上、本明細書において、本発明は、その特定の実施形態に関連して説明されている。しかし、より一般的な本発明の精神および範囲から逸脱することなく、それらの実施形態に種々の変更形態および変形形態を行うことが明らかである。よって、本明細書および図面は、制限的ではなく例示的なものとみなされるべきである。
本発明の諸態様が実施され得る動作環境の例を示す図である。 本発明の諸実施形態が実施され得るコンピュータシステムを示すブロック図である。 本発明の一実施形態によるデータベースのデータコンポーネントおよびウェブコンポーネントの例を示す図である。 本発明の一実施形態による、ネットワークを通じてプロジェクトファイルの自動化された管理を開始するステップを示すフローチャートである。 本発明の一実施形態による、文書検査プロセスに関連して個人(クライアント)が実行するステップを示すフローチャートである。 本発明の一実施形態による、図4BのR1から続くサーバ側プロセスを示すフローチャートである。 本発明の一実施形態による、図4BのR2から続くサーバ側プロセスを示すフローチャートである。 本発明の一実施形態による、オンライン対話フォームを通じてプロジェクトを開始する構成のブロック図である。 本発明の一実施形態で利用可能な、印刷または表示されたプロジェクト開始フォームの例を示す図である。 図5Bの例示的な印刷/表示されたプロジェクト開始フォームの続きの図である。 本発明の一実施形態による、プロジェクトサイトの例を示す図である。 本発明の一実施形態による、プロジェクト文書インデックスの例を示す図である。 本発明の一実施形態による、例示的ウェブインデックスページ、プロジェクトデータベース、およびデータベースによって管理される電子的または物理的ファイル/オブジェクトの間のリンク関係を示す図である。 本発明の一態様による、ネットワークを通じてプロジェクトファイルを管理するステップを示すフローチャートである。 個人タスクスケジュールが自動的に管理される、図8の方法の一実施形態を示す図である。 総括管理スケジュールが自動的に管理される、図8の方法のもう1つの実施形態を示す図である。 本発明の一態様による、プロジェクトスケジュールを管理するために利用される関連づけを示すブロック図である。 本発明の一実施形態による、個人タスクスケジュールの例を示す図である。 本発明の一実施形態による、個人タスクスケジュールを自動的に更新するために利用されるオンライン検査フォームの印刷または表示された例を示す図である。 本発明の一実施形態による、管理スケジュールの例を示す図である。 本発明の一態様による、プロジェクトのためにスケジュールを生成し更新するステップを示すフローチャートである。 本発明の一実施形態による、開発プロジェクトを管理するために使用可能なタスク階層を表す図である。 本発明の一実施形態による、タスクデータ構造体を図式的に示す図である。 本発明の一実施形態による、タスクデータ構造体の階層関係を示す図である。 本発明の一実施形態による、オンラインタスク割当てフォームの例を示す図である。 本発明の一実施形態による、オンライン個人タスクスケジューラフォームの例を示す図である。 本発明の一実施形態による、タスクスケジュールデータ構造体を更新する方法を示すフローチャートである。 ソフトウェア設計およびコーディングプロセス概要を示すフローチャートである。 設計仕様検証ツールの機能コンポーネントを示すブロック図である。 設計仕様文書を検証するプロセスを示すフローチャートである。
符号の説明
102 ワークステーション
108 ソフトウェア開発ネットワーク環境
106、110 データストレージ/データベース
104 ウェブサーバ
212 ディスプレイ
214 入力デバイス
216 カーソルコントロール
206 メインメモリ
210 記憶デバイス
202 バス
204 プロセッサ
218 通信インタフェース
230 サーバ
228 インターネット
220 ネットワークリンク
222 ローカルネットワーク
224 ホスト

Claims (36)

  1. 電子ソフトウェア設計仕様文書を検証する方法であって、コンピュータにより実施される以下のステップ、すなわち、
    前記設計仕様文書の第1セクションで定義されている関数を特定するステップと、
    前記関数が前記設計仕様文書の第2セクションで宣言されているかどうかを自動的に判定するステップと、
    前記関数が前記第2セクションで宣言されていない場合、該関数が宣言されていないことを報告するステップと、
    を含む電子ソフトウェア設計仕様文書を検証する方法。
  2. 前記第1セクションは、ソフトウェアアプリケーションに関連する関数を記載する請求項1に記載の電子ソフトウェア設計仕様文書を検証する方法。
  3. 前記第1および第2セクションは、前記設計仕様文書のクラス仕様に関連している請求項1に記載の電子ソフトウェア設計仕様文書を検証する方法。
  4. 前記ソフトウェア設計仕様文書に関連するコンピュータソフトウェアコードをコンパイルする、コンピュータにより実施されるステップ、
    をさらに含む請求項1に記載の電子ソフトウェア設計仕様文書を検証する方法。
  5. 前記特定するステップ、前記判定するステップおよび前記報告するステップは、前記ソフトウェア設計仕様に関連するコンピュータソフトウェアコードをコンパイルする前に実行される請求項1に記載の電子ソフトウェア設計仕様文書を検証する方法。
  6. コンピュータにより実施される以下のステップ、すなわち、
    前記関数が前記第2セクションで宣言されている場合、前記第1セクションにおける前記関数に関連するパラメータが前記設計仕様文書の前記第2セクションで宣言されているかどうかを自動的に判定するステップと、
    前記関数に関連する前記パラメータが前記第2セクションで宣言されていない場合、前記パラメータを未宣言パラメータとして格納するステップと、前記パラメータおよび前記関数に関連する未宣言パラメータ頻度変数をインクリメントするステップと、
    をさらに含む請求項1に記載の電子ソフトウェア設計仕様文書を検証する方法。
  7. 未宣言の前記パラメータおよび前記未宣言パラメータ頻度変数の値の両方を報告する、コンピュータにより実施されるステップ、
    をさらに含む請求項4に記載の電子ソフトウェア設計仕様文書を検証する方法。
  8. コンピュータにより実施される以下のステップ、すなわち、
    前記第1セクションにおける前記関数に関連するクラス属性が前記設計仕様文書の第3セクションに記述されているかどうかを自動的に判定するステップと、
    前記関数に関連する前記クラス属性が前記第3セクションに記述されていない場合、前記クラス属性を未宣言クラス属性として格納するステップと、前記クラス属性および前記関数に関連する未宣言属性頻度変数をインクリメントするステップと、
    をさらに含む請求項1に記載の電子ソフトウェア設計仕様文書を検証する方法。
  9. 未宣言の前記クラス属性および前記未宣言属性頻度変数の値の両方を報告する、コンピュータにより実施されるステップ、
    をさらに含む請求項8に記載の電子ソフトウェア設計仕様文書を検証する方法。
  10. 前記第3セクションは、ソフトウェアアプリケーションに関連するクラスのクラス属性を記載する請求項8に記載の電子ソフトウェア設計仕様文書を検証する方法。
  11. コンピュータにより実施される以下のステップ、すなわち、
    前記第1セクションで参照されているローカル変数名を格納するステップと、
    前記ローカル変数名および前記関数に関連するローカル変数名頻度変数をインクリメントするステップと、
    前記ローカル変数名および前記ローカル変数名頻度変数の値を報告するステップと、
    をさらに含む請求項1に記載の電子ソフトウェア設計仕様文書を検証する方法。
  12. 設計仕様文書ファイルのファイルタイプを検証する、コンピュータにより実施されるステップ、
    をさらに含む請求項1に記載の電子ソフトウェア設計仕様文書を検証する方法。
  13. 1つまたは複数の規則のセットを前記設計仕様文書に自動的に適用する、コンピュータにより実施されるステップ、
    をさらに含む請求項1に記載の電子ソフトウェア設計仕様文書を検証する方法。
  14. 前記規則のセットは、特定の付加物が前記設計仕様文書内の属性名に関連していることを要求する規則を含む請求項13に記載の電子ソフトウェア設計仕様文書を検証する方法。
  15. 前記規則のセットは、特定の付加物が前記設計仕様文書内のパラメータ名に関連していることを要求する規則を含む請求項13に記載の電子ソフトウェア設計仕様文書を検証する方法。
  16. 前記規則のセットは、特定の付加物が設計仕様文書内のローカル変数名に関連していることを要求する規則を含む請求項13に記載の電子ソフトウェア設計仕様文書を検証する方法。
  17. ソフトウェア設計仕様文書を検証する方法であって、コンピュータにより実施される以下のステップ、すなわち、
    設計仕様文書ファイルのファイルタイプを検証するステップと、
    前記設計仕様文書のクラス仕様の関数リストセクションで宣言されている1つまたは複数の関数名および関連する1つまたは複数のパラメータ名を格納するステップと、
    前記クラス仕様のクラス属性セクションに記載されている1つまたは複数の属性名を格納するステップと、
    前記クラス仕様の関数定義セクションで定義されている1つまたは複数の関数のそれぞれについて、それぞれの関数名が格納されているかどうかを判定するステップと、
    それぞれの関数名が格納されていない場合、該それぞれの関数が宣言されていないことを指示するステップと、
    それぞれの関数名が格納されている場合、前記関数定義セクションにおいて前記それぞれの関数名に関連する1つまたは複数のパラメータ名のそれぞれのパラメータ名が格納されているかどうかを判定するステップと、
    前記それぞれの関数に関連するそれぞれのパラメータ名が格納されていない場合、前記それぞれのパラメータ名を未宣言パラメータとして格納するステップと、前記それぞれのパラメータ名および前記それぞれの関数に関連する未宣言パラメータ頻度変数をインクリメントするステップと、
    もしあれば、1つまたは複数の未宣言パラメータ名と、関連する未宣言パラメータ頻度変数の値とを報告するステップと、
    前記関数定義セクションにおいて前記それぞれの関数名に関連する1つまたは複数の属性名のそれぞれの属性名が格納されているかどうかを判定するステップと、
    前記それぞれの関数に関連するそれぞれの属性名が格納されていない場合、前記それぞれの属性名を未宣言属性として格納するステップと、前記それぞれの属性名および前記それぞれの関数に関連する未宣言属性頻度変数をインクリメントするステップと、
    もしあれば、1つまたは複数の未宣言属性名と、関連する未宣言属性頻度変数の値とを報告するステップと、
    を含む電子ソフトウェア設計仕様文書を検証する方法。
  18. 電子ソフトウェア設計仕様文書を検証する1つまたは複数の命令シーケンスを備えるコンピュータ可読媒体であって、前記1つまたは複数の命令シーケンスが1つまたは複数のプロセッサに、
    前記設計仕様文書の第1セクションで定義されている関数を特定するステップと、
    前記関数が前記設計仕様文書の第2セクションで宣言されているかどうかを自動的に判定するステップと、
    前記関数が前記第2セクションで宣言されていない場合、前記関数が宣言されていないことを報告するステップと、
    を実行させるコンピュータ可読媒体。
  19. 前記第1セクションは、ソフトウェアアプリケーションに関連する関数を記載する請求項18に記載のコンピュータ可読媒体。
  20. 前記第1および第2セクションは、前記設計仕様文書のクラス仕様に関連している請求項18に記載のコンピュータ可読媒体。
  21. 1つまたは複数の命令シーケンスが1つまたは複数のプロセッサに、
    前記ソフトウェア設計仕様文書に関連するコンピュータソフトウェアコードをコンパイルするステップ、
    を実行させる請求項18に記載のコンピュータ可読媒体。
  22. 前記特定するステップ、判定するステップおよび報告するステップは、前記ソフトウェア設計仕様に関連するコンピュータソフトウェアコードをコンパイルする前に実行される請求項18に記載のコンピュータ可読媒体。
  23. 前記1つまたは複数の命令シーケンスが前記1つまたは複数のプロセッサに、
    前記関数が前記第2セクションで宣言されている場合、前記第1セクションにおける前記関数に関連するパラメータが前記設計仕様文書の前記第2セクションで宣言されているかどうかを自動的に判定するステップと、
    前記関数に関連する前記パラメータが前記第2セクションで宣言されていない場合、前記パラメータを未宣言パラメータとして格納するステップと、前記パラメータおよび前記関数に関連する未宣言パラメータ頻度変数をインクリメントするステップと、
    を実行させる請求項18に記載のコンピュータ可読媒体。
  24. 前記1つまたは複数の命令シーケンスが前記1つまたは複数のプロセッサに、
    未宣言の前記パラメータおよび前記未宣言パラメータ頻度変数の値の両方を報告するステップ、
    を実行させる請求項23に記載のコンピュータ可読媒体。
  25. 前記1つまたは複数の命令シーケンスが前記1つまたは複数のプロセッサに、
    前記第1セクションにおける前記関数に関連するクラス属性が前記設計仕様文書の第3セクションに記述されているかどうかを自動的に判定するステップと、
    前記関数に関連する前記クラス属性が前記第3セクションに記述されていない場合、前記クラス属性を未宣言クラス属性として格納するステップと、前記クラス属性および前記関数に関連する未宣言属性頻度変数をインクリメントするステップと、
    を実行させる請求項18に記載のコンピュータ可読媒体。
  26. 前記1つまたは複数の命令シーケンスが前記1つまたは複数のプロセッサに、
    未宣言の前記クラス属性および前記未宣言属性頻度変数の値の両方を報告するステップ、
    を実行させる請求項25に記載のコンピュータ可読媒体。
  27. 前記第3セクションは、ソフトウェアアプリケーションに関連するクラスのクラス属性を記載する請求項25に記載のコンピュータ可読媒体。
  28. 前記1つまたは複数の命令シーケンスが前記1つまたは複数のプロセッサに、
    前記第1セクションで参照されているローカル変数名を格納するステップと、
    前記ローカル変数名および前記関数に関連するローカル変数名頻度変数をインクリメントするステップと、
    前記ローカル変数名および前記ローカル変数名頻度変数の値を報告するステップと、
    を実行させる請求項18に記載のコンピュータ可読媒体。
  29. 前記1つまたは複数の命令シーケンスが前記1つまたは複数のプロセッサに、
    設計仕様文書ファイルのファイルタイプを検証するステップ、
    を実行させる請求項18に記載のコンピュータ可読媒体。
  30. 前記1つまたは複数の命令シーケンスが前記1つまたは複数のプロセッサに、
    1つまたは複数の規則のセットを前記設計仕様文書に自動的に適用するステップ、
    を実行させる請求項18に記載のコンピュータ可読媒体。
  31. 前記規則のセットは、特定の付加物が前記設計仕様文書内の属性名に関連していることを要求する規則を含む請求項30に記載のコンピュータ可読媒体。
  32. 前記規則のセットは、特定の付加物が前記設計仕様文書内のパラメータ名に関連していることを要求する規則を含む請求項30に記載のコンピュータ可読媒体。
  33. 前記規則のセットは、特定の付加物が設計仕様文書内のローカル変数名に関連していることを要求する規則を含む請求項30に記載のコンピュータ可読媒体。
  34. 電子ソフトウェア設計仕様文書を検証する1つまたは複数の命令シーケンスを備えるコンピュータ可読媒体であって、前記1つまたは複数の命令シーケンスが1つまたは複数のプロセッサに、
    設計仕様文書ファイルのファイルタイプを検証するステップと、
    前記設計仕様文書のクラス仕様の関数リストセクションで宣言されている1つまたは複数の関数名および関連する1つまたは複数のパラメータ名を格納するステップと、
    前記クラス仕様のクラス属性セクションに記載されている1つまたは複数の属性名を格納するステップと、
    前記クラス仕様の関数定義セクションで定義されている1つまたは複数の関数のそれぞれについて、それぞれの関数名が格納されているかどうかを判定するステップと、
    それぞれの関数名が格納されていない場合、前記それぞれの関数が宣言されていないことを指示するステップと、
    それぞれの関数名が格納されている場合、前記関数定義セクションにおいて前記それぞれの関数名に関連する1つまたは複数のパラメータ名のそれぞれのパラメータ名が格納されているかどうかを判定するステップと、
    前記それぞれの関数に関連するそれぞれのパラメータ名が格納されていない場合、前記それぞれのパラメータ名を未宣言パラメータとして格納するステップと、前記それぞれのパラメータ名および前記それぞれの関数に関連する未宣言パラメータ頻度変数をインクリメントするステップと、
    もしあれば、1つまたは複数の未宣言パラメータ名と、関連する未宣言パラメータ頻度変数の値とを報告するステップと、
    前記関数定義セクションにおいて前記それぞれの関数名に関連する1つまたは複数の属性名のそれぞれの属性名が格納されているかどうかを判定するステップと、
    前記それぞれの関数に関連するそれぞれの属性名が格納されていない場合、前記それぞれの属性名を未宣言属性として格納するステップと、前記それぞれの属性名および前記それぞれの関数に関連する未宣言属性頻度変数をインクリメントするステップと、
    もしあれば、1つまたは複数の未宣言属性名と、関連する未宣言属性頻度変数の値とを報告するステップと、
    を実行させるコンピュータ可読媒体。
  35. 電子ソフトウェア設計仕様文書を検証する装置であって、
    設計仕様文書の第1セクションで定義されている関数を特定する手段と、
    前記関数が前記設計仕様文書の第2セクションで宣言されているかどうかを自動的に判定する手段と、
    前記関数が前記第2セクションで宣言されていない場合、前記関数が宣言されていないことを報告する手段と、
    を備える装置。
  36. 電子ソフトウェア設計仕様文書を検証する装置であって、
    設計仕様文書ファイルのファイルタイプを検証する手段と、
    前記設計仕様文書のクラス仕様の関数リストセクションで宣言されている1つまたは複数の関数名および関連する1つまたは複数のパラメータ名を格納する手段と、
    前記クラス仕様のクラス属性セクションに記載されている1つまたは複数の属性名を格納する手段と、
    前記クラス仕様の関数定義セクションで定義されている1つまたは複数の関数のそれぞれについて、それぞれの関数名が格納されているかどうかを判定する手段と、
    それぞれの関数名が格納されていない場合、該それぞれの関数が宣言されていないことを指示する手段と、
    それぞれの関数名が格納されている場合、前記関数定義セクションにおいて前記それぞれの関数名に関連する1つまたは複数のパラメータ名のそれぞれのパラメータ名が格納されているかどうかを判定する手段と、
    前記それぞれの関数に関連するそれぞれのパラメータ名が格納されていない場合、該それぞれのパラメータ名を未宣言パラメータとして格納する手段と、
    前記それぞれのパラメータ名および前記それぞれの関数に関連する未宣言パラメータ頻度変数をインクリメントする手段と、
    もしあれば、1つまたは複数の未宣言パラメータ名と、関連する未宣言パラメータ頻度変数の値とを報告する手段と、
    前記関数定義セクションにおいて前記それぞれの関数名に関連する1つまたは複数の属性名のそれぞれの属性名が格納されているかどうかを判定する手段と、
    前記それぞれの関数に関連するそれぞれの属性名が格納されていない場合、該それぞれの属性名を未宣言属性として格納する手段と、
    前記それぞれの属性名および前記それぞれの関数に関連する未宣言属性頻度変数をインクリメントする手段と、
    もしあれば、1つまたは複数の未宣言属性名と、関連する未宣言属性頻度変数の値とを報告する手段と、
    を備える装置。
JP2003408497A 2002-12-06 2003-12-08 電子ソフトウェア設計仕様文書検証方法及び装置、並びにコンピュータ可読媒体 Pending JP2004192644A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/313,158 US7171652B2 (en) 2002-12-06 2002-12-06 Software development environment with design specification verification tool

Publications (1)

Publication Number Publication Date
JP2004192644A true JP2004192644A (ja) 2004-07-08

Family

ID=32468167

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003408497A Pending JP2004192644A (ja) 2002-12-06 2003-12-08 電子ソフトウェア設計仕様文書検証方法及び装置、並びにコンピュータ可読媒体

Country Status (2)

Country Link
US (2) US7171652B2 (ja)
JP (1) JP2004192644A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017204272A (ja) * 2016-05-09 2017-11-16 株式会社トゥービーソフトTobesoft Co., Ltd. オープンソース基盤ソースコードマッチング方法及び装置

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7720794B2 (en) * 2003-08-05 2010-05-18 International Business Machines Corporation Identifying resource and data instances in management systems
US7441228B2 (en) * 2003-09-08 2008-10-21 Sap Ag Design-time representation for a first run-time environment with converting and executing applications for a second design-time environment
US20060179116A1 (en) * 2003-10-10 2006-08-10 Speeter Thomas H Configuration management system and method of discovering configuration data
US7603653B2 (en) * 2004-03-15 2009-10-13 Ramco Systems Limited System for measuring, controlling, and validating software development projects
US9477775B2 (en) * 2005-06-03 2016-10-25 Nokia Technologies Oy System and method for maintaining a view location during rendering of a page
US20070088589A1 (en) * 2005-10-17 2007-04-19 International Business Machines Corporation Method and system for assessing automation package readiness and and effort for completion
US7802239B2 (en) * 2005-11-09 2010-09-21 Oracle America, Inc. Supporting method references in the JAVA language
US20060184402A1 (en) * 2005-12-07 2006-08-17 BIll Fuchs Hospitality Analytics
US7716639B2 (en) * 2005-12-15 2010-05-11 Abb Technology Ltd. Specification wizard
US8533700B1 (en) 2006-04-11 2013-09-10 Open Invention Networks, Llc Workstation uptime, maintenance, and reboot service
US8726282B1 (en) 2006-05-01 2014-05-13 Open Invention Network, Llc Job scheduler for remote maintenance of servers and workstations
US7945905B2 (en) * 2006-06-02 2011-05-17 Accenture Global Services Limited Quality inspector tool
US8050953B2 (en) * 2006-06-07 2011-11-01 Ricoh Company, Ltd. Use of a database in a network-based project schedule management system
US20070288288A1 (en) * 2006-06-07 2007-12-13 Tetsuro Motoyama Use of schedule editors in a network-based project schedule management system
US8799043B2 (en) * 2006-06-07 2014-08-05 Ricoh Company, Ltd. Consolidation of member schedules with a project schedule in a network-based management system
US7793264B2 (en) * 2006-08-25 2010-09-07 International Business Machines Corporation Command-line warnings
US20080127128A1 (en) * 2006-10-30 2008-05-29 Daniel Mateescu Type Validation for Applications Incorporating A Weakly-Typed Language
US8010397B1 (en) * 2007-01-23 2011-08-30 Sprint Communications Company L.P. Enterprise infrastructure development systems and methods
US9152433B2 (en) * 2007-03-15 2015-10-06 Ricoh Company Ltd. Class object wrappers for document object model (DOM) elements for project task management system for managing project schedules over a network
US8826282B2 (en) * 2007-03-15 2014-09-02 Ricoh Company, Ltd. Project task management system for managing project schedules over a network
US20080235066A1 (en) * 2007-03-19 2008-09-25 Hiroko Mano Task management device, task management method, and task management program
US7984425B2 (en) * 2007-06-04 2011-07-19 Sap Ag Method and system for process design validation
US8020151B2 (en) * 2007-07-31 2011-09-13 International Business Machines Corporation Techniques for determining a web browser state during web page testing
US7962889B2 (en) * 2007-07-31 2011-06-14 Novell, Inc. Techniques for instantiating and configuring projects
US8448130B1 (en) * 2007-08-20 2013-05-21 The Mathworks, Inc. Auto-generated code validation
US8336028B2 (en) * 2007-11-26 2012-12-18 International Business Machines Corporation Evaluating software sustainability based on organizational information
US20090217240A1 (en) * 2008-02-22 2009-08-27 Tetsuro Motoyama Script generation for graceful termination of a web enabled client by a web server
US20090217241A1 (en) * 2008-02-22 2009-08-27 Tetsuro Motoyama Graceful termination of a web enabled client
US8321257B2 (en) * 2008-05-16 2012-11-27 Ricoh Company, Ltd. Managing project schedule data using separate current and historical task schedule data
US8352498B2 (en) * 2008-05-16 2013-01-08 Ricoh Company, Ltd. Managing to-do lists in a schedule editor in a project management system
US8706768B2 (en) * 2008-05-16 2014-04-22 Ricoh Company, Ltd. Managing to-do lists in task schedules in a project management system
US7941445B2 (en) * 2008-05-16 2011-05-10 Ricoh Company, Ltd. Managing project schedule data using separate current and historical task schedule data and revision numbers
US20090287522A1 (en) * 2008-05-16 2009-11-19 Tetsuro Motoyama To-Do List Representation In The Database Of A Project Management System
US20100070328A1 (en) * 2008-09-16 2010-03-18 Tetsuro Motoyama Managing Project Schedule Data Using Project Task State Data
US8862489B2 (en) * 2008-09-16 2014-10-14 Ricoh Company, Ltd. Project management system with inspection functionality
US8380551B2 (en) * 2008-11-05 2013-02-19 The Boeing Company Method and system for processing work requests
US8290989B2 (en) * 2008-11-12 2012-10-16 Sap Ag Data model optimization
US8375352B2 (en) * 2010-02-26 2013-02-12 GM Global Technology Operations LLC Terms management system (TMS)
US8887163B2 (en) * 2010-06-25 2014-11-11 Ebay Inc. Task scheduling based on dependencies and resources
US8572574B2 (en) * 2010-07-16 2013-10-29 Fujitsu Limited Solving hybrid constraints to validate specification requirements of a software module
US8869163B2 (en) * 2011-01-18 2014-10-21 Mindspeed Technologies, Inc. Integrated environment for execution monitoring and profiling of applications running on multi-processor system-on-chip
US8694964B1 (en) * 2011-03-23 2014-04-08 Google Inc. Managing code samples in documentation
US8875161B2 (en) 2011-06-08 2014-10-28 The Mathworks, Inc. Methods and systems for setting access to a list of class entities
US9015661B1 (en) 2011-06-23 2015-04-21 The Mathworks, Inc. Restricting class inheritance relationships
US20130091423A1 (en) * 2011-10-11 2013-04-11 Siemens Aktiengesellschaft Method and Apparatus for Checking a Structure Conformity for a Piece Of Development Documentation with at Least One Development Document
EP2642434A1 (en) * 2012-03-23 2013-09-25 Tata Consultancy Services Limited Project delivery system
JP6044377B2 (ja) * 2013-02-07 2016-12-14 株式会社デンソー 地点検索装置
US9542182B2 (en) * 2013-06-18 2017-01-10 International Business Machines Corporation Standardization of variable names in an integrated development environment
US10592806B1 (en) * 2013-12-20 2020-03-17 Massachusetts Mutual Life Insurance Company Management of the execution of collaborative projects
US9864518B2 (en) 2014-11-10 2018-01-09 International Business Machines Corporation Assigning home memory addresses to function call parameters
US9557917B2 (en) * 2014-11-10 2017-01-31 International Business Machines Corporation Conditional stack frame allocation
CN108897692A (zh) * 2018-07-06 2018-11-27 武汉斗鱼网络科技有限公司 网络环境的动态切换方法及系统、服务器及存储介质
JP7508841B2 (ja) * 2020-04-07 2024-07-02 日本電気株式会社 システム検証プログラム生成装置、システム検証プログラム生成方法およびシステム検証プログラム生成プログラム
US11340871B1 (en) * 2021-01-05 2022-05-24 Red Hat, Inc. Software-development tool with feedback notifications for improving software specifications

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4819233A (en) * 1987-04-08 1989-04-04 Westinghouse Electric Corp. Verification of computer software
US4875162A (en) * 1987-10-28 1989-10-17 International Business Machines Corporation Automated interfacing of design/engineering software with project management software
US5197001A (en) * 1990-05-14 1993-03-23 International Business Machines Corp. Bill of material and project network processing
US5699310A (en) * 1990-06-29 1997-12-16 Dynasty Technologies, Inc. Method and apparatus for a fully inherited object-oriented computer system for generating source code from user-entered specifications
JPH04195222A (ja) 1990-11-24 1992-07-15 Shimadzu Corp モジュール仕様書検証システム
JPH04250530A (ja) 1991-01-25 1992-09-07 Fujitsu Ltd プログラム変換/翻訳装置
US5490097A (en) 1993-03-22 1996-02-06 Fujitsu Limited System and method for modeling, analyzing and executing work process plans
JP3270216B2 (ja) 1993-10-08 2002-04-02 富士通株式会社 ファイル名検出方式
US5548506A (en) * 1994-03-17 1996-08-20 Srinivasan; Seshan R. Automated, electronic network based, project management server system, for managing multiple work-groups
US5537541A (en) * 1994-08-16 1996-07-16 Digital Equipment Corporation System independent interface for performance counters
JPH08255075A (ja) * 1995-03-17 1996-10-01 Fujitsu Ltd タスク分割支援を行うソフトウェア設計支援装置
US5765140A (en) 1995-11-17 1998-06-09 Mci Corporation Dynamic project management system
AUPN773496A0 (en) 1996-01-25 1996-02-15 Task Solutions Pty Ltd Task management system
US5826252A (en) 1996-06-28 1998-10-20 General Electric Company System for managing multiple projects of similar type using dynamically updated global database
US6385765B1 (en) * 1996-07-02 2002-05-07 The Research Foundation Specification and verification for concurrent systems with graphical and textual editors
US5709410A (en) 1996-09-04 1998-01-20 Reeves, Jr.; Joe F. Development and construction job scheduling method
US6901579B1 (en) * 1996-11-07 2005-05-31 Fujitsu Limited Generation of source code from classes and maintaining the comment that indicates the role of the class in the generated source code
AU6237698A (en) * 1996-12-20 1998-09-09 Financial Services Technology Consortium Method and system for processing electronic documents
US6161113A (en) 1997-01-21 2000-12-12 Texas Instruments Incorporated Computer-aided project notebook
US6308164B1 (en) 1997-04-28 2001-10-23 Jeff Nummelin Distributed project management system and method
JP2002511166A (ja) 1997-04-29 2002-04-09 エムシーアイ ワールドコム インコーポレーテッド マーケティングシステムにおけるクライアントプロファイル管理
CA2294163A1 (en) * 1997-06-23 1998-12-30 The Construction Specifications Institute Method and apparatus for computer aided building specification generation
WO1999004370A1 (en) 1997-07-14 1999-01-28 Quark, Inc. Multi-media project management and control system
US5909689A (en) * 1997-09-18 1999-06-01 Sony Corporation Automatic update of file versions for files shared by several computers which record in respective file directories temporal information for indicating when the files have been created
DE19837871C2 (de) * 1998-08-20 2000-06-08 Manfred Broy Verfahren zum automatischen Erzeugen eines Programms
US6351734B1 (en) 1998-09-09 2002-02-26 Unisys Corporation System and method for resource allocation and planning
US7107268B1 (en) * 1998-11-12 2006-09-12 Printable Technologies, Inc. Centralized system and method for managing enterprise operations
US6189009B1 (en) * 1999-08-27 2001-02-13 The Voice.Com, Inc. System and method for integrating paper-based business documents with computer-readable data entered via a computer network
US6957189B2 (en) * 1999-08-30 2005-10-18 Sabre Inc. Apparatus and method for creating a marketing initiative
AU1948201A (en) * 1999-12-06 2001-06-12 Axiomatic Design Software, Inc. Method and apparatus for producing software
US6678698B2 (en) 2000-02-15 2004-01-13 Intralinks, Inc. Computerized method and system for communicating and managing information used in task-oriented projects
US6581040B1 (en) 2000-02-18 2003-06-17 Daniel B. Wright Project specific communications system and method
US6859768B1 (en) * 2000-03-03 2005-02-22 The Beck Technology Computer-implemented automated building design and modeling and project cost estimation and scheduling system
US6842760B1 (en) * 2000-05-03 2005-01-11 Chad Barry Dorgan Methods and apparata for highly automated quality assurance of building construction projects
US6895382B1 (en) * 2000-10-04 2005-05-17 International Business Machines Corporation Method for arriving at an optimal decision to migrate the development, conversion, support and maintenance of software applications to off shore/off site locations
US8306841B2 (en) * 2001-04-17 2012-11-06 4Sight Technologies, Inc. Enterprise project management system and method therefor
US7191141B2 (en) * 2001-06-13 2007-03-13 Ricoh Company, Ltd. Automated management of development project files over a network
US7143087B2 (en) * 2002-02-01 2006-11-28 John Fairweather System and method for creating a distributed network architecture
US7509687B2 (en) * 2002-03-16 2009-03-24 Trustedflow Systems, Inc. Remotely authenticated operation method
US7818657B1 (en) * 2002-04-01 2010-10-19 Fannie Mae Electronic document for mortgage transactions
US7468801B2 (en) * 2003-08-21 2008-12-23 Microsoft Corporation Electronic ink processing
US20050060317A1 (en) * 2003-09-12 2005-03-17 Lott Christopher Martin Method and system for the specification of interface definitions and business rules and automatic generation of message validation and transformation software

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017204272A (ja) * 2016-05-09 2017-11-16 株式会社トゥービーソフトTobesoft Co., Ltd. オープンソース基盤ソースコードマッチング方法及び装置

Also Published As

Publication number Publication date
US7861227B2 (en) 2010-12-28
US20060265690A1 (en) 2006-11-23
US20040111705A1 (en) 2004-06-10
US7171652B2 (en) 2007-01-30

Similar Documents

Publication Publication Date Title
JP2004192644A (ja) 電子ソフトウェア設計仕様文書検証方法及び装置、並びにコンピュータ可読媒体
US7406432B1 (en) Project management over a network with automated task schedule update
US7191141B2 (en) Automated management of development project files over a network
JP5238138B2 (ja) ワークアイテムトラッキングシステム用のワークアイテムルール
US7624394B1 (en) Software installation verification
US8280919B2 (en) Systems and methods for validating design meta-data
US7454399B2 (en) Application integration system and method using intelligent agents for integrating information access over extended networks
US5734837A (en) Method and apparatus for building business process applications in terms of its workflows
US20040193703A1 (en) System and method for conformance and governance in a service oriented architecture
US8090611B2 (en) System, method, and computer program product for enabling workflow applications
US7451403B1 (en) System and method for developing user interfaces purely by modeling as meta data in software application
US8117500B2 (en) Systems and methods for identifying a relationship between multiple interrelated applications in a mainframe environment
US20090287731A1 (en) Managing To-Do Lists In A Schedule Editor In A Project Management System
EP2065799A1 (en) Annotation of models for model-driven engineering
US20090287522A1 (en) To-Do List Representation In The Database Of A Project Management System
US20090217240A1 (en) Script generation for graceful termination of a web enabled client by a web server
JP2004280820A (ja) ビジネスソフトウェアアプリケーションをサポートするフレームワーク
US8126692B2 (en) Method and system for modeling, validating and automatically resolving goals and dependencies between elements within a topology
US8126693B2 (en) Method and system for modeling, validating and automatically resolving goals and dependencies between elements within a topology
US20140278724A1 (en) Business process compliance via security validation service on the cloud
CN112765102B (zh) 一种文件系统管理方法和装置
US20230086854A1 (en) Dynamically controlling case model structure using case fragments
US20080172659A1 (en) Harmonizing a test file and test configuration in a revision control system
US20140156336A1 (en) Specifying flexible business processes using pre and post conditions
Dpenha Improve reporting on test execution and test coverage

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100329

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100421