Software Engineering
情報システムN個の設計情報があって、それがデータベースに登録されているとして、たとえば以下のようなクエリを投げて答えを得たいわけですよ。 JavaからCのプログラムを呼んでるシステムはよくあるけど、CからJavaを呼んでるシステムってどれだろう? 認証…
ある処理がスレッドセーフであるというとき…… (A) 複数のスレッドから同時に処理を実行したときと、複数のスレッドが別々で処理を実行したときとで、処理結果が変わらないように設計されていること (B) あるスレッドで処理されている値が、別のスレッドから…
qiita.com そういやCOBOLはどうなんだっけ?ということで確認。 やっぱり除算は鬼門で、できるだけ乗算で処理できるように仕様を決めるのがベターということでしょうね。 IDENTIFICATION DIVISION. PROGRAM-ID. DECUMALTEST. DATA DIVISION. WORKING-STORAGE…
まったくの素人から平均的プログラマとなるまでの時間*1の他に、システム開発への採用可否を判断できるまでにはどれくらいの時間が必要か?というのもある。 全く見ず知らずの言語をシステム開発に採用するのはリスクが高い、一方で言語に完璧に精通してから…
「アジャイル型ソフトウェア開発はmoving targetを撃つためのプロセスだ」と大学で習った覚えがあるんだが、初出がパッと出てこなかったので調べた。 まず検索に引っかかったのが、Koppensteiner, S. & Udo, N. (2003). Will agile development change the w…
satob.hatenablog.com 私が大学の頃に授業で紹介されていたComputing Curricula 1991 (CC91)は、その後2005年にComputing Curricula 2005 (CC2005)*1、2020年にComputing Curricula 2020 (CC2020)*2として改訂が行われている。内容も年を経るごとに大幅に拡…
satob.hatenablog.com このようなスキルレベルの指標を設けたとしよう。では、まったくの素人から、ある仕事に最低限求められるスキルレベル、たとえばレベル13~15あたりまで教育するにはどれくらいの時間が必要なのだろうか? 自分のエピソードとしては、…
M/M/s(M/M/c)は以下の「M/M/s(∞) の諸元」を使用。こちらは解析解として算出。 www.kogures.com M/D/s(M/D/c)は以下のコードを手元で走らせた。こちらはシミュレーションによる解。 github.com yamlモジュールは以下でインストール。 python -m pip inst…
ソフトウェアの受注開発と一言で言ってもいろいろあるよなぁ、と思ったので、まずはソース納品や著作権譲渡の有無の観点で類型を列挙してみた。 # ベンダ既存ソース利用 ソース納品 ソースの著作権譲渡 改造部分 改造部分の著作権譲渡 コメント 1 しない し…
企業内においてDevRel*1とかCCoE*2とかOSPO*3とかの部門を設けているケースはけっこうある。では、それらの部門はコスト部門となっている場合と、プロフィット部門となっている場合のどちらが多いのか?またプロフィット部門の場合、コスト部門の場合のそれ…
米国国防総省ではソフトウェア受託開発の調達は原則アジャイル型プロセスというルールで(これは本当)、その際に「金額と人数で別々に調達がかかる」と聞いたことがあって(これは真偽不明)、いったいどういう意味だ?と思っていたんだけど、もしかして 発…
日本国内では情シの地位が低くてシステムをベンダに背負わせている企業が多いと聞く。そんな中でGoogle WorkspaceとMicrosoft Power Appsがスプレッドシートを取り込んだ。これまでマネージドサービスは「エンジニアのレゴブロック」*1だったが、これでブル…
ノーコードと言われているツールの中にも、大きく分けてビジュアルプログラミング環境のようなものと、ETLツールとかに近いもの*1があり、それぞれどんな人を救いたいのか?が違うみたい。「ノーコードツールを使いたいんだけど」と言われたら、だれのために…
ソフトウェア開発工程ごとの工数比率のデータ。 1979年のNASAのデータで、設計20%、コーディングと単体テスト47.3%、システムテスト15%、受入テスト12%、その他5.7%。*1 1994年のNASAのデータで、設計23%、コーディング21%、テスト30%、その他26%。*2 *1:Mcg…
ソフトウェア再利用の割合に関する数値で、参考文献が示されていたもの。 見た資料は以下。他にもあれば追加。 Jalender, B., A. Govardhan, and P. Premchand. "A PRAGMATIC APPROACH TO SOFTWARE REUSE." Journal of Theoretical & Applied Information Te…
RHEL標準の機能のみで、外から追加のモジュール等を導入することなしに採用可能な方法の候補を列挙してみた。また商用JavaEEサーバの場合は専用の機能があるケースもありそうだが、Tomcatの場合に使える方法の候補も調べてみた。 制御箇所の候補 TCP/IPレベ…
設計とコードとの整合性で担保できるのは「設計限界品質」(IPA 平成30年度春期プロジェクトマネージャ試験(PM)午後I 問2)であって、実際には設計の内容を業務仕様に照らして「正しい」と言える場合にのみ利用できる指標だ、ということなんだろうか。 業…
非機能要件の安全率として「どのくらいの安全率なら適切か」という値はありません *1 (研究もないように思います)。IPA 非機能要求グレード *2 の「04_項目一覧.pdf」では、性能目標値の「余裕率」として、1倍・1.2倍・1.5倍・2倍・3倍・10倍以上から選択…
以下のような前提条件が満たされると、日本のSIer的なソフトウェア工学の有用性が高くなるのかな?という想像。 解雇規制が強い(↔カリフォルニア州の雇用法。突然の解雇が合法 *1) 雇用の流動性が低い(↔エストニア等で高い。アメリカは中位で、日本は非常…
UR都市機構 Open Smart URのコンセプトブック「UR 2030」*1では、「プログラミングできるのが普通の若者たち」という2030年の若者像を示しています。 では、この「若者たち」とは、具体的にどういう人たちから構成されるのでしょうか? SSP*22030(階層と社…
どっちかもいうとこっちが本題。 さて、ソフトウェア考古学の目的としては、 レガシーシステムの保守開発の効率化 システムの仕様理解の補助 の他にも、poorly-documentedなレガシーシステムのソースコードから、その仕様(あるいは意図)を読み解き復元し、…
ソフトウェア考古学(Software Archaeology)という考え方は、OOPSLA 2001で提唱されたのが始まりのようです *1。 Wikipediaにある通り *2 、poorly-documentedなレガシーシステムのソースコードやドキュメントをどう読み解くか?というところから始まったよ…
「Java経験年数〇年以上のプログラマ募集」みたいなフレーズ、よく聞きますよね*1。求めるスキルを示すのに「〇〇言語でプログラミングができること」あるいは「〇〇言語経験年数〇年以上」という表現を使うことはよくあるようです。ですが、このレベルの記…
プログラムをテストするときに、テストの充分性を示す指標として、C0とかC1とかのカバレッジ(コードカバレッジ)がよく使われます。 C0やC1は、実行されたことがない順次処理や、分岐したことがない分岐処理が、プログラム中に残っていないか計測するための…
よく「システムが○時間止まった」というトラブルを指して「事故」という言葉が使われる。 高校や大学では使ったことのない用語だったので、これって業界用語だよね?と思って調べてみると、どうやらそうでもないみたい。プログラムのバグや、それに起因した…