2025年8月31日日曜日

アジャイルの開発方法論

1.スクラム


・先の予測が難しい状況でのプロジェクトマネジメントに適用できる 
・自律的なチームで推進される 
・計画からはじまり、レビュで終わる 
・バックログに書かれている機能が実装される 
・プロダクトオーナーが、次のスプリントでプロダクトバックログの中の、どのアイテムを行うかを決める 
・メンバーの活動は、毎日のデイリーミーティングで調整される 
・スクラムマスターは、チームをストップさせるような問題の解決にあたる

 

2.Lean Software Development 


リーン製造方を、ソフトウェアへ適用したもの。7つの原則からなる
・ムダの削減 
・学習を強化する 
・決定を遅らせる 
・チームに権限を委譲する 
・全体を最適化する 
・早く提供する 
・品質を作りこむ

 

3.Feature-driven Development 


モデル駆動型の開発と、アジャイルを組み合わせ、初期のモデル化に重点を置く





2025年8月30日土曜日

アルゴリズム nが素数かを判定する

1は、素数ではありません。

・nが、n以下の整数で割り切れるかを、2まで繰り返す

・nは、n/2以上の整数で割り切れることはないので、n/2から調べれば良い。

  数学的には、√2 から調べれば良いことが分かっている。





An Empirical Study of Bad Smell in Conde on Maintenance Effort

公開されている

An Empirical Study of Bad Smell in Conde on Maintenance Effort

のキモの部分を読んで勉強してみたいと思います。

概要

code smellの発見およびリファクタリングを自動化するツールを、

提案する。発見したcode smellに対して、リスクファクターを計算し、

リファクタリングのテクニックを利用して、リスクファクターを

軽減する。

リファクタリングは、ソフトウェアの振る舞いを変更せずに、

内部構造を改良するもの。

新しいcode smellである、Lazy Catchも発見できる。

オブジェクト指向ソフトウェア用のメトリクスを利用した。


イントロ

リファクタリングのプロセスは、多くのアクティビティを含む。

1.ソフトウェアのどこをリファクタリングするかを認識する。

2.1の中で、どこお実際にリファクタリングするかを判断する。

3.リファクタリングが、振る舞いを保存することを確認し、

 リファクタリングを行う。

4.リファクタリングの結果を、ソフトウェアの保守性などから、

 評価する。

5.リファクタリングしたソフトウェアと、他の資材

  (ドキュメント、テストなど)との整合性を取る。


ソフトウェア保守


ソフトウェアの保守は、リリース後、ミスを訂正する、

パフォーマンスなどを改善するもの。

複雑な作業で、システムの理解も難しい。

保守のプロセスは、プログラマの経験やドキュメント、

システムそれ自体の特徴に影響を受ける。


Code smell 


Code smellは、ソフトウェアの改良や保守を困難にする

設計やコードである。

Code smellを削除することで、保守性はあがり、

ソフトウェアの品質は向上する。

Code smellの発見には、標準的なメトリクス、

オブジェクト指向のメトリクス、ad hocに定義された

smell発見用のメトリクスが使われる。


次のようなメトリクスを利用した。


Number of Method (メソッドの数)・・対象は、クラス

Number of Parameters(パラメータの数)・・対象は、メソッド

Lack of Cohesion of Methods(凝集度の不足)・・対象は、クラス

Method Lines of Code(メソッドのコードのライン数)・・対象は、メソッド

Weighted Methods per Class(クラスの複雑度)・・対象は、クラス






2025年8月29日金曜日

ErrorとFaultとFailure

Error


実際の出力と期待値が異なる。

Fault


プログラムやデータの誤り。

Failure


要求を満たさない事象。




kubernates 用語

マスターノード、ワーカーノード


マスターノードは、コンテナを管理する。

ワーカーノードは、コンテナが動く

マスターノードとワーカーノードで構成された一群を

クラスタという。

Pod


コンテナとディスクがセットになったもの。

1 Pod に、1つのコンテナが基本。

サービス


複数のPodへの負荷分散を行う。

レプリカセット


Podの数を管理を行う。レプリカセットで管理されるPodを

レプリカという。




クロニクル Oracle LinuxにJDK17を入れてみる

