without meaning

組み込み系SIerのメモ。

ソフトウェア品質から見るオブジェクト指向の必要性

ソフトウェアの仕様策定・設計を行う際に、ソフトウェアの品質をどう担保するか検討する必要がある。

その際、なぜオブジェクト指向デザインパターンを意識してコードを記述すべきかを自己の認識を下記に示す。

まず、ISO/IEC21050※で規定されたソフトウエア製品の品質モデルを下記に示す。 ※ISO/IEC9126-1が元々規定していたものを改良した品質モデル。

f:id:wonderword22:20191116175357p:plain
参考:システム/ソフトウェア製品の品質要求定義と品質評価のための メトリクスに関する調査報告書

それぞれの内容は下記の通り。

f:id:wonderword22:20191117011445p:plain
ISO/IEC 25010 のシステム/ソフトウェア製品の品質モデルを構成する品質特性の内容

機能適合性

製品やシステムが、定められた利用状況下で定められて包含されたニーズを満たす機能 を提供する度合を示す。副特性として次がある。

  • 完全性
    • 機能がユーザの目的、定められたタスクをカバーしている度合
  • 正確性
    • 製品やシステムが必要な精度で正確な結果を与える度合
  • 適切性
    • 機能が定められたタスクや目的の遂行を円滑に行う度合
性能効率性

定められた利用状況下で利用される資源量の性能の度合を示す。副特性として次がある。

  • 時間効率性
    • 要求を満たすために機能を実行するときのシステムの応答時間、処理時間及び処理能力の 度合
  • 資源利用性
    • 要求を満たすために機能を実行するときの使用した資源の量や種類の度合
  • キャパシティ
    • 要求を満たすにあたり製品やシステムのパラメータの最大許容値
互換性

製品、システム、コンポーネントが他の製品、システムコンポーネントと情報を変換で きる度合、また、同じハードウェアやソフトウェア環境を共有し、要求される機能を実行 する度合を示す。副特性として次がある。

  • 共存性
    • 他の製品へ有害な影響を与えずに、他の独立した製品と共通の環境や資源を共有して要求 機能を効果的に実行する度合
  • 相互運用性
    • 2 つ以上のシステム、製品やコンポーネントが情報を交換し、その情報を利用できる度合
使用性

製品やシステムが、定められたユーザにより、定められた使用状況下で効果的、効率的、 満足度が達成される度合を示す。副特性として次がある。

  • 適切度認識性
    • 製品やシステムがユーザニーズに適しているかどうかを、ユーザが認識できる度合
  • 習得性
    • 定められたユーザにより、定められた使用状況下で満足性、安全性、効果性、効率性のあ る製品やシステムの使い方の学習が達成される度合
  • 運用性
    • 運用や管理の労力に係る度合
  • ユーザエラー防止性
    • システムがユーザを誤操作することから保護する程度
  • ユーザインタフェースの快美性
  • アクセシビリティ
    • 製品やシステムが定められた使用状況下で目標を得る上で、幅広い層の特徴や能力を持つ 人々により利用される度合
信頼性

システム、製品やコンポーネントが制限時間内で定められた状況の下で機能を実行する 度合を示す。副特性として次がある。

  • 成熟性
    • システムが通常の運用の下で信頼性のニーズを満たす度合
  • 可用性
    • システム、製品やコンポーネントが必要とされるときに運用、接続できる度合
  • 障害許容性
    • システム、製品やコンポーネントがハードウェアやソフトウェア障害が存在する中で運用 できる度合
  • 回復性
    • 障害時に製品やシステムがデータを回復し、システム状態を再構築する度合
セキュリティ

人やシステムによる読み込み・修正等が不当にアクセスされることなく情報やデータが 保護されている度合を示す。副特性として次がある。

  • 機密保持性
    • 製品やシステムが、許可されたもののみがアクセスできるようデータを保証する度合
  • インテグリティ
    • システム、製品やコンポーネントがコンピュータプログラムやデータへの修正に対して許 可されていないアクセスを防止する度合
  • 否認防止性
    • イベントやアクションがのちに拒否することができないよう、イベントやアクションが起 こされたことが証明される度合(ディジタル署名等)
  • 責任追跡性
    • エンティティのアクションが唯一のエンティティであると証明できる度合
  • 真正性
    • リソースや事項の身元が要求されるものであることを証明できる度合
保守性

