第9章ソフトウェア工学
Version Control Systemバージョン管理システム
A quite common tool used in software development is a version control system, which stores the history of changes to source code and facilitates collaboration of multiple developers. The most popular version control system today is Git, which is often used with a common hub, such as GitHub or Bitbucket.
英語のヒント
ソフトウェア開発で非常によく使うツールに、バージョン管理システムがある。ソースコードの変更履歴を保存し、複数の開発者の協力を容易にする。現在、最も普及しているバージョン管理システムはGitであり、GitHubやBitbucketなどの共通の拠点と組み合わせて使うことが多い。
Git stores the project source code written by a developer in a repository that is typically on the developer’s machine. Developers can push their code to a project repository for integration purposes. The main features of Git are as follows:
英語のヒント
Gitは、開発者が書いたプロジェクトのソースコードを、通常は開発者のコンピューター上にあるリポジトリへ保存する。開発者は統合のために、自分のコードをプロジェクトのリポジトリへプッシュできる。Gitの主な機能は次のとおりである。
• It tracks changes in your source code.
• ソースコードの変更を追跡する。
• It enables reverting the changes.
英語のヒント
• 変更を元に戻せるようにする。
• It facilitates collaborative development.
• 共同での開発を容易にする。
GitHub facilitates code sharing among developers by allowing developers to modify source code on their own machine, commit changes to a Git repository on their machine, and then push changes from their machine to GitHub so that other developers can access them.
英語のヒント
GitHubは、開発者同士のコード共有を容易にする。開発者は自分のコンピューター上でソースコードを変更し、その変更を同じコンピューター上のGitリポジトリにコミットする。次に、その変更を自分のコンピューターからGitHubへプッシュし、ほかの開発者も利用できるようにする。
Many open-source projects are hosted on GitHub that allow people to download their source code and contribute. Figure 9.23 shows a standard GitHub page, in this case from the JavaScript library called the jQuery project.
英語のヒント
GitHubでは、多くのオープンソースプロジェクトが公開され、ソースコードをダウンロードしたり、開発に貢献したりできる。図9.23は標準的なGitHubのページで、ここではjQueryプロジェクトというJavaScriptライブラリのものを示している。

Figure 9.23 GitHub is a version control system that facilitates code sharing among developers. (credit: GitHub, CC0 1.0)
図9.23 GitHubは、開発者同士のコード共有を容易にするバージョン管理システムである。(クレジット:GitHub、CC0 1.0。)
Bug Tracking Systemバグ管理システム
Another common software development tool is a bug tracking system, which aids in the tracking and resolution of fixing issues with software. Bug tracking software stores information about issues that have been reported and their resolution.
英語のヒント
よく使われるソフトウェア開発ツールには、バグ管理システムもある。ソフトウェアの問題を追跡し、修正・解決するのを支援する。バグ管理ソフトウェアは、報告された問題と、その解決についての情報を保存する。
A common workflow with the bug tracking system is as follows: when a customer or a tester reports a bug, a new record in the bug tracking system is created. Then, the project manager or any other team member assigns the bug to a developer. The bug report must provide instructions as to how the bug manifests and may be fixed so that the assigned developer can reproduce it and decide how to proceed. Here’s a general breakdown of how bug tracking works:
英語のヒント
バグ管理システムでの一般的な作業の流れは、次のようになる。顧客やテスターがバグを報告すると、システム内に新しい記録が作られる。その後、プロジェクトマネージャーやほかのチームメンバーが、担当する開発者を割り当てる。バグ報告には、バグがどのように現れ、どのように修正できそうかを示す情報が必要である。担当の開発者が再現し、進め方を決められるようにするためだ。バグ管理での扱いを大まかに分けると、次のようになる。
• If the bug cannot be reproduced or if it is not a bug but a request for a new feature, it will be rejected.
• バグを再現できない場合や、バグではなく新機能の要望である場合は、報告を却下する。
• If the report describes a bug that was already reported, it will be marked as a duplicate.
• すでに報告済みのバグである場合は、重複として記録する。
• If the fix is scheduled for a next release, it will be marked as deferred.
英語のヒント
• 修正を次のリリースに予定する場合は、延期として記録する。
When the developer fixes the bug, the code should be retested to confirm that the bug has truly been resolved. Figure 9.24 illustrates a common bug reporting and tracking flow.
開発者がバグを修正したら、コードを再テストし、本当に解決したかを確認する必要がある。図9.24は、一般的なバグの報告と管理の流れを示す。

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典
Figure 9.24 The Jira issue tracking system shows a common workflow of bug tracking systems. When a bug is detected, a new record is created. After the bug has gone through the process of being assigned and fixed, and the fix has been verified, the record closes. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図9.24 Jiraの課題管理システムは、バグ管理システムの一般的な作業の流れを示している。バグを検出すると、新しい記録を作成する。担当の割り当てと修正のプロセスを経て、修正の検証が済むと、その記録を閉じる。(帰属:Rice University、OpenStax著作権、CC BY 4.0ライセンス。)
Figure 9.25 shows a bug tracking tool—the jQuery bug tracking tool—that is available on GitHub.
図9.25は、GitHubで利用できるバグ管理ツールである、jQueryのバグ管理ツールを示す。

