Glossary
研究用語ミニ辞典 A small dictionary of the field
このサイトのあちこちに出てくる用語を、テーマ別に16個まとめました。技術的負債まわり・開発データまわり・手法まわりの3グループに分け、それぞれ日本語と英語で短く説明しています。読んでいて聞き慣れない言葉に出会ったら、ここに戻ってきてください。 A short, themed collection of 16 terms that appear across this site. They are grouped into technical-debt basics, development data, and methods, each explained briefly in both Japanese and English. Come back here whenever an unfamiliar word gets in the way.
A. 技術的負債まわりA. Technical debt basics
「借金」の比喩と、そこから育った言葉たちThe borrowing metaphor, and the words it grew
技術的負債そのものと、負債を認識・分類・解消するために使われる用語です。技術的負債とはの内容と対応しています。 Technical debt itself, and the terms used to recognize, classify, and resolve it. These match the content of What is technical debt?
技術的負債Technical Debt
Technical Debt時間的な制約などのもとで選ばれた「その場しのぎの設計・実装」が、後の変更コストを増大させていく現象。Ward Cunninghamが1992年の経験報告で示した「借金」のたとえに由来します。うまく使えば開発を前に進める力になりますが、放置すると保守の負担が積み上がります。 What happens when expedient design and implementation choices, made under constraints such as time pressure, drive up the cost of future changes. The term traces to a borrowing metaphor Ward Cunningham introduced in a 1992 experience report. Used well it moves development forward, but left unpaid it accrues a growing maintenance burden.
技術的負債とはWhat is technical debt?元本と利息Principal and Interest
Principal & Interest借金の比喩で技術的負債を語るときの二つの側面。その場しのぎの実装そのものを「元本」、放置している間に膨らむ追加の保守コストを「利息」と見立てます。負債を早く返す(リファクタリングなどで解消する)ほど、支払う総コストは小さくなります。 The two sides of the borrowing metaphor. The expedient implementation itself is the principal, and the extra maintenance cost that swells while it sits untouched is the interest. The sooner the debt is repaid, through refactoring and the like, the smaller the total cost.
「借金」というたとえThe borrowing metaphorSATDSATD
Self-Admitted Technical Debt技術的負債のうち、開発者自身が明示的に認識し、コメントや課題票などの形で書き残したもの。研究者が定義・検出する負債とは異なり、開発者の言葉で負債の存在が示されている点が特徴です。コード中のコメントに残すSATD-Commentと、課題管理システムで管理するTD-Issueに大別されます。 The part of technical debt that developers themselves explicitly recognize and record, in comments or issue tickets. Unlike debt that researchers define and detect, it is debt made visible in the developer's own words, split broadly into SATD-Comment, left in source-code comments, and TD-Issue, managed in an issue tracker.
TD-Issue の自動分類Automatic TD-Issue classificationSATD-CommentSATD-Comment
SATDのうち、個々の開発者がソースコード中のコメントとして残す負債の痕跡(TODOやFIXMEなど)。ソースコードレベルで負債の存在を示す、もっとも身近な形です。 The form of SATD an individual developer leaves as a source-code comment, such as a TODO or FIXME. It is the most familiar way debt is marked at the source-code level.
TD-Issue の自動分類Automatic TD-Issue classificationTD-IssueTD-Issue
課題管理システム上で、プロジェクトとして管理される負債の課題票。debtなどのラベルを付けて明示的に管理されることが多く、SATD-Issueとも呼ばれます。個人が残すSATD-Commentに対し、プロジェクトレベルで負債を扱う点が特徴です。
A debt issue managed at the project level in an issue tracker, often marked explicitly with a label such as debt; also referred to as a SATD-Issue. Where SATD-Comment is left by an individual, this handles debt at the level of the project.
リファクタリングRefactoring
Refactoring外部から見た振る舞いを変えないまま、内部の構造を整理・改善するコード変更。技術的負債の元本を解消する、代表的な返済手段です。データ型の変更やリネームなど、細粒度の変更が組み合わされることも多いとわかっています。 Restructuring and improving a program's internal structure without changing its external behavior. It is the primary way of repaying the principal of technical debt, often applied as a combination of fine-grained changes such as data-type changes and renaming.
負債の返済とリファクタリングRepayment & refactoringコードスメルCode Smell
Code Smell重複したロジックや過度に長いメソッドなど、設計上の問題を示唆するコードの兆候。研究者が定義した指標にもとづき、コードから機械的に検出できる負債の代表例で、開発者が明示するSATDとは異なる「検出する系譜」に属します。 A surface indicator of a design problem, such as duplicated logic or an overly long method. A representative form of debt detectable mechanically from code using researcher-defined criteria, belonging to the "detection" lineage rather than the SATD lineage of developer-stated debt.
メトリクスによる分類・特徴づけClassifying debt with metricsB. 開発データまわりB. Development data
研究が扱う、開発の記録そのものThe records of development itself
リポジトリや課題管理システムに残る記録など、実証研究の材料になるデータに関する用語です。 Terms about the data that empirical research draws on: the records left in repositories and issue trackers.
リポジトリマイニングMining Software Repositories
Mining Software Repositories (MSR)GitHubなどのソフトウェアリポジトリに蓄積されたコミット履歴や課題票などのデータを分析し、開発の実態を実証的に明らかにする研究アプローチ。技術的負債の検出やメトリクスによる特徴づけも、この枠組みの中で行われます。 A research approach that analyzes data accumulated in software repositories, such as GitHub, commit histories, and issue trackers, to explain development practice empirically. Detecting technical debt and characterizing it with metrics both fall within this framework.
メトリクスによる分類・特徴づけClassifying debt with metrics課題管理システムIssue Tracking System
Issue Tracking Systemバグ報告や機能要望、TD-Issueなどの課題(チケット)を記録・追跡するためのシステム。GitHub Issuesなどが代表例で、そこに残された記録は、負債がどう認識・管理されているかを調べる材料になります。 A system for recording and tracking issues, such as bug reports, feature requests, and TD-Issues. GitHub Issues is a common example, and the records it leaves behind are material for studying how debt is recognized and managed.
メトリクスによる分類・特徴づけClassifying debt with metricsコミットCommit
Commitバージョン管理システムに記録される、一まとまりのコード変更。メッセージや差分から、開発者が何を目的に変更したかを読み取れます。返済コミットのようにIssueのIDを含むメッセージは、負債とコード変更を結びつける手がかりになります。 A recorded, discrete change to code in a version control system. Its message and diff reveal what the developer intended, and a message referencing an issue ID, as in a repayment commit, is a clue that links debt to a code change.
負債の返済とリファクタリングRepayment & refactoringオープンソースソフトウェアOpen Source Software
OSSソースコードが公開され、誰でも閲覧・利用・改変できるソフトウェア。開発の記録が広く公開されているため、ソフトウェア工学の実証研究の対象になりやすく、本サイトの研究の多くもOSSプロジェクトを対象としています。 Software whose source code is public and open to viewing, use, and modification. Because its development records are widely public, it is a common subject for empirical software engineering research, including much of the work introduced on this site.
TD-Issue の自動分類Automatic TD-Issue classificationコーディング規約Coding Standard
Coding Standard命名や書式など、コードの書き方について定めた取り決め。守られることでコードの可読性・保守性が保たれます。自動生成されたパッチが規約にどう影響するかも、コード品質を考えるうえでの論点です。 A set of conventions for how code should be written, covering naming and formatting among other things. Following it keeps code readable and maintainable, and how automatically generated patches affect it is one lens for thinking about code quality.
自動生成パッチとコーディング規約APR & coding standardsC. 手法まわりC. Methods
データから何かを見つけ、直すための道具Tools for finding and fixing, from data
開発データを分析したり、コードそのものを調べたり直したりするための、代表的な手法に関する用語です。 Terms about the representative methods used to analyze development data, and to examine and fix code itself.
ソフトウェアメトリクスSoftware Metrics
Software Metrics規模・複雑さ・変更履歴など、ソフトウェアやその開発過程を定量的に表す指標。技術的負債の検出や特徴づけに用いられ、ソースコード由来の指標だけでなく、変更間隔や作成者数のような開発履歴由来の指標も含まれます。 Quantitative indicators of software and its development process, such as size, complexity, and change history. Used to detect and characterize technical debt, spanning both source-code metrics and development-history metrics such as change interval and author count.
メトリクスによる分類・特徴づけClassifying debt with metrics静的解析Static Analysis
Static Analysisプログラムを実行せずにソースコードを解析し、コードスメルや潜在的な不具合などを見つける手法。専用のセットアップが要る一方、バージョン管理の履歴だけから計算できる指標は、これに頼らずに負債の候補を絞り込む選択肢にもなります。 A technique that analyzes source code without executing it, to find code smells and potential defects. It requires dedicated tooling, so metrics computable from version-control history alone offer a way to screen debt candidates without it.
メトリクスによる分類・特徴づけClassifying debt with metrics自動プログラム修正Automated Program Repair
Automated Program Repair (APR)バグを含むプログラムに対し、テストを通過する修正パッチを自動的に生成する技術。正しさは満たしても、コーディング規約違反を増やすなど、可読性・保守性の面で別の課題を抱えることが分かっています。 A technique that automatically generates a fix, a patch that passes tests, for a buggy program. It can satisfy correctness while raising other concerns for readability and maintainability, such as an increase in coding-standard violations.
自動生成パッチとコーディング規約APR & coding standards分類モデル・決定木Classifier / Decision Tree
Classifier / Decision Treeデータをあらかじめ定めたクラスに割り当てる分類モデルの総称。決定木はその一種で、木構造の分岐によって分類し、どの指標がどう効いているかという判断の根拠を読みやすいのが特徴です。 A general term for models that assign data to predefined classes. A decision tree is one such classifier: it classifies through a sequence of branching decisions arranged as a tree, which makes the basis for its judgments, which metrics matter and how, easy to read.
メトリクスによる分類・特徴づけClassifying debt with metrics