Oracle Linux 8.10です。


1. ダウンロード

https://www.oracle.com/java/technologies/javase/jdk17-0-13-later-archive-downloads.html

から、

jdk-17.0.12_linux-x64_bin.tar.gz

をダウンロードしました。


2. 解凍

ダウンロードしたファイルを

/opt

の下で解凍します。

sudo tar zxvf jdk-17.0.12_linux-x64_bin.tar.gz


3.環境変数の設定

JAVA_HOMEとPATHを設定

$export JAVA_HOME=/opt/jdk-17.0.12

$export PATH="/opt/jdk-17.0.12/bin:$PATH"


4.確認

4-1 ソースの作成

次のようなソースを作成します。(SampleJava.java)

 public class SampleJava {

  public static void main(String[] args) {

    System.out.println("Hello World!");

  }

}

4-2. コンパイル

$javac  SampleJava.java

SampleJava.classができます

4-3. 実行

$java  SampleJava

Hello World!

が出力されます。


動いているようです。





クロニクル Macでtomcat

1.ダウンロード 

 以下のサイトから 

 https://tomcat.apache.org/download-10.cgi 

Coreのzip版をダウンロードしました。 

2.解凍 

ダウンロードしたファイルを解凍しました。 

 3.確認 

 解凍したフォルダーの下の¥binの下で、

ファイルの実行権を与えて 

 sh startup.sh 

で実行。 

 ブラウザで、 http://localhost:8080 を指定すると、

いつものtomcatの画面が上がってきました。 

 sh shutdown.sh で終了です。



2025年8月27日水曜日

論文 THE MOST COMMON FACTORS FOR THE・・・

公開されている

THE MOST COMMON FACTORS FOR THE FAILURE OF SOFTWARE DEVELOPMENT PROJECT

です。


プロジェクトの失敗要因に関して調査した論文です。

最もよくある失敗要因として、以下を上げています。

1.顧客やユーザの参加の不足

2.明確でない目的やゴール

3.貧弱な要件定義

4.リソースの不足

5.チーム内のコミュニケーション、チーム行動の失敗

6.計画とスケジュールのミス

7.コストの見積ミス

8.不適切なコストの見積方法

9.不適切なコストの見積ツール

10.テストの不足

11.リスクマネジメントのミス

12.非現実な、(好転するという)期待






2025年8月26日火曜日

情報セキュリティ セキュリティの機能

抑制機能

 セキュリティ機能を講じることで、故障、事項、エラー、犯罪等が発生する可能性を低下させる。管理の強化、システム監査の実施の公表など

防止機能

 事故、災害、犯罪の発生を未然に防止する機能であり、具体的には、防火・防犯装置の設置、地震対策、侵入対策、システムダウン対策。

検知機能

 事故、エラー、犯罪等の発生時に早期に発見し、被害を最小限に食い止める

回復機能

 事故・災害が発生した場合、情報システムを正常な状態に復元し、再開させる機能





2025年8月25日月曜日

スクラムのRole

スクラムマスター

スクラムマスターは、スクラムのプロセスを維持していく人である。
 
次に責任を持つ。

・プロセスをスムーズに動かす 

・生産性を阻害する要因を取り除く 

・重要なミーティングを、組織し、ファイシリテートする

 

プロダクトオーナー

プロダクトオーナーは、製品やチームの成果を最大化することに責任を持つ。
 
プロダクトオーナーは、プロダクトバックログの管理について、唯一責任と権限を持つ そのため、次を行う。

 ・プロダクトバックログの明瞭化 

 ・プロダクトバックログの優先付け




2025年8月24日日曜日

クロニクル CentOSにリモートデスクトップを導入する

CentOS 9で実行しています。デスクトップマネージャーには、xfceを使う前提です。

GNOMEは、CentOS 9では、少し面倒くさそうで。

1.EPEL リポジトリの有効化


sudo dnf install -y epel-release

sudo dnf config-manager --set-enabled crb 


2.Xfceのインストール


sudo dnf group install -y "Xfce"


3.XRDP と xorgxrdp のインストール


sudo dnf install -y xrdp xorgxrdp


4.XRDP サービスの有効化と起動


sudo systemctl enable --now xrdp


5.Firewall の設定


