Your SlideShare is downloading. ×
0
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
静的解析、しましょうか。
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

静的解析、しましょうか。

10,870

Published on

YAPC Asia 2011のLT,mixi スポンサード, …

YAPC Asia 2011のLT,mixi スポンサード,
Techinical Debt,Code Metrics

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
10,870
On Slideshare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
115
Comments
0
Likes
9
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1.
  • 2. 自己紹介
    株式会社ミクシィ
    たんぽぽチームリーダ
    広木大地
    @hiroki_daichi
    やっていること
    *刺身にたんぽぽ
    *サービスアーキテクト
    *非機能要件全般
    *サービスのトラブル
    *安くて速くて安心
  • 3. 静的解析、
    しましょうか。
    せいてきかいせき
  • 4. 静的解析
    ってなんなんだよ。
  • 5. 静的
    性的
  • 6. コードレビュー自動化
    刺身にたんぽぽ
    おかせない
    ソフトウェア測定
  • 7. Technical Debt
    技術的負債
    最初のコードを出荷することは、借金をしに行くことと同じである。小さな負債は、代価を得て即座に書き直す機会を得るまでの開発を加速する。
    危険なのは、借金が返済されなかった場合である。
  • 8. 複雑な依存関係
    最長不倒関数
    王様モジュール
  • 9. 01
    ●        ●         ●         ●      ●        ●        ●     
    技術的負債の見える化
    Inspect-package
  • 10. 95
    計測できないものは
    改善できない。
  • 11. 最長不倒関数
    Node(2)
    Node(3)
    If( is_foo())
    do_var()
    Edge(4)
    Node(1)
    Node(5)
    Edge(2)
    start
    do_hoge()
    end
    Edge(1)
    Edge(3)
    Edge(5)
    Node(4)
    Edge(6)
    分岐、ループなど関数をグラフ構造としてとらえて、
    その複雑さを測定する。
    (Cyclomatic Complexity)
  • 12. 王様モジュール
    good
    bad
    Module
    Module
    より大きく、より多くの人によって
    差分が加えられているコードを探して計測する。
  • 13. 複雑な依存
    good
    good
    bad
    B
    B
    B
    E
    A
    A
    A
    C
    C
    C
    F
    D
    D
    D
    G
    より多くに依存しながら、より多くに依存されている
    コンポーネントを悪い依存として測定する。
  • 14. 計測
    measurement
    2011年2月某日
    サービスの結合性に関するポリシーは決めた
    これから順次リファクタリングが必要
    あの日以来、すべてがスコアリングされた。
  • 15. 依存されている度
    サービス全体への負債
    依存している度
    $ inspect-package Mixi::TheServiceMayUKnow -type ALLSCORE
    Ca Ce CC SRP couple cohesion
    240 173 261 527 41520 138335
    最長不倒関数度
    コンポーネント内の負債
    王様モジュール指数
  • 16. 王様モジュールをレビュー
    $inspect-package Mixi/TheServiceUMayKnow -type SRP
    score( 123):rev( 98):user( 16):lines(1331) Mixi/TheServiceUMayKnow.pm
    score( 107):rev( 80):user( 18):lines(1323) Mixi/TheServiceUMayKnow/Object.pm
    score( 47):rev( 40):user( 5):lines( 659) Mixi/TheServiceUMayKnow/Admin/Ad.pm
    1300行で16人がいじってるけど、
    そろそろ責務がいりまじってるんじゃない?
  • 17. 最長不倒関数をレビュー
    $inspect-package Mixi::TheServiceUMayKnow -type CC
    59 get_status   lib/Mixi/TheServiceUMayKnow/Analytics.pm
    46 summarize   lib/Mixi/TheServiceUMayKnow/Counter/Summarizer.pm
    44 _select_own_page lib/Mixi/TheServiceUMayKnow/Feed.pm
    このモジュールのget_statusが複雑に
    なりすぎてて、テストケース網羅できないほどだよ。
  • 18. 嫌だわ、早くすりつぶさないと
  • 19. せいてきかいせき
    静的解析、
    しましょうか。
  • 20. くわしいことは
    WEB+DB Press 62のPerl Hackers Hubにも載ってます
    http://gihyo.jp/dev/serial/01/perl-hackers-hub/000801

×