Figure 9.25 The jQuery bug tracker on GitHub keeps track of how many issues are pending (“86 Open”) and which have been resolved (“602 Close”). (credit: GitHub, CC0 1.0)
英語のヒント
図9.25 GitHub上のjQueryバグ管理ツールは、未解決の問題数(「86 Open」)と、解決した問題(「602 Close」)を管理する。(クレジット:GitHub、CC0 1.0。)
INDUSTRY SPOTLIGHT産業界に注目
Bugs Not Caught見逃されたバグ
In January of 2022, the San Francisco Unified School District rolled out a new employee information system, which included the payroll for over 10,000 employees. Unfortunately, the development team did not do a thorough job of testing this system, and it contained a number of bugs when it was launched. As a result, hundreds of teachers and staff members did not, even after several months, receive paychecks from the system.
英語のヒント
2022年1月、サンフランシスコ統一学区は、1万人を超える職員への給与支払いも含む、新しい職員情報システムを導入した。ところが開発チームのテストが十分ではなく、稼働時点で多くのバグが残っていた。その結果、数百人の教員や職員は、何か月か経っても、このシステムから給与を受け取れなかった。
Because the system was unable to process payroll, hundreds of employees were unable to pay their rent, medical bills, and other expenses. In this case, the delivery of a flawed system harmed people.
英語のヒント
システムが給与支払いを処理できなかったため、数百人の職員は家賃、医療費、そのほかの費用を払えなかった。この事例では、欠陥のあるシステムを提供したことが、人々に被害を与えた。
This is an example where a system’s product did not adhere to the highest standards and failed to be tested to a level that would avoid an issue that directly harmed many of the employees who relied on the system. While the Chief Technology Officer issued apologies and assigned 100% of the project staff to get the issues resolved, the reality is—and ethically speaking—more time should have been allotted to test the system prior to it replacing the old system.
英語のヒント
これは、システム製品が最高水準の基準に従わず、そのシステムを頼りにしていた多くの職員に直接被害を与える問題を避けられるほどには、テストされなかった例である。最高技術責任者は謝罪し、プロジェクトの担当者全員を問題解決に割り当てた。しかし、実際には、そして倫理的な観点から言えば、旧システムを置き換える前に、もっと多くの時間をテストに割り当てるべきだった。
We typically think about all of the ways that technology and systems can help people. It is also important to acknowledge there are risks also. Bugs in software can have a significant impact on the people affected. This reinforces the importance of testing and validating a system before we release it.
英語のヒント
私たちは通常、技術やシステムがどのように人を助けられるかを考える。リスクも存在することを認めるのが重要である。ソフトウェアのバグは、被害を受ける人々に重大な影響を及ぼしうる。このことからも、システムを公開する前にテストし、妥当性を確認する重要性が分かる。