Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

Software Engineering

システム開発に使用する言語の習得にかける時間の例

まったくの素人から平均的プログラマとなるまでの時間*1の他に、システム開発への採用可否を判断できるまでにはどれくらいの時間が必要か?というのもある。 全く見ず知らずの言語をシステム開発に採用するのはリスクが高い、一方で言語に完璧に精通してから…

アジャイル型ソフトウェア開発におけるmoving targetという語の初出

「アジャイル型ソフトウェア開発は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/D/s(M/D/c)の特性の違い

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とかCCoEとかOSPOの存続

企業内において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…

JavaEEアプリケーションサーバに対するHTTPリクエストの流量制御が可能な箇所の候補

RHEL標準の機能のみで、外から追加のモジュール等を導入することなしに採用可能な方法の候補を列挙してみた。また商用JavaEEサーバの場合は専用の機能があるケースもありそうだが、Tomcatの場合に使える方法の候補も調べてみた。 制御箇所の候補 TCP/IPレベ…

開発プロセスのアジリティと設計限界品質

設計とコードとの整合性で担保できるのは「設計限界品質」(IPA 平成30年度春期プロジェクトマネージャ試験(PM)午後I 問2)であって、実際には設計の内容を業務仕様に照らして「正しい」と言える場合にのみ利用できる指標だ、ということなんだろうか。 業…

非機能要件の安全率の事例収集

非機能要件の安全率として「どのくらいの安全率なら適切か」という値はありません *1 (研究もないように思います)。IPA 非機能要求グレード *2 の「04_項目一覧.pdf」では、性能目標値の「余裕率」として、1倍・1.2倍・1.5倍・2倍・3倍・10倍以上から選択…

日本のSIer的なソフトウェア工学が必要とされる前提条件

以下のような前提条件が満たされると、日本のSIer的なソフトウェア工学の有用性が高くなるのかな?という想像。 解雇規制が強い(↔カリフォルニア州の雇用法。突然の解雇が合法 *1) 雇用の流動性が低い(↔エストニア等で高い。アメリカは中位で、日本は非常…

「プログラミングできるのが普通の若者たち」のレベル感

UR都市機構 Open Smart URのコンセプトブック「UR 2030」*1では、「プログラミングできるのが普通の若者たち」という2030年の若者像を示しています。 では、この「若者たち」とは、具体的にどういう人たちから構成されるのでしょうか? SSP*22030(階層と社…

ソフトウェア考古学論考 (2)

どっちかもいうとこっちが本題。 さて、ソフトウェア考古学の目的としては、 レガシーシステムの保守開発の効率化 システムの仕様理解の補助 の他にも、poorly-documentedなレガシーシステムのソースコードから、その仕様(あるいは意図)を読み解き復元し、…

ソフトウェア考古学論考 (1)

ソフトウェア考古学(Software Archaeology)という考え方は、OOPSLA 2001で提唱されたのが始まりのようです *1。 Wikipediaにある通り *2 、poorly-documentedなレガシーシステムのソースコードやドキュメントをどう読み解くか?というところから始まったよ…

平均的プログラマ以前向けのスキルの指標

「Java経験年数〇年以上のプログラマ募集」みたいなフレーズ、よく聞きますよね*1。求めるスキルを示すのに「〇〇言語でプログラミングができること」あるいは「〇〇言語経験年数〇年以上」という表現を使うことはよくあるようです。ですが、このレベルの記…

非手続き型言語における機械的計測可能で客観的なテスト充分性の指標

プログラムをテストするときに、テストの充分性を示す指標として、C0とかC1とかのカバレッジ(コードカバレッジ)がよく使われます。 C0やC1は、実行されたことがない順次処理や、分岐したことがない分岐処理が、プログラム中に残っていないか計測するための…

「事故」という用語の由来

よく「システムが○時間止まった」というトラブルを指して「事故」という言葉が使われる。 高校や大学では使ったことのない用語だったので、これって業界用語だよね?と思って調べてみると、どうやらそうでもないみたい。プログラムのバグや、それに起因した…