◆The Art of Projctmanagementのまとめと、思いついたこと
スケジュール作成の目的
1.完了予定の見通し
2.成果物の位置づけをメンバーに展開
協調を促進する
スケジュールによる強制機能
実現可能性の判定
3.進捗管理のためのツール(WBS)
管理可能な塊に分割する
メンバー間の依存関係の調整
リンカーンの名言
If I had eight hours to chop down a tree, I'd spend six hours sharpening my ax.
Abraham Lincoln
もし私が木を切りたおすのに8時間与えられたら、斧を研ぐのに6時間かけるだろう。
エイブラハム・リンカーン
※プロジェクトの計画、システムの設計など準備に時間をかけるのが重要ですね。
スケジュールとは
全体⇒ 設計 … 実施内容の検討
製造 … 実作業
テスト … 検証・分析・洗練
に分割する(1/3の法則)
※分割統治法 … 各項目にさらに1/3の法則を適用する。
※プロジェクト運営にワークフローを適用する。
ex)Aさんが△△機能を実装⇒Bさんがレビュー⇒PLに報告
⇒Cさんが試験実施⇒PLに報告⇒完了
というように、フローを決める。全部一人でやるプロジェクトは品質に?が付くでしょう。
スケジュールに潜んでいる問題点(リスクチェック)
・病欠、休暇予定(有給・夏季休暇など)は盛り込まれているか。
・スケジュールは容易に閲覧できるか。進捗は報告できるようになっているか。
・スケジュールは監視されるか。誰が監視を行うか。
・追加作業発生時、スケジュールにどのように組み込むかの手順は確立されているか。
・定期的なスケジュール見直し、再交渉は可能か。
・作業項目はすべて盛り込まれているか。実作業だけでなく事務作業(カルテ、納品準備、
監査etc)、も組み込まれているか。
・レビュー時間は予定されているか。
・プロジェクトに必要な知識をメンバーに展開する時間、訓練の時間は盛り込まれているか。
・メンバーの経歴書(興味のある分野と経験してきたプロジェクト、資格など)
個人情報系の情報は集めない。
プロジェクト運営チェック
・個人占有マシン、サーバーなど物理環境は整っているか。
・ソース管理は行っているか。
・定期的にサーバーのバックアップを取っているか。
・要求の決定権、設計の決定権、技術の決定権はそれぞれ誰が持つかを把握している。
予算決定権は誰が持つか。
・環境構築の手順がまとめられており、新たにメンバーが加わっても容易に環境を
整えられる。
・各機能が何のために必要とされているかを把握している。または把握中にむけた取り組み
を行っている。
・要求定義とは
⇒「【何を行う】必要があるのか」を記載した文書
プロジェクトが完了したときに実現される事項
・設計書/仕様書とは
⇒「要求を満たすために【どうやって】行うのか」を記載した文書
ビジョンの作成
目標記述のスローガン(SMART)
S:Specific⇒具体的
M:Measurable⇒測定可能
A:Action-oriented⇒行動試行
R:Realistic⇒現実的
T:Timely⇒タイムリー
【参考文献】
「アート・オブ・プロジェクトマネジメント ―マイクロソフトで培われた実践手法」スコット・バークン著
WITH句にバインド変数を指定することで、
バインド変数の適用箇所を減らすことができる。
1SQLで大量のバインド変数(同じものがたくさん)になるとき
バインド変数の数を減らすことで、バインド時の負荷をさげる
ことができる。
col manager_id format a10
col insert_date format a30
col inset_id format a10
with
bind_table as
(select :decryptKey decryptKey, :target_date date01 from dual)
SELECT
sys.SMSDecrypt(MANAGER_ID, bind_table .decryptKey) manager_id,
INSERT_DATE,
INSERT_ID
FROM
MANAGER, bind_table
;
以下のSQLたちは、大量データをインポートする際に
高速化を狙ったDB構成情報を変更するためのものです。
--表領域の拡張と増分変更
set lines 200
col tablespace_name format a10 trunc
col file_name format a50 trunc
select
file_id,
tablespace_name,
file_name,
bytes/1024/1024 || ' MB' as tablesize,
NEXT_EXTENT || 'KB' as NextExtent
from
dba_data_files
order by file_id;
-- エクステント数の確認
SELECT
SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME, EXTENTS
FROM DBA_SEGMENTS
WHERE TABLESPACE_NAME = 'USERS'
ORDER BY SEGMENT_NAME;
-- データファイルのサイズ変更
alter database datafile '/opt/oracle/oradata/test/users01.dbf' resize 11800M;
-- データファイルの領域拡張サイズ変更
alter database datafile '/opt/oracle/oradata/test/users01.dbf' autoextend on next 100M;
-- REDOログの追加
alter database add logfile group 4 '/opt/oracle/oradata/test/redo04.log' size 300M
alter database add logfile group 5 '/opt/oracle/oradata/test/redo05.log' size 300M
alter database add logfile group 6 '/opt/oracle/oradata/test/redo06.log' size 300M
-- CURRENTログファイルの切り替え
ALTER SYSTEM SWITCH LOGFILE;
-- REDOログファイルの情報取得
select * from v$log;
-- ACTIVEなREDOログをNOT ACTIVEにするためにCHECKPOINTを行う。
ALTER SYSTEM CHECKPOINT;
-- REDOログファイルの削除
alter database drop logfile group 1
alter database drop logfile group 2
alter database drop logfile group 3
-- DB全体の統計情報取得(GATHER_STATS_JOBと同様の処理?)
EXECUTE DBMS_STATS.GATHER_DATABASE_STATS();
-- 統計情報取得JOBのスケジューリングON
EXECUTE sys.dbms_scheduler.enable( '"SYS"."GATHER_STATS_JOB"' );
-- 統計情報取得JOBのスケジューリングOFF
EXECUTE sys.dbms_scheduler.disable( '"SYS"."GATHER_STATS_JOB"' );