製品やシステムが保守担当により修正するにあたっての効果性、効率性の度合を示す。 副特性として次がある。

  • モジュール性
  • 再利用性
    • 資産が複数のシステムや他の資産を構築する際に利用できる度合
  • 解析性
    • 製品やシステムの一部を変更したり変更された部分の特定や障害の原因や欠陥のために製 品を診断したり、一つ以上の部分の変更に当たり影響を評価する際の効果性、効率性の度 合
  • 変更性
    • 製品やシステムが欠陥の発生や既存の製品品質の低下がなく、効果的、効率的に変更でき る度合(ISO/IEC 9126 シリーズでは変更性、安定性)
  • 試験性
    • システム、製品やコンポーネントのためにテスト基準を確立し、基準が満たされたかどう か定めるために実行する際の効果性、効率性の度合
移植性

システム、製品やコンポーネントが、あるハードウェア、ソフトウェアや運用、利用環 境を他へ移行されるにあたっての効果性、効率性の度合を示す。副特性として次がある。

  • 順応性
    • 製品やシステムが、異なるあるいは進化したハードウェアやソフトウェア、あるいは運用 や利用可能な他の環境に効果的かつ効率的に順応できる度合
  • 設置性
    • 製品やシステムが定められた環境に正しく設置(インストール)されたり撤去される(ア ンインストール)されたりする際の効果性、効率性の度合
  • 置換性
    • 製品が同一の目的、環境で他のソフトウェア製品に置換(リプレース)される度合

オブジェクト指向による設計・実装、また読みやすいコード、いわゆるリーダブルコードはこの内、主に保守性を満たすために必要である。
* 関数呼び出しによるオーバーヘッドなどは、少なくともC++などオブジェクト指向対応言語が使えるような環境だともはや気にしなくてよいだろう。

そもそもオブジェクト指向は、1960にNATOが「20世紀末には世界の総人口がプログラマーになっても、増大するソフトウェアの需要に追いつかない」と、 いわゆる「ソフトウェア危機」が宣言されたことに対し、 機能の追加のしやすさ、これまで開発した機能の流用をできるようにすることで、少しでもソフトウェア開発速度を向上しようというのが目的である。

参考:
オブジェクト指向はなぜ動くのか

経済産業省 ソフトウェアメトリクス高度化プロジェクト プロダクト品質メトリクス WG システム/ソフトウェア製品の品質要求定義と品質評価のためのメトリクスに関する調査報告書

独立行政法人情報処理推進機構(IPA)技術本部 ソフトウェア高信頼化センター(SEC)連携委員 / 日本電気株式会社 ソフトウェア生産革新本部 マネージャ バグだけが品質と考えていませんか?

ASUS K550CのSSD換装・メモリ増設

かれこれ4年ほど使用していたノートパソコン。
起動するのに1,2分かかるようになり、chromeも満足に開けなくなってきたため、
SSD換装・メモリ増設を試してみた。

必要なもの

ベースとなるPC(ASUS K550C)

確か、2014年上旬に購入したPC。
当時、Core i3・メモリ4GB・15.6インチで4~5万円の価格帯で
とてもお買い得な商品でした。
今となっては2.4Ghzの通信帯域しか使えないのがネックになるかも。

メモリ

Pin数:204Pin
規格:DDR3-1600 PC3-12800
モリタイプ:SO-DIMM
メモリ数:4GB
上記4点を考慮してシリコンパワー製を選択。
結論から言うと無事読み込んでくれた。

SSD

SSDに関しては有名所のメーカなら大体いけるだろうと思ってたので、
メモリと同じメーカーのシリコンパワーを選択。
元々50GB程度しか使っていなかったため、余裕をもたせて250GBを選択。
(パーティションがどう分けられるかよくわかってないし。。) サイズも7mm厚で問題なし。

SATA⇔USB変換ケーブル

元々ベースPCに着いていたHDDのデータをSSDに移し替えるため必要。
特にこだわりはないため、間違えなければどこのでも使えると思う。
USB3.0対応かUSB2.0しか対応していないかは結構重要のため、買う前に確認すべき。

ドライバー

PCのメモリ部分、HDD部分を開けるために必要。
コンビニで買ったドライバー使えたので、特に意識してなかったけど、 プラス0~1mm程度のドライバーがあれば問題なく開けると思う。

ダウンロードしたソフト

EaseUS Todo Backup Free

Verは2018/12最新だったv11.5を使用

「EaseUS Todo Backup」無料のイメージバックアップソフト - 窓の杜

メモリ増設手順

ここでは下記の動画を参考にしました。 X550CとK550Cは仕組みが一緒なので問題なし。

SSD換装手順

急に投げやりだけど、ここを参考にして行ったので、
この記事にアクセスした人もこちらをまず読んでみてください。

pssection9.com

大まかな手順だけ下記に記載します。

