人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

個人で10万行を超えるソフトウェアを書くコツがあれば教えてください。

自分は趣味でも仕事でもソフトウェアを書いていますが、だいたい2、3万行程度のソフトウェアを書くことよくあります。逆にそれ以上のソフトウェアを書くことはありません。だいたい、そうなっていしまう理由は、仕事の場合はそれぐらいでソフトウェアが完成するから、趣味の場合もある程度形になってしまうのと、飽きてしまうのが大きいでしょうか。でも、何となく元々自分には10万行超のソフトウェアを書けないのでは、という気がします。

巷をみると、ものすごい生産性で大量のコードを書いている人がいて、そういうのを見ると、いったいそういう人はどうやっているのかな、というのが最近疑問に思っています。

やはり、「きちんとしたソフトウェア」はそれなりの規模になることが多く、個人でもそのような「きちんとしたソフトウェア」を書いてみたいのですが、何かコツがあったら教えてください。

ついでに自分の場合はコードを書く速度自体はそんなに早くないです。ソフトウェア開発を始めて10年選手ですし、勉強もそれなりにしています。

●質問者: kmt-t
●カテゴリ:コンピュータ
✍キーワード:コード ソフトウェア 勉強 生産性 趣味
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● garyo
●20ポイント

10万行ですか。IPAの実態調査が以下にあるので参照願います。

https://sec.ipa.go.jp/download/files//report/200606/es06r002.pdf

Q3-1a新規開発行数(組込み製品開発)

通常は一人でなく複数の人で作成すると思います。

ソフトウエア開発にはいくつかのレベルが存在すると思います。

1.一人で開発

2.数人で開発

3.数十人以上で開発

一人の人の生産性は決まっているため、開発規模が大きくなればそれだけ工数(人月)も必要になります。

あえて複数の人で開発を行わず、一人で実装する場合、やはり、規模が大きくなれば、全体の見通しが悪くなることが問題としてあげらると思います。

UMLツールを活用し、全体の設計をしっかりと行えば開発規模がおおきくなっても大丈夫だと思います。

後は各モジュールの独立性(カプセル化)を進めることが、大規模な開発では必要なことだと思います。

◎質問者からの返答

すみません。とりあえず、該当箇所だけ読みました。自分としての印象は自分のかかわったプロジェクトはあまり大きくない(新規コードが少ない)と思ってたんですが、実は世間一般では普通レベルだったのがわかりました。

こういうデータは非常に有用です。

やはり、そうすると個人で10万行というのはかなりスペシャルな感じがします。フルタイムでやらないと無理かな...。

> 後は各モジュールの独立性(カプセル化)を進めることが、大規模な開発では必要なことだと思います。

そうですね、モジュールの独立性が高くないと規模的にコントロール不能になるのと、一か所直すと別のモジュールを直さないといけないのでは、永久に終わりませんからね。理想的には一度完成したモジュールは手をつけないぐらいでないと。

大変参考になりました。


2 ● siigimaru
●20ポイント

ソフトウェアといっても、何の言語で書かれているかわかりません。

機械語でかけば、嫌でも行数は増えますが、それよりも処理パターンを多く覚えれば、それだけで「きちんとしたソフトウェア」になります。

10万行をこだわらなくても、きちんとパズルのピースみたいに処理パターンを組み込めば、システムが大きくてもそんなに行数必要はありません。

◎質問者からの返答

> ソフトウェアといっても、何の言語で書かれているかわかりません。

10万行っていう数字は実はあんまり定量的でない(その他に変数が多すぎる)ですが、C++とかJavaとかC#とかそこら辺をイメージしています。

> きちんとパズルのピースみたいに処理パターンを組み込めば、

当然これは前提で、これをやった上での10万行です。


3 ● ひでと
●20ポイント

「2、3万行程度」を連結して、1つの大きな動作にしてるだけですよ。

処理ブロックを分けて、ブロック間の連結を1つ上のレベルから制御できる設計にすれば、何の言語でも、どんな作業でも、10万行を超える物を作れると思います。


でも個人で10万行超えるソフトってかなりの大作でしょうし、一生作ることはないかも知れませんね。

◎質問者からの返答

> 「2、3万行程度」を連結して、1つの大きな動作にしてるだけですよ。

やはりこの規模になると統治分割で作業をブレークダウンしてやらないと無理ですね。前の回答にもありますが、機能分割とかコンポーネントの独立性とか重要な気がします。

> でも個人で10万行超えるソフトってかなりの大作でしょうし、一生作ることはないかも知れませんね。

やっぱり個人では10万行は大作、というのが通常の感覚でしょうね。個人的にはその壁を越えてみたいと思っているんですが。


4 ● Yoshiya
●20ポイント

