プリンキピア

第9章ソフトウェア工学

TECHNOLOGY IN EVERYDAY LIFE日常生活の中の技術
Delivering Viable Systems実用に耐えるシステムを届ける
The development of software often focuses on three areas: desirability, capability, and viability. In other words, the focus is on what is wanted, what is possible, and what will sell or help a business to function. To be successful, a software product must deliver something people want and is of value. It must also be possible to implement the product.
英語のヒント
ソフトウェア開発では、望ましさ、実現能力、実用性という三つの領域を重視することが多い。言い換えれば、何が求められているか、何が可能か、何が売れたり事業を機能させる助けになったりするかである。成功するには、人々が欲しがり、価値のあるものを届けなければならない。また、その製品を実装できる必要もある。
In the 1980s, the first virtual reality software was released. VR was something that many people wanted and saw a value in having; however, the technology was not capable of delivering a viable system. It is only today that software and hardware capabilities can support VR at a level that makes it possible to deliver products that people are willing to pay for.
英語のヒント
1980年代に、最初の仮想現実ソフトウェアが公開された。多くの人がVRを望み、持つことに価値を見いだしていたが、当時の技術では実用に耐えるシステムを提供できなかった。人々がお金を払おうと思う製品を提供できる水準で、ソフトウェアとハードウェアがVRを支えられるようになったのは、今日になってからである。
What are some other technology areas that are viable today that were not viable ten years ago? What are some software technologies that are not viable today that could be viable within the next ten years?
10年前には実用にならず、現在では実用化できている技術分野には、ほかに何があるだろうか。今は実用化できないが、今後10年以内に実用化できそうなソフトウェア技術には、何があるだろうか。
Software Configuration and Content Management
ソフトウェアの構成管理とコンテンツ管理
Software configuration management (SCM) is a crosscutting activity that helps report, identify, and control change to items that are under managed development. These items are referred to as Software Configuration Items (SCIs). SCM also analyzes the implementation of change and provides mechanisms to publish and deploy change. One way to reinforce the importance of configuration management without a real customer is to change the project requirements sometime after the project implementation begins.
英語のヒント
ソフトウェア構成管理(SCM)は、管理された開発の対象となる項目への変更を、報告・特定・管理するための横断的活動である。これらの項目は、ソフトウェア構成品目(SCI)と呼ぶ。SCMは変更の実施内容も分析し、その変更を公開・配備する仕組みを提供する。実際の顧客がいない状況で構成管理の重要性を実感させる方法の一つは、実装が始まってから、プロジェクトの要求を変更してみることである。
The focus of SCM tends to be on four main areas:
SCMは主に、次の四つの領域を扱う。
• Configuration identification: the identification of all components within a project, including any files, documents, source code files, directory structures, and more
• 構成の識別:各種ファイル、文書、ソースコードファイル、ディレクトリ構造など、プロジェクト内のすべての構成要素を特定する。
• Configuration change controls: the controlling of who accesses elements of a project and the tracking of changes being made
• 構成変更の管理:誰がプロジェクトの要素へアクセスするかを管理し、行われる変更を追跡する。
• Configuration status accounting: the tracking of who made a change as well as when they made the change and why it was made
• 構成状態の記録:誰が、いつ、なぜ変更したかを追跡する。
• Configuration auditing: the tracking of the status of a project and, more important, the tracking and confirmation that what is being created matches what is required
英語のヒント
• 構成監査:プロジェクトの状況を追跡し、とりわけ、作成中のものが要求と合致することを追跡・確認する。
Many Agile teams make use of continuous integration to ensure that they always have viable prototypes ready to test and extend. The advantages of continuous integration are as follows:
多くのアジャイルチームは、常にテストや拡張ができる実用的な試作品を用意しておくため、継続的インテグレーションを利用する。利点は次のとおりである。
• involves frequent feedback to notify developers promptly when integration testing fails so they can fix issues as quickly as possible, especially if the number of fixes required is small
• 頻繁なフィードバックによって、統合テストが失敗したときに開発者へ素早く知らせる。特に修正箇所が少ない場合には、問題をできるだけ早く修正できる。
• improves quality by being able to address product changes quickly; as a result, users can trust that the product meets their needs
• 製品の変更へ素早く対応できることで品質を改善する。その結果、利用者は製品が自分のニーズを満たすと信頼できる。
• reduces risk by avoiding long delays between the time software is developed and its integration into the product; this ensures that design failures can be detected and addressed early on
• ソフトウェアの開発から製品への統合までの長い遅れを避け、リスクを減らす。これにより、設計の不具合を早期に検出して対処できる。
• involves up-to-date reporting to ensure that software is correctly configured to conform, for example, to the latest code analysis metrics
• 最新の報告を行い、たとえば最新のコード解析の指標に適合するよう、正しく設定されていることを確かめる。
• ensures that streamlined integration is used as key support technologies in organizations that use Agile software process models
英語のヒント
• アジャイル型のモデルを使う組織で、無駄を省いた統合を、重要な支援技術として確実に利用する。
• captures defects as early as possible in the software engineering process, which limits the cost of software development
• 工程のできるだけ早い段階で欠陥を捉え、開発費用を抑える。
Various tools may be used to support SCM, including audit management tools (e.g., ZenHub), configuration management/automation tools (e.g., Ansible, Vagrant), continuous integration tools (e.g., Jenkins, Travis CI), dependency tracking and change management tools (e.g., Basecamp, Jira), source control management tools (e.g., GitHub), and so on.
SCMの支援には、監査管理ツール(ZenHubなど)、構成管理・自動化ツール(Ansible、Vagrantなど)、継続的インテグレーションのツール(Jenkins、Travis CIなど)、依存関係の追跡と変更管理のツール(Basecamp、Jiraなど)、ソース管理ツール(GitHubなど)をはじめ、さまざまなツールを利用できる。
Content management includes collection, management, and publishing subsystems. The collection subsystem facilitates the creation and acquisition of new content. It also makes it possible for humans to relate to the content and combines it as units that can be displayed more effectively on the client side. The management subsystem provides a repository for content storage capabilities, including the content database (i.e., the information structure use to organize all the content objects), the database capabilities (e.g., functions to search for content objects, store and retrieve objects, and manage the content file structure), and configuration management functions (e.g., supports content object identification, version control, change management, change auditing, and reporting). The publishing subsystem extracts content from the repository, converts it to a publishable form, and formats it so that it can be displayed in a web browser (e.g., Chrome, Safari). The publishing subsystem uses a series of templates for each type, including static elements (e.g., text, graphics, media, and scripts that require no further processing are transmitted directly to the client side), publication services (i.e., function calls to specific retrieval and formatting services that personalize content, perform data conversion, and build appropriate navigation links), and external services that provide access to external corporate information infrastructure, such as enterprise data or “back-room” applications.
英語のヒント
コンテンツ管理は、収集、管理、公開の各サブシステムで構成される。収集サブシステムは、新しいコンテンツの作成や取得を助ける。また、人がコンテンツと関われるようにし、クライアント側でより効果的に表示できる単位へまとめる。管理サブシステムは、コンテンツを保存するリポジトリを提供する。すべてのコンテンツオブジェクトを整理する情報構造であるコンテンツデータベース、オブジェクトの検索・保存・取得やファイル構造の管理などを行うデータベース機能、そして、オブジェクトの識別、版管理、変更管理、変更監査、報告を支える構成管理機能を含む。公開サブシステムは、リポジトリからコンテンツを取り出し、公開可能な形式へ変換して、ChromeやSafariなどのWebブラウザーで表示できるように整形する。種類ごとに一連のテンプレートを用いる。その対象には、追加の処理が不要でクライアント側へ直接送る文章、画像、メディア、スクリプトなどの静的要素、コンテンツの個人向け調整・データ変換・適切な移動用リンクの生成を行う特定の取得・整形サービスへの関数呼び出しである公開サービス、そして、企業のデータや「バックルーム」のアプリケーションなど、外部の企業情報基盤へのアクセスを提供する外部サービスが含まれる。
Software Quality Management
ソフトウェア品質管理
Whereas testing validates that things work as expected and that there are no errors or issues, Software Quality Management (SQM) focuses on the development and management of the quality of the solution being developed. Tasks within SQM involve quality planning and quality control. They include, but are not limited to, activities such as:
英語のヒント
テストが期待どおりの動作と誤り・問題の不在を検証するのに対し、ソフトウェア品質管理(SQM)は、開発中の仕組みの品質を作り込み、管理することを重視する。品質計画と品質管理のタスクを含み、たとえば次のような活動を行う。ただし、これらに限定されるわけではない。
• confirming requirements are correct, complete, and consistent
• 要求が正しく、必要事項を漏れなく含み、矛盾していないことを確かめる。
• verifying that all elements of design conform to the requirements and are of high quality
• 設計のすべての要素が要求に適合し、高品質であることを検証する。
• confirming that source code follows coding standards and is written in a manner that will be maintainable going forward
• コードがコーディング規約に従い、将来も保守できる書き方になっていることを確かめる。
• ensuring that testing checks all elements of a solution
• テストで仕組みのすべての要素を確認するようにする。
• implementing a change management plan
• 変更管理の計画を実施する。
Engineering quality software subsumes a deep understanding of the solution requirements and the ability to design work products that conform to these requirements. These activities must rely on the use of software engineering best practices and must be supported by adequate project management.
英語のヒント
高品質なソフトウェアを工学的に作り上げることには、要求を深く理解し、それに適合する成果物を設計できることが含まれる。これらの活動は、ソフトウェア工学の優れた実践に基づき、適切なプロジェクト管理によって支えられなければならない。
Assessment reviews (e.g., system engineering assessments, software project planning assessments, analysis models assessments, design models assessments, source code assessments, software testing assessments, and maintenance assessments) are an important quality assurance mechanism. Software quality assurance (SQA) is part of a broad spectrum of software quality management activities that focus on techniques for achieving and/or ensuring high-quality software.
システム工学、プロジェクト計画、分析モデル、設計モデル、ソースコード、テスト、保守などの評価レビューは、重要な品質保証の仕組みである。ソフトウェア品質保証(SQA)は、高品質なソフトウェアを達成し、確実にするための技法を扱う、幅広い品質管理活動の一部である。
Architecture Management
アーキテクチャ管理
Returning to the analogy of how software architecture is like the blueprint of a house, software architecture management can then be likened to improving the blueprint as you use it to build the house. To put it another way, creating the blueprint (architecture) was just the first step. In software development, architecture management involves keeping track of the blueprint and making sure it stays up-to-date as the software is being built. This helps avoid problems later on. While HLD is a software engineering action that takes place in the software process elaboration phase, the architecture management umbrella activity encompasses a set of architecture management and architectural refinements techniques that can help improve the architectural design while it is under development.
英語のヒント
アーキテクチャを家の設計図にたとえるなら、アーキテクチャ管理は、その図を使って家を建てながら、図を改善することに相当する。設計図を作ることは、最初の一歩にすぎない。開発では、アーキテクチャ管理によって設計図を追跡し、ソフトウェアの構築中も最新に保つ。これが後々の問題を防ぐ。HLDは推敲のフェーズで行うアクションであるのに対し、アーキテクチャ管理というアンブレラ活動は、開発中の設計を改善するための、管理や詳細化の各種技法を含む。
Architecture management efforts may be performed at any point within the software life cycle, which explains why architecture management is a good umbrella activity; it maintains the knowledge required to qualify the “goodness” of solutions from a design standpoint, and it is handled separately from the quality management umbrella activity.
英語のヒント
アーキテクチャ管理は、ライフサイクルのどの時点でも行える。このことが、それを適切なアンブレラ活動とする理由である。設計の観点から仕組みの「良さ」を評価するための知識を維持する活動であり、品質管理というアンブレラ活動とは別に扱う。
There are special tools that can help with architecture management. Similar to using software to draw up the blueprint of a house, these tools can help store and organize the architecture information and make it easier for everyone working on the project to understand it. Examples of such tools include artifact/package management tools (e.g., Docker Hub6 , JFrog Artifactory7 ), and pattern catalogs.
アーキテクチャ管理を助ける専用ツールもある。家の設計図をソフトウェアで描くのと同様に、アーキテクチャの情報を保存・整理し、プロジェクトの全員が理解しやすくする。Docker Hub6やJFrog Artifactory7などの成果物・パッケージ管理ツール、パターンのカタログなどが例である。
Software Security Engineering
ソフトウェアセキュリティ工学
Engineering software security focuses on protecting software assets against threats. Threats typically exploit software vulnerabilities to compromise the confidentiality and integrity of data. Threats may also compromise the availability of software systems by disrupting access to system services and related data.
英語のヒント
ソフトウェアセキュリティの工学は、ソフトウェア資産を脅威から守ることを重視する。脅威は通常、脆弱性を利用して、データの機密性や完全性を損なう。また、サービスや関連データへのアクセスを妨げ、システムの可用性を損なうこともある。
Software architectures must be designed to address security requirements and eliminate vulnerabilities that can lead to exploits. Various design techniques can be used by software engineers to address the possibility and the effects of attacks in order to minimize related losses and costs. As an example, Microsoft’s SQUARE process model provides a means of eliciting, categorizing, and prioritizing security requirements engineering for software intensive systems.
英語のヒント
アーキテクチャは、セキュリティ要件を満たし、攻撃に利用される脆弱性を取り除くよう設計しなければならない。エンジニアは、攻撃の可能性や影響へ対処し、関連する損失と費用を最小にするために、各種の設計技法を利用できる。たとえばMicrosoftのSQUAREプロセスモデルは、ソフトウェアを集中的に利用するシステムのセキュリティ要件を引き出し、分類し、優先順位を付けるための手段を提供する。
Keeping up with cybersecurity threats is proving to be difficult for businesses these days due to a lack of trained resources and increased demand for security compliance. Traditional approaches to security are no longer viable to ensure that organizations can keep operating as well as develop competitive solutions. For that reason, many businesses are combining traditional software process models or Agile process models with modern approaches, such as DevSecOps, to manage software security engineering. Using DevSecOps requires the adoption of new processes and tools as well as the training of staff members. The DevSecOps approach automates the support of security throughout the SDLC, which reduces time and costs of development and facilitates the integration of the security and development teams.
英語のヒント
現在の企業にとって、サイバーセキュリティの脅威に対応し続けることは難しくなっている。訓練を受けた人材が不足し、セキュリティ遵守への要求も高まっているためである。従来の方法だけでは、事業を継続しながら競争力のある仕組みを開発することを、もはや確保できない。そこで多くの企業は、従来型やアジャイル型のプロセスモデルにDevSecOpsなどの新しい方法を組み合わせ、セキュリティ工学を管理している。DevSecOpsを使うには、新しい工程やツールの採用と、職員の研修が必要になる。SDLC全体を通じたセキュリティ支援を自動化することで、開発の時間と費用を減らし、セキュリティ担当と開発担当のチームを統合しやすくする。
Some examples of DevOps security tools are Aqua Security and HashiCorp Vault, and examples of DevSecOps tools are SonarQube and XebiaLabs.
DevOpsのセキュリティツールにはAqua SecurityやHashiCorp Vaultが、DevSecOpsのツールにはSonarQubeやXebiaLabsがある。