COBOLで書かれた米国防総省の給与システム700万行、実質的に更新不可能 (original) (raw)
9451548 story
ストーリー by headless2013年07月14日 16時27分
困難 部門より
米軍では兵士に正しく給与が支払われないことがしばしばあるという。ロイターの記事によれば、古い給与・会計システムが原因らしい(Reuters Nextの記事、本家/.)。
米国防総省の給与システムはCOBOLで、700万行に及ぶコードの大半は1960年代に書かれたものだという。コードは数十年前から更新されておらず、エラーも多発するが、古くなるにつれて維持が困難になっているそうだ。さらに、ドキュメントはかなり前に失われており、実質的に更新は不可能とのこと。国防総省では10億ドル以上かけて新しいシステムを導入しようとしたが、これも失敗に終わっているとのことだ。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
- 仕様書やドキュメントがないからメンテも移行も出来ないと受け取れる。
これは別の言語に置き換えてもあんまし変わらない気もするな~
700万行にも及ぶ仕様書もドキュメントも無い○○言語で書かれた給与システムのメンテもしくは新システム導入
なわけだが、
実際問題こんなお題のモノは炎上どころじゃないプロジェクトになりそうな予感・・・- 入力・出力・状態遷移の動作仕様が明確になっていれば、その動作仕様の範囲内で実装方法を自由に変えられる(修正できる)。
一方、動作仕様が明確になっていないと、ソースコードの自身が動作仕様になっていく。つまり、ソースコードの改変は動作仕様の変更を意味するようになる。かくして、700万行の動作仕様のプログラムが生まれたというわけだ。
すべての動作仕様を理解する必要はないとは言え、そう考えると正気の沙汰ではない分量ではある。
- 入力・出力・状態遷移の動作仕様が明確になっていれば、その動作仕様の範囲内で実装方法を自由に変えられる(修正できる)。
- ・ハードウェアが60年代のものとは書かれていない
・コードの大半が60年代に書かれた、ということは何割かは更新されている。
と考えると、現在も紙テープやパンチカードで運用されているわけではないだろう。更新されたコードは一部の給与体系の変更と、入出力関係ではないか。
既存のメディアに記録していたデータは、メインフレームを更新した時にベンダーがコンバートしているだろう。(納入要件にコンバートを含めているはず)
* いや、開発当時の作業は大変だったろうね、という発言でした。
案外そんなでもなかったりして。
- ・ハードウェアが60年代のものとは書かれていない
- COBOLより、最後の一行が気になる。
米軍は、二度とコンピュータに落とし込めないような複雑怪奇な給与体系になってるの?
# リンク先は読んでません- 傷病手当の扱いが複雑みたいですね。記事に出てくるのは
イラクとアフガンに行った現在30歳。
神経損傷、慢性の痛み、そして腰の負傷に起因する外傷性脳損傷、
重度の心的外傷後ストレス障害(PTSD)、異常な眼球運動
等がある模様。
#自動翻訳かけただけだから少々間違ってるかも
* おそらく、医療費の包括払いに関する部分じゃないかな。ようするに医療費の支払いに関して、医療システム側は処置と薬剤、材料を積算した請求書を回すだけの出来高払いから、SNOMED CTと診断群分類コードによる、傷病類型と副傷病の組み合わせによる包括払いに移行しているのだけど、米軍の給与体系システムが追随出来ておらずに、兵士や退役傷病軍人がかかった医療費を請求しても審査に時間がかかって棚ざらしにされてると
* 追記。
源泉徴収額が不当だと言っているので、
治療費を兵士負担で計算しているのかもしれない。
もしくは米国の税体系そのものの変化に対応していないのかも。
半世紀前ですよ。ベトナム戦争なんか彼が生まれるずっと前の話だ。- そもそも、現在のシステムが正しい給料を出しているのかどうか、誰がどうやって確認したんでしょうか?
あるいは、確認すると、膨大な(10億ドル以上の)未支払い給料が明らかになるため、臭いものに蓋で更新できないとか。
(軍上層部の(バグによる)給料もらいすぎが判明することが予見され、抵抗勢力になっている、ということもありえそう)
* いや、「現行システムで計算した結果」が「正しい」給与体系なんだよ。つまり、本当に「バグではなく仕様」の世界。
大昔のシステムだから、「コンピュータの結果が間違ってる訳が無い」で納得させちゃったら、もう仕様に組み入れるしかないよね?
で、結果、新システムの仕様要件に「現行システムと同じ結果を出す事」ってのが入ってるんじゃない?
でもって、リファクタリングして整理したら、「再現しないバグ」が出て、結果が一致せず、結果を一致させるには、現行システムと同じコードを丸抱えするしかないって状況なんじゃ?
--
-- Buy It When You Found It --
* 米国って契約社会だから当然仕様は文書化されてるもんだと思ってましたが、そんなことは無かったんですね。
捨てちゃって復元できないだなんて、どこぞの国の社保庁みたい。
* さすがに、現役世代の分かりやすいミスは見つけれるとおもいますけどね。
身近な給与システムの場合でも、「この人はこの契約で」というエライ人の一言で、異例パターンが生まれます。 このご時勢ですから、制度改悪もありますが、激変緩和調整を生んで、よくわからなくなってしまうわけです。
この軍のシステムも一人一人理論値を別システムで計算してチェックしていくのがスジでしょうけど、制度が複雑すぎでできないのでしょうね。
* 実際、人事給与システムの類って規定通りの数字出していないことがあるんですよね。条件によって微増微減程度ですが。
更新で下がるようなことがあれば、もらう側はだいたい黙っちゃいないでしょう。逆も然りで、もらう側が強いのか、払う側が強いのかは組織によるのかな...
* まあ人民解放軍に比べれば可愛いモンだろうけど。
リストラ以前は、ソロバンで1000万人単位に給料を支払っていたわけだから、中央統制など絶対不可能。
コンピュータネットワーク化以降、中央集権に移行出来たのか、出来なかったのか。
仮にも米国防総省が統括出来ていた米軍とは違って、地方軍閥化著しい中共は、どんな暗闘が有ったのやら、或いはやっているのやら。
ソ連もピーク時は同規模・同難易度の問題を抱えていただろうが、解体ロシア移行時に、総更新しただろうし、寧ろ地方軍閥問題より組織毎に独立化されているだろうし。 - > 10億ドル以上かけて…中略…失敗に終わっている
特許庁の失敗損害55億円の20倍弱ですか。うわぁ。 - だよねぇ。
そんなに難しいなら給与体系を見直そうぜ。
* そうしたい所なんだけど、退役軍人省とかいろいろなシステムのコンピュータ化をするの遅れてるし、
ついにはサイトに我々の敵は書類とか載せちゃうほど問題化してる
デイリーショーで2日連続ネタにさせる始末
- 傷病手当の扱いが複雑みたいですね。記事に出てくるのは
- と笑えない日本の会社やお役所って、一体どれくらいあるんだろう?
- 日本ではNTTデータか日立・富士通がなんとかするのではないか。
* * それでも完成したら、名誉の戦士として、アーリントン墓地に埋葬されたりして。
* 己の手を血で汚さずに裏で手をひいて米国防総省がNTTDATAに入札参加を外圧で要請するように暗躍すれば実験結果が観察できます。
* * いや、この件もNTTデータか日立に任せとけば良かったのでは。 - 例えば、あくまでエイプリル・フールの話だけど、4/1の記事を参照。
- 日本ではNTTデータか日立・富士通がなんとかするのではないか。
- 『700万行に及ぶコードの大半は1960年代に書かれたもの』でメンテ可能な言語ってあるんだろうか。
ドキュメントがある程度有ろうが無かろうが無理っぽい気がする。
# すっごいちゃんとしたドキュメント(仕様書)が残ってても、もう新造した方が楽なんじゃ。
# そこまでデカいプログラム見たこと無いので作業見積りが想像もつかない。- COBOLで書かれているならできると思う。
700万行の中身をみないとわからないが、そもそも COBOLのコード自体が帳票みたいなものだから、
単にうまいパーザを作れば1割くらいに縮退しうるんじゃないだろうか。
Cで700万行と言われるより期待できるのは俺だけじゃないはずだ。
* こういうのこそコンピューターに自動でやらせればいいのに。
専用コンパイラのようなものを一つ設計すればいのだから。
で、結果は予想通り(笑)
* * * * 「おじいちゃん、そのコードのチェックはもうやったでしょ。」な人も多いんじゃないですか?
* * 何年~何十年か先には、C や Java も同じこと言われていますよきっと。
Web ページ専用みたいな状態の php とかはセキュリティの問題で
消え去ってるか、うまくアップデートされているかもしれませんね。
- COBOLで書かれているならできると思う。
- 果たして、この給与体系を全て記述した文書があって、かつ把握している人物がいるのだろうか?(仕様書以前の問題として)
新規プロジェクトに、10億ドルもつっこんで失敗したって時点で深い闇をみる思い(笑)
話それるけど、米国のソフト開発とかメンテって、一部の超一流を除けば酷いレベルって思う。
うちの州立大学なんて未だにWin8からメールサーバーにアクセスできない。しかも、そのアナウンスは、Win8発売後しばらく経ってから。
セキュリティーを高めるためだとかで、何度もuser name &pwd入力しなくちゃいけない。でも、pwd全部同じでOK(というか異なるpwd設定不可)なら意味ないじゃん。
無駄に階層が深くて、最初の頃は目的のサイトにたどり着くまでがRPG感覚。こんなもの作ってたら開発費は膨らむは、メンテは複雑だわ。。。 - COBOL以前に仕様がない。
トップが事態を把握しない。
どうしたいのか方針がない。
くらいかな?
--
the.ACount - 一から作りなおせばいいじゃないか
兵士たちの給料管理データベースを作るためにデータベースを設計してそこに兵士の情報の登録・抹消を行うソフトウェアを作って、給料支払日に自動的に送金するソフトウェアさえアレば・・・・
#金やデータ以降は51億ドルくらいあれば足りるでしょう(適当)
- とてつもなく古いシステムを強引に運用しているわけですから、COBOLコードの外での処理が、かなりの量であるのではないかと。
COBOLのジョブを動かさずエクセルで処理してデータだけをシステムに放り込んでるとか、
処理結果を「らしく」するために、複数の変数をカンと経験(恐)に頼って手作業で調整してたりとか。
多数の現場で行われてるであろうバラバラ・その場しのぎな処理はコードを追いかけてもわかりっこないし、
これらを網羅してシステム更改なんて大変な作業、規模によっては不可能なんでしょうね。
#ウチは業務を一度なぎ倒して、まるごとシステムを更改しました。
#実体験だけど時効だからIDでいいや。 - そのやり方だと、今生きてる人が全員死ぬまで、向こう数十年にわたって旧システムを
保守し続けるのは変わらないんで、問題は何も解決してない。旧システムの保守に加えて
新システムの開発と保守が追加されるために、むしろ問題は悪化する。 - 口でクソたれる前と後にabendと言え! 分かったかウジ虫ども!
- そのやり方だと、今生きてる人が全員死ぬまで、向こう数十年にわたって旧システムを
- ここにERP入れたらすごいじゃない。
世界最大規模の給与システムだし。
情勢を考えれば、軍事産業は当面安泰。→世界の各国に導入提案できる。
生き血で潤うわけですね。- ERP 導入の前提は、給与体系をシステムに合わせることでっせ。
それができれば、ここまで惨くはならないわけで。
- ERP 導入の前提は、給与体系をシステムに合わせることでっせ。
- 明文化されたルールは有るんだろうから、それに基づいてリライトすれば?
今度は大規模開発や長期保守性を念頭に自作したAdaで。
組み込みシステム用という向き不向きは別として。
間違っているコードが含まれているかも知れない現行システムとの互換性はスカッと諦めて。
頭の上がらないOB・OGの恩給が絡むから、蛮勇を振るえないのだろうけど。
まあ相手は、究極の暴力の専門家だからね。- >まあ相手は、究極の暴力の専門家だからね。
COBOLのおばちゃまとCOBOLerを中傷するな! おばちゃまとCOBOLerに謝れ
* * 軍人だからって、暴力の専門家とはいえないのでは?というのが先のコメントの意図では?
「COBOL のおばちゃま」も軍人(しかも偉い)だったけど、「暴力の専門家」って感じじゃないですし。
* * 海軍でも、個人の射撃訓練とかってあるのですか?
なんとなくですが、そもそも火器を携行しないような気がしてました。 - コンピュータ屋は仕事をねつ造するのがうまいねw
給与体系をシンプルに作り直すのが先だろwwww
* * * 一体いつから――――給与体系が明文法化されていると錯覚していた?
# 実際どうだか知らんが明文法より慣習法の方が法源として優先度の高いアメリカ法だし
* * * * * 組合との交渉ってSEという肩書きの人の仕事なの?
素直な疑問として
- >まあ相手は、究極の暴力の専門家だからね。
- 普段COBOLとCOBOLプログラマーを叩いている人達が、さぞかし立派な解決策を提示するものと
思っていたのですが、確かにアテが外れた印象です。
- 普段COBOLとCOBOLプログラマーを叩いている人達が、さぞかし立派な解決策を提示するものと
- だからって、COBOLを大事にしてもいいことは無いと思いますよ。
今回みたいに資産どころか、負債になるようなコードしか残ってないところも多いようですし。
- だからって、COBOLを大事にしてもいいことは無いと思いますよ。