プログラムソースの品質を考慮に入れなければ、大量のソースコードを記述する事も可能だと思いますが、品質を考慮すればその前段階の設計にかなりの時間が取られると思います。

そもそも、一月で10万ステップのソースを書けると自慢している人がいますが、どの程度の品質なのかは疑問です。

コンピューターシステムは最初から完璧なものは無く、運用後に出てくる不具合を潰しながら最終的に品質を上げていくものですが、前段階(設計?結合テスト)において重大な不具合を潰していかなければ、システムの再構築を余儀なくされる事も珍しくありません。

ソフト開発の生産性も重要なファクターだとは思いますが、それよりも品質の向上をめざすべきだと思います。

品質を考えるのであればできるだけ設計段階から機能分割していかなければならないですし、設計に相当の時間をかけるのであれば一月に10万行は不可能に近いのではないでしょうか?

私は、MS-DOSからのプログラマなのであまり開発速度は早くありません。 一月で1万ステップが最大でした。

自分で作ったシステムでも2万ステップが最大です。

◎質問者からの返答

> 設計に相当の時間をかけるのであれば一月に10万行は不可能に近いのではないでしょうか?

設計がネックになる、というのは職場で他の人と話をしたときにでました。10万行個人で書くには設計がフィックスしてるという前提が必要ですね。

自分の場合、ソフトウェアを開発するのは自分だけなので作りたいものは自分の頭にあるし、結構あまり深く考えなくてもそれなりに妥当な設計ができるスキルがあるので、設計のオーバーヘッドはお客相手の仕事よりかなり小さいと思いますが、それでも足を引っ張っています。

もう一ランク高いスキルを身につけて、キーを叩いている時間より設計している時間が短いと言えるようになりたいです。

> 私は、MS-DOSからのプログラマなのであまり開発速度は早くありません。 一月で1万ステップが最大でした。

自分もほぼ似たようなレベルです。一月で最大で2万行書いたのがマックスです。


5 ● garyo
●20ポイント

http://iserlone.minidns.net/webtools/cocomo.php3

cocomo法で見積もりを計算してくれるサイトがあったので試算してみました。

100000ステップ:13人で21ヶ月と出ました。(一人でやると25年ですね)

工数: 302.14 人月

開発期間: 21.90ヶ月

開発要員: 13.80人

生産性: 0.33KStep/人月


うちの会社では数人?十数人で半年、数十kLOCというプロジェクトが多いので10000ステップで計算してみたら、大体こんなものかなという値が出てました。

工数: 26.93 人月

開発期間: 8.74 ヶ月

開発要員: 3.08 人

生産性: 0.37 KStep/人月

前回回答したURLと同じものですが、

https://sec.ipa.go.jp/download/files//report/200606/es06r002.pdf

xQ1-1a事業カテゴリ(組込み製品開発)

上記によると10万行を超えるようなプロジェクトは以下の製品に多そうです。

AV機器 個人用情報機器 教育機器、娯楽機器

また、こちらの結果を見ると

xQ2-1-5a各工程の内部工数と外部工数:1万行未満

xQ2-1-6a各工程の内部工数と外部工数:1万?10万行未満

xQ2-1-7a各工程の内部工数と外部工数:10万行以上

十万行を超えると詳細設計、単体テスト、結合テストの比率が大きくなっていることがわかります。

◎質問者からの返答

世間的にはCOCOMOIIとかあんま評判がよくない(こういう手法をつかっても見積もりは結構ブレる)ので、個人的には信用してなかったんですが、こういう結果ですか。

生産性がかなり低めに数字がでますが、プロジェクト全体としてはそうなってしまうのはしかたないような気がします。

個人的な印象では開発人員が増えるとひとりあたりの生産性が落ちることが多いので、個人による開発は生産性という意味では最大値に近いと思います。自分の程度のスキルでも、個人での開発ではCOCOMOIIの10倍前後のパフォーマンスはでます。COCOMOIIの見積もりを1/10にすると、大体自分が想像している数字になりますね。

先月一か月、自分のプライベートな時間の生産性を計測していたんですが、作業時間は一日平均1時間程度で200ステップ/日でした。月換算では6000ステップ/日ですね。テストも同時にやっています。フルタイムでやっている仕事の方も、ひとりでできる1万行程度の小さな仕事の場合はそれ以上ですね。

ついでに言うと、仕事でやっている数百万ステップの一番大きなプロジェクトを見積もると、だいたい妥当な数字です。それでも数倍程度のブレはありますが。

ファンクションポイントの本は家に転がっていて読んでないですが、これを機会にCOCOMOIIと一緒に勉強してもう一度作業を見積もってみようかなと思います。これぐらいの本なら一日あれば読めますし。

---

件のpdfに関しては、10万行以下と、それ以上では工数の配分が別世界になってますね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