SATAケーブルでSSDを接続

SATA⇔USB変換ケーブルでSSDをPCに接続する。

「ハードディスクとパーティション」でディスクに割当

購入したSSDは、まずフォーマットをしないとパソコンに認識されない。
フォーマット手順は下記リンクを参考にした。

【SSD換装】CドライブOSごと丸々コピー!HDD/SSDからSSDへの交換手順を画像付きで超詳しく解説 - いやまいったね!

K550Cでは、元々使用していたバックアップ対象のHDDがGPTだったため、SSDもGPTに割当てた。 (元々のHDDは下記項目でわかるよ)

Easeusでバックアップ

Easeusというソフトで、元々使用していたHDDの全データをSSDに移行する。

もとのHDDがGPT形式かMBR形式かは、Easeusでクローンを選択すると、
既存のCドライブがどちらの形式かわかる。

HDD->SSD差し替え

バックアップが完了したら、物理的にHDDとSSDを差し替えして起動し直す。

結果(改造前後のパフォーマンス比較)

CrystalDiskMarkWindowsエクスペリエンスインデックスの結果は以下の通り。

bef

f:id:wonderword22:20181231071734p:plain
K550C_bef

CPUScore : 6.3
D3DScore : 6.2
DiskScore : 5.9
GraphicsScore : 4.7
MemoryScore : 5.9
TimeTaken : MostRecentAssessment
WinSATAssessmentState : 1
WinSPRLevel : 4.7
PSComputerName :

aft

f:id:wonderword22:20181231071812p:plain
K550C_aft

CPUScore : 7.8
D3DScore : 9.9
DiskScore : 8.05
GraphicsScore : 5.9
MemoryScore : 7.8
TimeTaken : MostRecentAssessment
WinSATAssessmentState : 1
WinSPRLevel : 5.9
PSComputerName :

2,3秒で起動するようになり、Chromeやアプリもサクサク動くようになったのでめでたしめでたし。

Atomにvimのキーバインド設定

Atomvimキーバインドに設定した。

参考

導入したプラグイン

不要なプラグイン(間違えそうなので一応記載)


それにしても、公式のvim-modeプラグインも、vim-mode-plusへの移行を促しているんですね。凄い。。

PlantUML用にAtomのインストール・設定

仕事でPlantUMLを使ってUMLを書くことがあるため、AtomとPlantUMLで爆速UMLモデリング - Qiitaを参考にAtomを導入した。 基本、Windows用の記事のため、所々別の記事を読んだ。
(といっても、ほとんど記事のままでいけるけど。。)

Atomのインストール


下記記事をそのまま実行
Mac - テキストエディタ「Atom」のインストール - 開発メモ - Webkaru
Atom日本語化
Mac - テキストエディタ「Atom」の日本語化 - 開発メモ - Webkaru

PlantUML使用の事前準備


事前準備として、jdkgraphvizのインストールが必要

以降はAtom上でパッケージインストール

  • plantuml-viewerのインストール

      Atom上でPlantUMLをプレビューするためのパッケージ  
      ヘルプ→ウェルカムガイド→Install a Package→OpenInstaller→
     「plantuml-viewer」のパッケージを検索→インストールを押下
    
  • language-plantumlのインストール

      エディタのハイライト表示に使用
      plantuml-viewerと同様の手順でインストール
    
  • 文字化け対策

      ヘルプ→ウェルカムガイド→Install a Package→OpenInstaller→パッケージ→
      PlantUML ViewerパッケージのSettingsにCharsetに「UTF-8」を指定
    
  • フォント設定

      ヘルプ→ウェルカムガイド→Install a Package→OpenInstaller→
      エディタ設定→フォントに「好みのフォント」を指定
    

後はmarkdown用にいくつかパッケージ導入したけど、markdownでは使用しない気がするな。。

virtualboxを使用してubuntu12.04LTSをインストール

仕事でubuntuを開発環境で使用することになったため、自分のmacにもubuntuを入れてみていじってみようと思う。

参考にした記事


VirtualBoxにUbuntu 12.04 LTSをインストールする(準備編)
VirtualBoxにUbuntu 12.04 LTSをインストールする(インストール編)
【 Virtual Box 】共有フォルダを介して、ホストOS(Windows 7) と ゲストOS(Debian/ MathLibre)でファイルやりとりするための設定

ゲストOSの共有フォルダ設定せずとも、ホストOSの共有フォルダ設定だけで共有できた
→と思ったら出来てなかった。。また今度設定し直す。。

VirtualBox上のUbuntuの画面を自動リサイズする

次はeclipseのインストールと設定を行う。