見積手法の種類

見積もりがうまくいけば、9割がたプロジェクトは成功したようなものだ。


そんな言葉を聞いたことがある。(私の心の叫びか?)見積もりに参加する人はプロジェクト開始当初から参加しているごくわずかな人だけだ。


このほんのわずかな人数での作業が、これから参加する多くのエンジニアの命運を左右する。責任重大だ。だからこそ精度の高い見積もりが求められる。


さて、そんな見積もりだが、方法論は確立しているのだろうか。次の記事ではその方法論を記載している。ずいぶんと色々な手法(方法論)がある。一長一短があるのだろう、システムはどれも似て非なるものなので、色々な種類の見積もり手法があるのは当然とも思える。


しかし困ったもので、経験不足の私にとって、どの手法を用いていいのかわからない。これはだれかに相談だわ。この時点で私の存在する意味は皆無になるのだが、今後のために技術蓄積および経験蓄積として勘弁してもらうことにしよう。



Think IT  第4回:コスト管理の構造と見積手法
https://thinkit.co.jp/cert/project/1/4/2.htm


見積もりがブレるメカニズム
http://itpro.nikkeibp.co.jp/article/COLUMN/20080901/313837/?rt=nocnt


工程別基準工数比率
http://www.newspt.co.jp/contents/manual/yes/2_mi/3a02.html


ソフトウェア開発見積りの基本的な考え方
https://www.ipa.go.jp/files/000005398.pdf


WEBシステム開発の見積の出し方について考えてみました

機能設計書を自動生成

NEC、システム構築基盤ソフトにハイブリッド開発手法--機能設計書も自動生成



