プリンキピア

第9章ソフトウェア工学

Thought Provokers思考を深める問い

Exercises 1–5練習問題 1–5
1. Consider our start-up company that is 100% committed to leveraging innovative technologies as a business growth facilitator. Describe how it can best use software security engineering to create products or services that can generate business. Give precise examples and explain how the start-up would be able to scale the resulting business (i.e., keep sustaining the cost of doing business while increasing its number of customers).
英語のヒント
1. 事業成長を促すために革新的な技術を徹底して活用する、本書のスタートアップ企業を考えよう。事業を生み出す製品やサービスの制作に、ソフトウェアセキュリティ工学をどう使うのが最善かを説明せよ。具体的な例を挙げ、そこから生まれた事業をどう拡大できるか、すなわち顧客数を増やしながら事業の費用を引き続き賄えるかを説明せよ。
2. In the health-care industry, the Health Insurance Portability and Accountability Act (HIPAA) mandates that electronic billing and the sharing of client information cannot be done without proper software support. Software plays a crucial role here because it enables electronic communication, and it lowers expenses in comparison to information exchange in traditional paper form. Other than health care, what are other industry examples that have changed drastically in the past decade as a result of applying software as a part of the solutions they offer? Note that the automotive industry was already mentioned in the chapter.
英語のヒント
2. 医療産業では、医療保険の携行性と責任に関する法律(HIPAA)によって、適切なソフトウェアの支援なしには、電子的な請求と顧客情報の共有を行えないとされている。ソフトウェアは電子的な意思疎通を可能にし、従来の紙による情報交換よりも費用を下げるため、ここで極めて重要な役割を果たす。医療以外で、提供する仕組みの一部にソフトウェアを適用した結果、過去10年間に大きく変化した産業の例には何があるか。自動車産業は、この章ですでに取り上げた。
3. Virtual reality is a technology that has gotten a lot of attention recently. With companies like Microsoft promoting Mixed Reality and Meta (the company previously known as Facebook) promoting their Metaverse, VR has big companies behind it. Virtual reality, however, has been promoted in the past by game companies such as Nintendo but ended up fading away. Will virtual reality fade away again? What will make virtual reality a success? What impact do software engineers have on its success?
英語のヒント
3. 仮想現実は、近年大きな注目を集めている技術である。Microsoftのような企業がMixed Realityを推進し、Meta(以前はFacebookという社名だった企業)がメタバースを推進するなど、大企業がVRを後押ししている。しかし過去にも、任天堂のようなゲーム会社が仮想現実を推進しながら、結局は衰退したことがあった。仮想現実は再び衰退するのか。何が仮想現実を成功させるのか。その成功に、ソフトウェアエンジニアはどのような影響を及ぼすか。
4. As the project leader for the software engineering of the new features of next year’s car model, you have been tasked to deliver the lane departure system, additional navigational features on the dashboard computer screen, and a heads-up display system that shows the speed and any warnings displayed onto the windshield. When the product was demoed, the user of the system indicates that they also want to include navigational aids from the navigational system onto the windshield heads-up display. When the navigation system is providing directions, the heads-display on the windshield should show an arrow when getting close to a turn. This functionality was not a part of the original requirements, but rather is a change to the scope of the project. What do you do? What impact will this have on the process and SDLC models being used for the project? Further imagine the new functionality is critical for safety and could potentially prevent accidents. Would your approach change?
英語のヒント
4. あなたは、来年の自動車モデルの新機能に関するソフトウェア工学のプロジェクトリーダーである。車線逸脱システム、ダッシュボードのコンピューター画面上の追加のナビゲーション機能、速度や警告をフロントガラスに表示するヘッドアップディスプレイシステムの提供を任された。製品の実演時に、ユーザーは、ナビゲーションシステムの案内も、フロントガラスのヘッドアップディスプレイに含めたいと述べた。経路案内中、曲がる場所が近づいたら、フロントガラス上に矢印を表示してほしいという。この機能は当初の要求には含まれず、プロジェクトの範囲を変更するものである。どう対応するか。プロジェクトで使っているプロセスやSDLCモデルには、どのような影響があるか。さらに、この新機能が安全上不可欠で、事故を防ぐ可能性があると想像しよう。対応は変わるだろうか。
5. Consider our start-up company that is 100% committed to leveraging innovative technologies as a business growth facilitator. Describe how it can best use software process model selection and refinement to create products or services that can generate business. Give precise examples and explain how the start-up would be able to scale the resulting business (i.e., keep sustaining the cost of doing business while increasing its number of customers)?
5. 事業成長を促すために革新的な技術を徹底して活用する、本書のスタートアップ企業を考えよう。事業を生み出す製品やサービスの制作に、ソフトウェアプロセスモデルの選択と改善をどう使うのが最善かを説明せよ。具体的な例を挙げ、そこから生まれた事業をどう拡大できるか、すなわち顧客数を増やしながら事業の費用を引き続き賄えるかを説明せよ。
Exercises 6–8練習問題 6–8
6. Consider our start-up company that is 100% committed to leveraging innovative technologies as a business growth facilitator. Describe how it can best use the open world software approach to create products or services that can generate business. Give precise examples and explain how the start-up would be able to scale the resulting business (i.e., keep sustaining the cost of doing business while increasing its number of customers).
6. 事業成長を促すために革新的な技術を徹底して活用する、本書のスタートアップ企業を考えよう。事業を生み出す製品やサービスの制作に、オープンワールドのソフトウェア手法をどう使うのが最善かを説明せよ。具体的な例を挙げ、そこから生まれた事業をどう拡大できるか、すなわち顧客数を増やしながら事業の費用を引き続き賄えるかを説明せよ。
7. It is common for software engineers to help determine requirements for a project. What are potential issues that can arise from having software engineers make decisions on requirements?
7. ソフトウェアエンジニアが、プロジェクトの要求を定める作業を手伝うのは一般的である。要求についての判断をエンジニアが行うことから、どのような問題が生じうるか。
8. What are the ramifications of releasing software that has issues? How could this impact customers? How could it impact the software engineers who worked on the project? Consider the features discussed at the beginning of this chapter for software in the automotive industry. What would the impact be of errors in software for features such as lane departure system, cruise control, navigation, or augmented heads-up displays?
8. 問題を抱えたソフトウェアを公開すると、どのような影響が広がるか。顧客にはどう影響するか。プロジェクトに携わったソフトウェアエンジニアにはどう影響するか。この章の冒頭で扱った、自動車産業のソフトウェアの機能を考えよう。車線逸脱システム、クルーズコントロール、ナビゲーション、拡張型ヘッドアップディスプレイなどの機能のソフトウェアに誤りがあれば、どのような影響が出るだろうか。