sudo firewall-cmd --add-port=3389/tcp --permanent

sudo firewall-cmd --reload


6.セッションスクリプトの調整


ログインするユーザの$HOMEに、以下の.xsessionファイルを作成する。


exec startxfce4


その後

chmod +x ~/.xsession


7.XRDP サービスの再起動


sudo systemctl restart xrdp


8.確認


Windowsのリモートディスクで、IPを指定して接続。

ネズミが上がってきました。


9.日本語環境の設定


sudo dnf install glibc-langpack-ja


sudo localectl set-locale LANG=ja_JP.UTF-8

sudo localectl set-locale LC_MESSAGES=ja_JP.UTF-8

sudo localectl set-locale LC_TIME=ja_JP.UTF-8

sudo localectl set-locale LC_COLLATE=ja_JP.UTF-8

sudo localectl set-locale LC_CTYPE=ja_JP.UTF-8

sudo localectl set-locale LC_MONETARY=ja_JP.UTF-8

sudo localectl set-locale LC_NUMERIC=ja_JP.UTF-8

sudo localectl set-locale LC_PAPER=ja_JP.UTF-8

sudo localectl set-locale LC_NAME=ja_JP.UTF-8

sudo localectl set-locale LC_ADDRESS=ja_JP.UTF-8

sudo localectl set-locale LC_TELEPHONE=ja_JP.UTF-8

sudo localectl set-locale LC_MEASUREMENT=ja_JP.UTF-8

sudo localectl set-locale LC_IDENTIFICATION=ja_JP.UTF-8


10.日本語フォントのインストール


sudo dnf install -y langpacks-ja glibc-langpack-ja


11.フォントキャッシュの更新

sudo fc-cache -fv


12 XRDP サービスの再起動


sudo systemctl restart xrdp


再接続すると、ディスクトップが、日本語になりました。


13.ついでにFireFox入れる


sudo dnf install -y firefox


xfceのメニューに、[インターネット] - [FireFox]ができました。


A Catalog and Classification of Fortran Refactorings

 公開されている

A Catalog and Classification of Fortran Refactorings

のキモ部分を読んで、勉強してみたいと思います。


概要

いろいろな品質特性を改良するリファクタリングのカタログを提供する。

リファクタリングを、その目的、リファクタリングで改良しよとする

品質に基づいて分類する。


はじめに

Fortranは、FORTRAN66、FORTRAN77、FORTRAN90/95、

Fortran 2003、Fortran 2008と進化してきた。

この進化の中で、古いバージョンとの後方互換性を担保していることが、

特徴である。

長い間にわたって進化してきた結果、プログラムの保守は難しくなっている。

リファクタリングは、コードの内部品質~可読性や柔軟性、理解容易性や

保守容易性など~コードの品質を改善するテクニックである。

リファクタリングは、コードの重複など、Bad smellsに対応する形で行われる。


また、リファクタリングは外部への振る舞いを変えない。

Fortranの場合、リファクタリングは、可読性や保守性を上げ、

新しい機能による明確な構造を与えることで、コードをモダナイズする。


-- つづきます --

変数の命名規則

1.キャメル記法(ローワーキャメル)

 

2つ目以降の単語の先頭文字を、大文字にする。


その他は、小文字とする。

(例)

customerCode


2.パスカル記法(アッパーキャメル)

 

各単語の先頭文字を、大文字にする。


その他は、小文字とする。

(例)

CustomerCode

3.アンダースコア記法(スネーク)

 

単語を_で接続し、小文字を利用する。

(例)

customer_code



2025年8月10日日曜日

セキュリティ STRIDE

 STRIDEは、攻撃手法を分類するもの。


1.Spoofing identity  なりすまし

 別のIDになりすます。


2.Tampering with data 改ざん

 データを改ざんする。


3.Repudiation 否認

   自分の行った攻撃活動への関与を否認する。


4.Information disclosure 情報漏洩


5.Denail of Service サービス拒否攻撃


6.Elevation of privilege 権限昇格要





2025年8月9日土曜日

フィーチャ駆動型開発(FDD)

 ・フィーチャとは、顧客にとって価値があり


    2週間以内に実装可能な機能。


・フィーチャを利用して、次のように開発をすすめる