やっぱりNECはすごいなぁ。勉強になる。富士通も同じようなサービスを展開をしているので、そちらもチェックしてみよう。(富士通:http://japan.zdnet.com/article/35020479/?tag=mcol;relArticles


最近では設計書を作成しないプロジェクトも多いと聞きます。ですので、こうしたリバースエンジニアリングによるソースコードから設計書を作成したり、要求分析から設計書を自動で生成するサービスは売れるのではないかと予想できますね。


それにしても、NECの作成するドキュメントは相変わらず「ダサい&分かりやすい」だなぁ。好きだなぁ。こういう玄人向けのデザイン。



機能設計書の書き方

機能設計書を私は書いたことがない。

詳細設計書は書いたことあったかな?覚えはない。

いつもは基本設計書からプログラミングしていた。それは基本設計書作成をする人とプログラミングをする人が密接に連携できる環境にあったからだろう。基本設計書を作成した人がそのままプログラミングなんてことも多かった。

なにより、プログラミングする人はプログラムだけでなく、プログラムを組むため必要となる情報は自分で整理して資料を残していた。

しかし、世間ではプログラマーはプログラミングしかしないようだ。しかも誰がプログラムを組んでも同じようになるように設計書を作れということがあるらしい。そんなことするなら、設計書じゃなくてプログラム作ればいいのに。と思ってしまう。

私が働いていた環境では研究という側面もある開発だったからかもしれない。これらのギャップ感は否めないが、柔軟に対応していくより他はない。あまり根詰めずに、楽しんで仕事していこう。わからない部分はできないのだから、聞くまたは根拠に基づく予測で仕事をしていく。

とりあえず先立つものがないことには仕方がないので、機能設計書の書き方をわかりやすく記載してある資料を提示しておく。

サンプル例に見る機能仕様書の基本的な書き方&読みやすくする7つのテクニック
http://www.atmarkit.co.jp/ait/articles/1502/06/news013.html


デルファイのお勉強04

前回『https://somegoro.blogspot.jp/2016/08/blog-post_7.html』に引き続き、デルファイのお勉強をしていきます。今回も参考資料は次のサイトを使用させていただきます。

クジラ式 Delphi 資料
http://oto.chu.jp/a.oto.chu.jp/kujira/text/delphi/index.htm

それでは始めましょう。

■ループ処理

・while文でループさせる

while  条件式 do
  処理;

これは一般的な while の処理って感じですね。他の言語と変わらないでしょう。
条件式が true ならば処理を実行します。false ならば処理を実行せずに終了です。

・for文でループさせる

for  変数 := 初期値 to 終了値 do
 処理 ;

これは少々特殊な感じがしますね。初期値を変数に代入して、処理を実行します。
そして、変数が終了値になるまでループを続けます。
終了値になったら、処理を実行して終了します。最後に処理を do することが肝ですね。

・repeat文でループさせる。

repeat
  処理1 ;
  処理2 ;
until 条件式;

これは do while みたいな感じですね。まず最初に処理を実行する、その後に条件式によりループするかどうか判定する。

・Breakで、ループ処理から抜ける
・Continueで、ループ処理の頭からやりなおす。
・Exitで、プログラム自体を終了させる。

これらは一般的ですね。どれもループから抜け出す方法です。


■定数

定数は値の変わらない変数のことです。Java で言うところの final 型の変数、C や C++ では定数がありますね。書き方は C や C++ とほとんど同じです。

const
 TEISU = 10;

これで TEISU という名前の定数が出来ました。10 という値は変えることが出来ません。デルファイの変数宣言の仕方とは少々違うんですね。デルファイでいうと条件式に似てますね。


■関数
デルファイにも関数があるようです。2つのタイプの関数があってそれぞれ機能が異なります。

 ・procedure ←値を返さない
 ・function ←値を返す

それぞれ見ていきましょう。

・procedure

書き方はこのとおりです。これで Kansu_kun01 という名前の関数ができました。戻り値は無く、処理をするだけの関数です。

procedure Kansu_kun01 ( HIKISU_MOJIRETU : String );
 begin
 処理;
 end;

引数はセミコロンでつなぐことで複数指定することが出来ます。さらに呼び出すときには次のようにします。

begin
 Kansu_kun01( 'Hello_World' );
 Readln;
end.

このとき、呼び出す前に関数を宣言および作成しておかないと、エラーになってしまうようです。


・function

書き方はこのとおりです。これで Kansu_kun01 という名前の関数ができました。戻り値がありますので、処理をして値を返します。おそらく、Result に値を設定することで戻り値として吐き出せるのでしょう。

function Kansu_kun02 ( a : Integer; b : Integer ) : Integer;
 begin
  Result := a + b;
 end;

var
 test_kekka : Integer;
begin
 test_kekka := Kansu_kun02 ( 1, 2 );
 Writeln ( test_kekkakekka );
 Readln;
end.

こちらも、メイン処理にて関数を呼び出す前に、関数を宣言および作成しておかないと、エラーになってしまうようです。


・メイン関数

メイン関数は関数宣言せずにいきなり begin で始まり、end. で終了します。こんな感じです。

begin
 処理;
end.

上記でも度々登場していますね。

この辺で1000文字を超えてきたので一旦区切ることにします。

それではまた。

デルファイのお勉強03

前回『https://somegoro.blogspot.jp/2016/08/blog-post_6.html』に引き続き、デルファイのお勉強をしていきます。今回も参考資料は次のサイトを使用させていただきます。

クジラ式 Delphi 資料
http://oto.chu.jp/a.oto.chu.jp/kujira/text/delphi/index.htm

それでは始めましょう。

■型変換について
・IntToStr() は、Integer 型から、String 型に変換する処理。中身にInteger 型を入れれば、String 型で吐き出してくれる。

・FloatToStr()は、 Double型から、String型へ変換する処理。上記と同じ感じ。

・ Delphiには親切なヘルプが付いているらしい。どうやってみるのだろうか。

・Trunc( ) は、少数点以下を切り捨てる処理。

・Round( )は、 小数点以下を四捨五入する処理。
・Readln()は、ユーザーから入力を得る処理。中身の変数で入力を受け付ける。

・StrToIntDef( , )は文字列から整数に変換する処理。
二つの引数を指定する。最初に変換対象、次に変換できなかった時に吐き出す値。
すると、今まで変換できなくいとエラーとなって終了になってしまっていたものが、終了にならずに第二引数で指定したものが吐き出される。

■条件分岐について
・if 条件式 then 
  処理01;
 else
  処理02;

条件分岐処理は上記のように記載する。

・条件式は次のとおり
a = b
a > b
a < b
a >= b
a <= b
a <> b

・併せて書くとこんな感じになる

if a = b then 
  処理;

aとbが同値ならば配下処理を行う。
このとき、かっこがないのでわかりづらいけど都合よく次の処理を実行してくれる。
同値でないなら次の処理を飛ばして、その次の処理に行く。
else もふつうに使用できる。これもかっこは必要なし。
  
わかりやすく書くとこんな感じになる。(もちろんこれでも正常に機能する)
  
if ( a = b ) then 
  処理;

・and で、複数の条件式で判定する

このように書くと複数の条件で条件分岐処理を書くことができる。and は、「かつ」という意味です。一般的な言語と変わらないですね。

if ( a = b ) and ( a = c ) then 
  処理;

・or で、複数の条件式で判定する

このように書くと複数の条件で条件分岐処理を書くことができる。or は、「または」という意味です。一般的な言語と変わらないですね。

if ( a = b ) or ( a = c ) then 
  処理;


■ラベル
関数の名前みたいな感じでしょうか。ラベル名の下に処理を書きます。これもカッコなどでは囲わないので改行でまとまりの終了が判断されます。
ラベル名01
 処理01;
 処理02;

ラベル名02
 処理01;
 処理02;

こんな感じで書かれます。私を含め、今時の言語になれた人には違和感を感じますね。

・begin の前に宣言します。

・label NANTOKA_LABEL;
このように終了はセミコロン;です。

・label NANTOKA01_LABEL, NANTOKA02_LABEL;
2つ以上宣言したい場合はカンマ(、)で区切ってこのように宣言することができます。

・goto ラベル名;
これでラベル名の処理が実行されます。

さて、1000文字を超えたので、この辺で区切ろうと思います。

それでは。

デルファイのお勉強02

前回『https://somegoro.blogspot.jp/2016/08/blog-post.html』に引き続き、デルファイのお勉強をしていきます。今回も参考資料は次のサイトを使用させていただきます。

クジラ式 Delphi 資料
http://oto.chu.jp/a.oto.chu.jp/kujira/text/delphi/index.htm


それでは始めましょう。
GUIはコンポーネントをクリックするだけで画面上に対象のコンポーネントを表示させることができると紹介した。

ではもう一つのタイプのCUIはどうでしょうか。これはコンソールタオイプの画面ですね。図とかは表示させることはできません。しかし文字は表示させることが可能です。Windowsで開発の場合、一般的にはMS-DOSプロンプトを使うことになるでしょう。

このCUIは機能確認のときにあ便利らしいです。なぜかは今のところ、わかりません。それでは進んでいきましょう。


■コンソールについて
・コンソールの時も 処理はbeginからend.までの間に記載します。

・コンソール版でもエラーは出る。型が合わないものを入れたりしようとすると。
  どういう風にでるのかは不明。実際に試してみたいけど、これ(デルファイ)無料なのかな??


■処理について
・Readln;は、キーの入力待ちをする処理です。

・Writeln('ここに表示したい文字または数字を記載する。');という処理です。

・Writeln(この中では演算処理も可能);という処理です。

・演算子modは、割り算の余りを出してくれます。


■変数について
・変数は var Test : Integer; こうやって書く。
  この場合 var が変数宣言。Testが変数。Integer が型。

・変数宣言は一回書けば良い。だから2個の変数を扱いたいときは次のように書く。
  var
      Test01 : Integer;
      Test02 : Integer;

・変数はbeginからend.までの間には書けない。じゃどこに書くのっていうと、begin の前。
  宣言するみたいな感じですね。

・変数の代入の仕方  Test := 10000000000000; これで変数Tstに数字10000000000000を代入することが出来た。みづらいかもしれないから全角で書くと、:=となっている。

・デルファイは大文字小文字の区別をしない。
  だから変数書くときには要注意。文字検索では引っかからなくとも、実際には同じ変数というのがある。


・変数の種類
変数にはいろいろなものがありますが代表的なものです。代表的なものは他の言語と変わらないですね。

 Integer  整数
 Double  実数
 String  文字列
 Boolean  真または偽
 Char  文字型かつ半角一文字

・配列型変数

上記の方法では、変数を100個宣言するのは非常に大変ですね。そこで便利な宣言方法があるのです。それが配列型変数です。

HTest : Array [ 1..100 ] of Integer;

これで変数を100個作成することが出来ました。 HTest[1], HTest[2], HTest[3] という感じで、  1~100までの配列型の変数ができています。

また、こうすれば値も入力できた状態で変数を宣言することができます。

var
 kokugo : Array [ 1..5 ] of Integer = ( 10, 20, 30, 40, 50 );


・ローカル、グローバル

これも他の言語でお馴染みのものです。デルファイにもあります。

ローカル変数は、関数内で宣言したもので、宣言した関数以外の関数内では使用することが出来ません。

グローバル変数は、関数の外で宣言されたもので、プログラム全体で使うことが出来ます。



そろそろ1000文字を超えたので区切ります。
次回お楽しみに。(おもてなしする文章ではないですね(^^;))


デルファイのお勉強01

ここで唐突にデルファイのお勉強を始めます。

まずデルファイとは何なのか確認してみましょう。

Delphi
Embarcadero Delphi (エンバカデロ デルファイ) は、コンソール (CUI)、デスクトップ (GUI)、Web、モバイルアプリケーション開発のための統合開発環境 (IDE) である。

wikipedia(https://ja.wikipedia.org/wiki/Delphi)より


統合開発環境なんですね。言語じゃなくて。

じゃ言語は何なの?というと今のところ不明です。wikipediaには記載なしでしたが、このまま調べていけばわかることでしょう。

とりあえず今回はわかることをザッと書いていきます。

次のお方のサイトが非常に見やすいんじゃないかと思いましたので、確認するサイトはこれらを見ていこうと思います。

クジラ式 Delphi 資料
http://oto.chu.jp/a.oto.chu.jp/kujira/text/delphi/index.htm

Delphi入門
http://www.w-frontier.com/delphi/index.html


イメージとしては「C++ Builder」に近いらしいです。同じボーランド社発のものですし。


さて、お勉強にあたって引用記載はしない方針でいきます。(引用と記載することや引用箇所を明示すると、学習の流れの妨げになるためです。) 一般的なプログラミング手法で書きつつ、上記サイトで紹介されていることの要点をまとめる形式で備忘録的にブログを書いていこうと思います。

それではスタートです。

・早速出てきました。 言語はDelphi言語というらしいです。
・部品コンポーネントをクリックすることで画面を作っていく。
・F9で実行

・部品コンポーネントを置いただけでは表示されるだけ。実際の動作は自分でプログラムを記載しないといけない。

・ボタンコンポーネントをクリックすると、画面上にボタンが現れる。そのときのプログラムは次のとおりである。
 procedure TForm1.Button1Click(Sender: TObject);
 begin

 end;

この begin end 間にプログラムを書いていく。うん、今のところ実に簡単だ。

・ポップアップメッセージの出し方。先ほどの容量で次のように記載する。
 ShowMessage('ここにポップアップメッセージを記載する。シングルダッシュで囲ってる');

・テキストエディタの内容をポップアップ表示させる方法は次のように記載する。
 ShowMessage(Memo1.Text);

このとき、Memo1はおそらくテキストエディタのIDのことでしょう。IDは自動割り当てなのかな。記載していなかったけど。そのIDはどこを見れば確認することができるのだろうか。


この辺で1000文字を超えてきたので一旦区切ることにします。

それではまた。


上司がクソ野郎になってきた

上司がクソだ。 全然勉強していなくて話が通じなくてクソ REST知らないってどういうことなんだろう。弊社標準になってから久しいJavaをまともに組めないってのはどういうことなんだろう。 計画上では詳細設計フェーズが半分を過ぎようというときに要件定義できていないってのはどう...