Labs実習

1. Researching traditional software process models: Several traditional prescriptive process models were not covered in this section (e.g., Phased model, Aspect-Oriented Software Development (AOSD) model), and related alternative techniques (e.g., Formal Transformation Process model, Reuse-Based Process model, Rapid Application Development, Personal Software Process model/Team Software Process model, CMM, SEI’s IDEAL Model, Component Based Software Engineering or CBSE software model, Hybrid Process models). Find reliable sources such as articles or websites that explain each framework. Answer the W5 questions (Who, What, When, Where, Why) for each framework: Who: Who created or popularized the framework? Is it used by any specific industries? What: What are the core principles and practices of the framework? When: When might this framework be a good choice for a project? Where: Are there any examples of companies that use this framework successfully? Why: Why might a team choose this framework over others?
1. 従来型のソフトウェアプロセスモデルを調べる:この節では扱わなかった従来型の規定的プロセスモデルには、フェーズ別モデル、アスペクト指向ソフトウェア開発(AOSD)モデルなどがある。関連する代替的な技法には、形式的変換プロセスモデル、再利用に基づくプロセスモデル、高速アプリケーション開発、パーソナルソフトウェアプロセスモデル/チームソフトウェアプロセスモデル、CMM、SEIのIDEALモデル、コンポーネントベースソフトウェア工学(CBSE)モデル、混成プロセスモデルなどがある。それぞれの枠組みを説明する、記事やWebサイトなどの信頼できる資料を探せ。各枠組みについて、W5(誰が、何を、いつ、どこで、なぜ)の問いに答えよ。誰が:誰がその枠組みを作ったか、または普及させたか。特定の産業で使われているか。何を:その枠組みの中核となる原則と実践方法は何か。いつ:どのような場合に、プロジェクトに適した選択となるか。どこで:その枠組みを使って成功している企業の例はあるか。なぜ:チームがほかの枠組みよりもそれを選ぶ理由は何か。
Identify a real-world application: Imagine you’re working on a software project to develop a mobile game with a small team. The requirements are well defined and changes are not expected. Based on your research, which traditional software process model would you recommend for this project? Why?
実際の適用例を考える:少人数のチームでモバイルゲームを開発するソフトウェアプロジェクトに取り組んでいると想像しよう。要求は明確に定められ、変更は予想されない。調査に基づくと、このプロジェクトにはどの従来型ソフトウェアプロセスモデルを勧めるか。それはなぜか。
2. Researching Agile process models: Several Agile frameworks or methods were not discussed in this section (e.g., Adaptive Software Development, Dynamic Systems Development Method, Crystal, Feature Driven Development, Incremental Funding Method IFM, Kanban, XP, Incremental Prototyping Model, Agile Pattern-Driven Approach, Design Thinking Method, Lean Startup Method). Find reliable sources such as articles or websites that explain each framework. Answer the W5 questions (Who, What, When, Where, Why) for each framework: Who: Who created or popularized the framework? Is it used by any specific industries? What: What are the core principles and practices of the framework? When: When might this framework be a good choice for a project? Where: Are there any examples of companies that use this framework successfully? Why: Why might a team choose this framework over others such as Scrum?
2. アジャイルプロセスモデルを調べる:この節では扱わなかったアジャイルの枠組みや手法には、適応的ソフトウェア開発、動的システム開発手法、Crystal、フィーチャー駆動開発、増分的資金供給手法(IFM)、Kanban、XP、増分的プロトタイピングモデル、アジャイルパターン駆動手法、デザイン思考手法、リーンスタートアップ手法などがある。それぞれの枠組みを説明する、記事やWebサイトなどの信頼できる資料を探せ。各枠組みについて、W5(誰が、何を、いつ、どこで、なぜ)の問いに答えよ。誰が:誰がその枠組みを作ったか、または普及させたか。特定の産業で使われているか。何を:その枠組みの中核となる原則と実践方法は何か。いつ:どのような場合に、プロジェクトに適した選択となるか。どこで:その枠組みを使って成功している企業の例はあるか。なぜ:チームがScrumなどのほかの枠組みよりもそれを選ぶ理由は何か。
Identify a real-world application: Imagine you’re working on a software project to develop a mobile game with a small team. The requirements are well defined but there is a need to be flexible and adapt to user feedback quickly. Based on your research, which Agile framework (Scrum, Kanban, or one you researched) would you recommend for this project? Why?
実際の適用例を考える:少人数のチームでモバイルゲームを開発するソフトウェアプロジェクトに取り組んでいると想像しよう。要求は明確だが、柔軟に対応し、ユーザーのフィードバックにすばやく適応する必要がある。調査に基づくと、Scrum、Kanban、または自分で調べたもののうち、このプロジェクトにはどのアジャイルの枠組みを勧めるか。それはなぜか。
3. There are a number of software development tools that are freely available or that can be accessed and run from the web. One such online integrated development environment is Replit, which can be found at Replit.com. This IDE allows you to enter programs using a variety of programming languages, such as C, JavaScript, Python, C++, Java, and more. Create an account on Replit.com. Once your account is created, go to to access tutorials (https://openstax.org/r/76Replit) on using Replit and programming. Pick an Introductory tutorial from the site on a programming language such as JavaScript and complete it.
3. 無料で利用できるものや、Webからアクセスして実行できるものなど、さまざまなソフトウェア開発ツールがある。オンライン統合開発環境の一例が、Replit.comにあるReplitである。このIDEでは、C、JavaScript、Python、C++、Javaなど、さまざまなプログラミング言語でプログラムを入力できる。Replit.comでアカウントを作成しよう。作成したら、Replitの使い方とプログラミングに関するチュートリアル(https://openstax.org/r/76Replit)を開く。JavaScriptなどのプログラミング言語の入門チュートリアルを一つ選び、最後まで取り組もう。
4. Explore Visual Studio Code (https://openstax.org/r/76VisStudioCode). Describe what it does and how it relates to software development.
4. Visual Studio Code(https://openstax.org/r/76VisStudioCode)を調べよ。何をするもので、ソフトウェア開発とどう関わるかを説明せよ。
5. Read excerpts from Kurzweil’s The Singularity Is Near and his more recent book, How to Create a Mind as needed to justify his prediction regarding digital utopia and immortality as human capabilities (and lifespans) are amplified using technology. Also, analyze Bill Joy’s prediction of digital dystopia and human extinction as machines become more and more capable. Express your point of view regarding these two diametrically opposed visions and how you believe it could influence the way software engineers approach the definition of a long view for the human race.
英語のヒント
5. Kurzweilの『The Singularity Is Near』と、それより新しい著作『How to Create a Mind』の抜粋を必要に応じて読み、技術によって人間の能力と寿命が拡大されることに伴う、デジタルの理想郷と不死についての彼の予測を根拠付けよ。また、機械がますます高い能力を持つにつれて、デジタルの暗黒郷と人類の絶滅が訪れるというBill Joyの予測も分析せよ。この正反対の二つの将来像について、自分の見解を述べよ。それらが、人類の長期的な展望を定める際のソフトウェアエンジニアの取り組み方に、どう影響しうると考えるかも述べよ。