1.全体モデルの開発


2.フィーチャリストの作成


3.フィーチャ単位の計画


4.フィーチャ単位の設計


5.フィーチャ単位の構築






2025年8月8日金曜日

プログラムのレビュでの確認事項

 (1) インターフェース 


   モジュールやクラス等のインターフェースの確認する 


(2) 複雑度分析 


   メトリクスを用いて、複雑度を分析する 


(3) トレース 


  想定される入力を想定して、プログラムの動きをトレースする 


(4) 制御フロー 


  IF文などの制御構造に着目して、その正しさを分析する 




2025年8月3日日曜日

Using FDD for Small Project: An Empirical Case Study

公開されている

Using FDD for Small Project: An Empirical Case Study 

のキモの部分を読んで、勉強してみたいと思います。


概要

Feature Driven Development(FDD)は、広く使われているアジャイルのメソッドの1つ。

FDDは、次のような多くの欠点を持つため、批判されてきた。

・経験豊かなスタッフへの依存

・要求収集に関するガイダンスの不足

・急な変更に対して、弱い

これらの欠点のため、FDDは変更の少ない、大きなプロジェクトだけに

適用できるとされてきた。

この論文は、FDDを、小さなWebプロジェクトに適用して、FDDが、

規模の大きなプロジェクトにしか適さないかを、検証するもの。

小さなプロジェクトでよく使われるXPと比較する。


イントロ

スクラム、XP、DSDM、クリスタルメソッド、TDD、FDD

など多くのアジャイルメソッドが使われている。

それぞれの方法論には、それぞれに適した開発アーキテクチャがあり、

それぞれ適しているプロジェクトが異なる。

しかし、すべての方法論は、アジャイルマニフェストで宣言された

原則に従っている。

このマニフェストは、すべてのアジャイルプロセスモデルの元となる

ドキュメントと考えられており、ソフトウェア開発の12の基本的なルールを含む。

これらの原則には、チームの頻繁なコミュニケーション、顧客満足、

要件の変更のマネジメント、等を含む。

アジャイルのチームは、自己組織化されたチームで、

メンバーは近くで協同する。

さらにアジャイルマニフェストは、シンプルなデザイン、

信頼性や品質の高いソフトウェアの高頻度、タイムリーなデリバリー

にフォーカスしている。


アジャイルは、イテレーディブなプロセスで、それぞれのイテレーションで、

動くモジュールを作成する。


イテレイティブな開発は、それぞれのイテレーションで、

顧客からのフィードバックがあるため、顧客にも、開発者にも高い満足をもたらす。

FDDは、最も広く使われているアジャイル開発モデルの1つである。

FDDは、プロセス志向で、ユーザ中心のモデルであると言われている。


FDDは、5つのフェーズからなる。

1. 全体をカバーするモデルを作成する

2.機能リストをつくる

3.機能について計画する

4.機能を設計する

5.機能をbuildする

それぞれのフェーズは、多くのアクティビティやタスクを含む。

このため、FDDは、重い方法論であるという批判もある。

そのため、FDDは、経験が必要で、要求の変更を適切にコントロール

することも必要となり、中規模から大規模なプロジェクト向けと言われている。


--つづく--




スクラム関連の用語

スプリントバックログ

スプリントの中で終わらせるバックログ


プロダクトバックログ

製品全体に対するバックログ



ユークリッドの互除法

最大公約数を探すアリゴリズム。

XをYで割った時の剰余をRとすると、

XとYの最大公約数は、YとRの最大公数に等しい

この定理を利用し、

R=0となるまで、YとRを変えながら、探す。

X ≧ Y とする。


1. X÷Y を Rとする


2.R が0 でない間、3から5を繰り返す


3.XにYを代入


4.YにRを代入


5.X÷Y を Rに代入


6.R=0となった時のYが最大公約数






アクセス制御の方式

1.ユーザーベース認証 認証されたユーザー事に アクセス範囲を決める。 2.任意アクセス制御 ユーザーが属するグループに対して、アクセス範囲を決める。 3.強制アクセス制御(MAC) 管理者がすべて権限を付与。オブジェクトの所有者さえ変更できない。 4.ロールベースアクセス制御 ...