コンピュータやソフトウェアのあれこれ@道民(&元道民)
ソフトウェア開発
[きのこ97][ソフトウェア開発][Planet] 00-実践する、コツコツと、少しづつ
4月 10th
@shokos さんのブログのすすめからバトンを頂き、新卒準備カレンダー 2011春のエントリーをお届けします。自分がブログを書き始めたのは2007年です。ブランクはあるものの、業界経験は約11年ですから、まあ半分くらいの期間はブログを書いていることになります。先日まで、きのこ本関連のエントリーを毎日書くという目標の下、なんと106日間継続を達成しました。 他の方々が素晴らしいエントリーを書いているので、いまさら「これやった方がいいよ」的なエントリーでは面白くありません。なので、自分は「どうやってや ...
[ソフトウェア開発] ソフトウェア開発会社に入って学ぶべき最初の事
4月 6th
主に受託開発がメインのソフトウェア開発を行っている会社に入って学ぶべき最初の事です。よく、プログラミング言語を幾つか学べとか、技術的な部分が重要と言われています。しかし、個人的にはそれも大切かと思いますが、最近は開発プロセス・テスト技法・ドキュメンテーション能力などを学ぶ方が重要なのでは?と感じています。 技術的な部分を後にする理由 技術的な部分は業務を行っている中で、いくらでも学ぶ機会があります。少なくとも1年目や2年目では自分で新しい技術を持ってきて設計したりという事は少ないでしょう。すると、そ ...
[ソフトウェア開発][Test]同値クラステスト
4月 4th
同値クラスとは「内部的に同じ値として扱う範囲」であり、同値クラステストはプログラマが自然と行っているテスト手法の1つです。 例えば、整数を1つ引数に取り20未満である場合にtrueを返す関数があったとします。この関数をテストする為の妥当な入力値として、私たちは10と30のようにtrueを返す値1つと、falseを返す値1つの2つを選択するでしょう。人によっては5と20を選択するかもしれません。しかし、0と10の選択ではあまり効果的ではないと”なんとなくは”理解できます。この”なんとなく”は同値クラスと ...
[ソフトウェア開発][Test] テストケースの入力値
4月 3rd
ソフトウェアテストのテストケースでは、ある入力値に対して期待する結果となることを検証します。すべての入力値に対してテストケースを作成できたとすれば、完璧なテストとなるわけですが、現実問題としてすべての入力値に対するテストケースは網羅できません。したがって、入力値の全体集合の中から幾つかの入力値を選択し、テストケースを構成する事が、テストを効率よく実施するポイントになります。 この大きな集合から部分的な集合を抽出するというプロセスは、アンケートなどでも行われます。しかし、アンケートでは可能な限り無作為に ...
[Test][ソフトウェア開発] パーフェクトソフトウェア
4月 2nd
完璧なソフトウェアは作ることができませんし、作ろうとしてもいけません。 これは、ソフトウェア開発のテストに関する最も重要で基本的な事でありながら、中々理解されない事です。他のどんなものでもそうですが、作り手が人間である以上は完璧な物を作ることはできません。 ソフトウェアは形がないものですから、その品質を保証するためにはテストを行う必要があります。仮に「完璧な」ソフトウェアである事を保証するのであれば、「完璧な」テストが必要です。想定される環境すべてで想定されるすべての入力に対しテストする必要があるでし ...
[ソフトウェア開発][雑感] 提案力とコミュニケーション
4月 1st
ソフトウェア開発に携わるならば、論理的に分析する能力は重要ですが、それと同等に表現力や提案力も重要です。 ソフトウェア開発を行っていれば、個人で自分のためにソフトウェアを開発してるのでもない限りは、そのソフトウェアの特徴や売りなどを顧客・ユーザ・ステークホルダに説明する事は避けられません。どんな優れたソフトウェアであっても、その事が伝わらない限りは使って貰えませんし、あまり良くないソフトウェアであっても提案の仕方によっては使って貰えます。勿論、優れたソフトウェアを使って貰うのがベストですが、その時に重 ...
[ソフトウェア開発][Test] ソフトウェア開発とテスト
3月 30th
ソフトウェアは形を持たないため、「ソフトウェアを定量的に評価する」という事が困難です。このため、ソフトウェア開発ではテストを通して、主に品質を評価しています。しかし、建物を作ると言っても超高層ビルから犬小屋まであるように、ソフトウェア開発といっても様々な形態・規模があります。ソフトウェア開発にはどんな規模があるか、どの程度のテストが求められているかを整理してみます。 書き殴りのスクリプト パソコンを使って少しだけプログラマティックな処理を行いたいような場合、スクリプト言語などで簡単なプログラムを書く ...
[Test][ソフトウェア開発] テストのプロセス
3月 30th
というわけで、「はじめて学ぶ ソフトウェアのテスト技法」を読み直しているので、メモ*1。 テストとは? IEEE 標準規格 610.12-1990による定義。 ある特定の条件下でシステムまたはコンポーネントを操作するプロセスであり、その結果を観察または記録して、システムまたはコンポーネントのある側面を評価すること テストの成熟度 テストに関して以下の5つの成熟度(レベル)がある レベル0ーテストはデバッグと同等 レベル1ーテストとはシステムが動くことの確認 レベル2ーテストとはシステム ...
[きのこ97][ソフトウェア開発][Planet] 97-ステートに注目する
3月 27th
「プログラマが知るべき97のこと」の97個目のエピソードは、ステート(状態)に関する話です。学習を怠っていないプログラマであれば、「ステート」という言葉を聞いて「ステートマシン(図)」と「ステートパターン」などを連想すると思います。このエピソードにも書かれているように、プログラムの中では「ステート(状態)」は重要な要素で、注意深く扱わなければなりません。 仕事をしていると、必要なチェックが抜けているコード、冗長なチェックをしているコードは頻繁に目にします。 自分もこれはよく目にしました。ヒアリング ...
[きのこ97][ソフトウェア開発][Planet] 96-テストは正確に、具体的に
3月 26th
「プログラマが知るべき97のこと」の96個目のエピソードは、ユニットテストに関する話です。 先にも書いたとおり、ユニットテストにおいては、実装コードの「偶然の仕様」への合致を確認するのではなく、コードの動きが本来の要求に合っているかを確認することが大切です。だからと言って、それを言い訳にテストが曖昧なものになるようでは困ります。テストはあくまで正確で厳密なものでなくてはなりません。 このエピソードの著者であり、きのこ本の編者でもあるケブリン・へニー氏のソースコード・ユニットテストに対する思想は、「 ...