- ソフトウェア品質特性
- テストファースト(テスト駆動開発)
- リファクタリング
- ソフトウェアメトリックス
- ソースコードの依存関係の可視化
- 静的解析ツール
- 循環的複雑度
- 凝縮度
- 結合度
- OSS
(1) ソフトウェア品質特性について
ここでのポイントは、ソフトウェア品質特性には、「機能性」「信頼性」「使用性」「効率性」「保守性」「移植性」の6つの特性があるということである。
以下のサイトに詳しく説明されている。
■ 外部品質、内部品質とは?ソフトウェア品質特性について
→ 国際規格や国内規格としては 「ISO/IEC 9126」 に登録されている。
[参考]
・ISO(国際標準化機構)
・IEC(国際電気標準会議)
なお、ソフトウェア品質特性については、以下のようにITパスポート試験でも取り扱っている。 → 「ITパスポート試験 用語辞典 ソフトウェア品質特性」
(2) テストファーストについて
テストファーストは、テスト駆動開発と同じ意味である。
テスト駆動開発の説明は「テスト駆動開発 Wiki」
を参照のこと。
ソフトウェアのテストについては、以下の本をお勧めします。
- ソフトウェアテスト教科書 JSTQB Foundation 第4版 シラバス2018対応
- 【この1冊でよくわかる】ソフトウェアテストの教科書―品質を決定づけるテスト工程の基本と実践
- はじめて学ぶソフトウェアのテスト技法
- 知識ゼロから学ぶソフトウェアテスト 【改訂版】
- [改訂版] 演習で学ぶソフトウェアテスト特訓150問 ~JSTQB認定テスト技術者資格FoundationLevel対応
・「[改訂版] 演習で学ぶソフトウェアテスト特訓150問 ~JSTQB認定テスト技術者資格FoundationLevel対応」
で問題を解いてみて、間違いが多いようであれば、一度JSTQBの本を読むことをお勧めします。
(3) リファクタリングについて
リファクタリングの説明は
「リファクタリング (プログラミング) Wiki」
を参照のこと。
かみ砕いていうと、機能を変えずに、保守しやすいようにソースコードを書き換えることである。
リファクタリングに関する本で有名な本は
・「リファクタリング(第2版): 既存のコードを安全に改善する (OBJECT TECHNOLOGY SERIES)」
である。2019/12/1に第2版として出版された。(初版は2014/7/26に発売)
(4) ソフトウェアメトリクスについて
大阪大学大学院情報科学研究科 コンピュータサイエンス専攻の「井上研究室」では「ソフトウェア工学」の研究を行なっています。
その中の研究の一つに、「ソフトウェアメトリクスを用いた品質の測定」というものがあります。
どのようなメトリクスがあるかについては、
約100種類のメトリクス分析
を参照のこと。
代表的なメトリクスとしては、
- 規模を表すLOC(コード行数)
- サイクロマチック複雑度
- Essential複雑度
- LCOM(結合性の欠如)
- CBO(結合されたクラスの数
プロジェクトのソースコードのメトリクスの可視化の例としては、以下が参考になる。
(5) ソースコードの依存関係の可視化
ここでは、ソースコードの依存関係の可視化に役立つOSS「Sourcetrail」について紹介する。
このソフトは、オーストリアのCoati Softwareが開発し販売していたソフトであるが、2019年11月18日に無料のオープンソースソフトウェアとしてGitHubで公開した。
(参考)C++やPython向けのコード可視化ツール「Sourcetrail」がオープンソースに
SOURCETEAILは以下からダウンロードできる。
SOURCETEAIL
以下にpythonのソースコードに対してSOURCETEAILでコード解析した例が紹介されている。
・「コード可視化ツール「SOURCETRAIL」でPythonで書いた自作簡易検索エンジンのソースコード解析をする」
(6) 静的解析ツールについて
静的解析ツールは世の中に数多くあります。ここではそのうちのいくつかについて紹介します。
No | ソフト名 | 説明 | コメント |
---|---|---|---|
1 | TechMatrixのunderstand | メトリクスの取得。依存関係の可視化など。 | 高価なため、法人向け。 |
2 | SOURCETEAIL | 依存関係の可視化など。 | OSSであるため、気軽に試せる。 |
(7) 循環的複雑度について
「循環的複雑度」は、「Cyclomatic複雑度」「サイクロマティック複雑度」と同じ意味である。
「循環的複雑度」の説明は、
・「循環的複雑度 Wiki」
や
・「プロダクトデータの解析II――複雑さメトリクス」――」
を参照のこと。
サイクロマティック数の単体テストにおける目安は以下の通り。
- 10以下:望ましい値である。
- 10~30:テスト可能範囲であり、バグをつぶせる範囲である。
- 30~50:バグが増える値の範囲である。
- 50~100(以上の値):テストすること自体が難しくなる。
「循環的複雑度」と「本質的複雑度」との違いについては以下が参考になる。
・「本質的複雑度の評価」
ポイントとしては、「本質的複雑度」では、単純な条件分岐構造を畳み込んだ構造を作成し、「循環的複雑度」を計測します。
こうすることで、「本質的複雑度」では「循環的複雑度」だけでは測定できない、本質的な複雑度を定量的に測定することができます。
(8) 凝縮度について
凝縮度の説明は、
「凝集度」
にある。
簡単に説明すると、凝縮度は「高い」「低い」で表現される。
凝集度の高いモジュールは、堅牢性(ロバスト性)、信頼性、再利用性、可読性の観点で好ましいとされる。
一方、凝集度の低いモジュールは保守性や再利用性、可読性が悪くなるため好ましくないとされる。
凝集度は、IPAの基本情報技術者試験では「モジュール強度」としてシラバスに含まれている。
→ 「キタミ式イラストIT塾 基本情報技術者 令和02年 (情報処理技術者試験)」
(9) 結合度について
結合度の説明は、
「結合度」
にある。
簡単に説明すると、結合度は「どんなデータをやり取りすることで、他のモジュールと結合するか」を表すもの。
結合度の低いほど、モジュールの独立性が高くなって好ましいとされる。
結合度は、IPAの基本情報技術者試験では「モジュール結合度」としてシラバスに含まれている。
→ 「情報処理教科書 出るとこだけ! 基本情報技術者 テキスト&問題集 2019年版」
(10) OSSについて
No | ソフト名 | 説明 | コメント |
---|---|---|---|
1 | WinMerge | WinMerge(Wikipedia) | master.zip
からダウンロードし、解凍する。 「Src」フォルダ内にソースコードがある。 |
2 | Apache httpd | Apache Licenses | httpd-2.4.46.tar.gz
からダウンロードし、解凍する。 「Src」フォルダ内にソースコードがある。 |
3 | notepad++ | Source code (zip) からダウンロードし、解凍する。 「Src」フォルダ内にソースコードがある。 |
|
4 | nginx |
からダウンロードし、解凍する。 「Src」フォルダ内にソースコードがある。 |
0 件のコメント:
コメントを投稿