プリンキピア

第9章ソフトウェア工学

Practice Exercises練習問題

Exercises 1–5練習問題 1–5
1. List five computer technology areas that a software engineer should be familiar with. Consider how each could impact or be applied to a software solution.
1. ソフトウェアエンジニアがよく知っておくべき、コンピューター技術の分野を五つ挙げよ。それぞれがソフトウェアによる仕組みにどのように影響し、または適用できるかを考えよ。
2. List five soft skills that are important for software engineers
2. ソフトウェアエンジニアにとって重要なソフトスキルを、五つ挙げよ。
3. Categorize the following software programs as system software, application software, or embedded software: Linux Debian, Windows 11, Microsoft Word, a website, a Samsung refrigerator door sensor with a small CPU chip, and a sensor on a street lamp with a small CPU chip.
3. 次のソフトウェアを、システムソフトウェア、アプリケーションソフトウェア、組み込みソフトウェアに分類せよ。Linux Debian、Windows 11、Microsoft Word、Webサイト、小型CPUチップを備えたSamsungの冷蔵庫の扉センサー、小型CPUチップを備えた街灯のセンサー。
4. You’ve been assigned to lead a project and your first task is to determine the software development life cycle you should use. What are things you should consider that will impact which SDLC model you should pick?
4. あなたはプロジェクトのリーダーに任命され、最初の仕事として、使うべきソフトウェア開発ライフサイクルを決めることになった。どのSDLCモデルを選ぶかに影響する、考慮すべき事柄は何か。
5. You are the engineering manager for a software development team. A new client comes to you and offers to fund a new project for your team. The client has a poorly developed set of requirements upfront but has an urgent need to get working software. How could you satisfy your client’s needs?
英語のヒント
5. あなたは、ソフトウェア開発チームの技術マネージャーである。新しい顧客が訪れ、チームの新規プロジェクトに資金を出すと申し出た。開始時点の要求は十分に練られていないが、顧客は動作するソフトウェアを緊急に必要としている。顧客のニーズをどう満たせるだろうか。
Exercises 6–7練習問題 6–7
6. Research DevSecOps and summarize how it is different from DevOps.
6. DevSecOpsを調べ、DevOpsとの違いをまとめよ。
7. Analyze processes such as RE, SBSE, and TDD, and explain how they improve traditional software engineering processes from an SPI standpoint.
7. RE、SBSE、TDDなどのプロセスを分析し、ソフトウェアプロセス改善(SPI)の観点から、従来のソフトウェア工学のプロセスをどう改善するかを説明せよ。

Problem Set A問題集A

Exercises 1–5練習問題 1–5
1. Determine at least six functional requirements for a navigational software program that could be used within an automobile.
1. 自動車内で使えるナビゲーションソフトウェアについて、少なくとも六つの機能要求を定めよ。
2. If you were asked to define functional (software) requirements to build a digital pencil (e.g., stylus), what are four possible requirements? Note that while a stylus includes a mix of hardware and software requirements, the same level of thought and detail goes into the process of defining requirements for the software portion.
英語のヒント
2. デジタルペン(スタイラスなど)を作るための、機能的なソフトウェア要求を定めるよう求められたとする。考えられる要求を四つ挙げよ。スタイラスにはハードウェアとソフトウェアの要求が混在するが、ソフトウェア部分の要求を定める際にも、同じだけの思考と詳細さが必要である。
3. What would be some of the nonfunctional requirements applicable to a virtual reality (VR) application?
3. 仮想現実(VR)アプリケーションに適用できる非機能要求には、どのようなものがあるだろうか。
4. You’ve been asked to help determine the requirements for a new software product. This product is a simple calculator. The project is expected to use an iterative approach with at least three iterations. Consider the following requirements and determine who you might prioritize and group them. Explain the reasoning behind your prioritization, considering factors such as user value and project complexity.
英語のヒント
4. あなたは、新しいソフトウェア製品の要求を定める手伝いを求められた。製品は簡単な電卓である。プロジェクトでは、少なくとも3回の反復を含む反復型の手法を用いる予定である。次の要求について、どのように優先順位を付け、グループに分けるかを考えよ。ユーザーにとっての価値やプロジェクトの複雑さなどの要因を考慮し、優先順位の理由を説明せよ。
a. Program should accept whole and rational numbers. b. Program should allow for addition, subtraction, multiplication, and division. c. Program should allow for determining the square root of a number. d. Program should display the results of the operation only after the equal button is selected. e. Program should allow for grouping of actions by using parentheses. For example, the calculator should allow the following to be entered: 2 + (10 / 2) = and should receive the result of 7, not 6 or any other value. f. Program should allow for numbers to be in decimal or octal format. g. Program should allow the user to clear the last value entered or all values entered.
英語のヒント
a. プログラムは、非負の整数と有理数を受け付けること。b. 加算、減算、乗算、除算ができること。c. 数の平方根を求められること。d. 等号ボタンを選んだ後に限り、演算の結果を表示すること。e. 括弧を使って演算をまとめられること。たとえば、2 + (10 / 2) = と入力すると、6やそのほかの値ではなく、7が得られること。f. 数を十進数または八進数の形式にできること。g. 最後に入力した値、または入力したすべての値を消去できること。
5. Research Scaled Agile Framework (SAFe) and summarize how it can be useful for projects of a very large size and how organizations can use it to effectively manage multiple teams in an Agile development environment.
5. Scaled Agile Framework(SAFe)を調べ、非常に大きな規模のプロジェクトでどう役立つか、また、組織がアジャイル開発の環境で複数のチームを効果的に管理するためにどう使えるかをまとめよ。
Exercises 6–10練習問題 6–10
6. Often Agile development is used to create products that are based on emerging technologies. Why do you think this is?
6. 新しい技術に基づく製品を作る際、アジャイル開発がよく使われる。それはなぜだと思うか。
7. Why does part of the Agile development model involve minimizing documentation?
7. アジャイル開発モデルの一部で、文書を最小限に抑えようとするのはなぜか。
8. Identify specific business or personal situations related to ethics in software engineering, and explain how you would react to them.
8. ソフトウェア工学の倫理に関わる、仕事上または個人的な具体的な状況を挙げ、それにどう対応するかを説明せよ。
9. Research and compare pros and cons of open-source software and paid software licenses.
英語のヒント
9. オープンソースソフトウェアと有料のソフトウェアライセンスの長所・短所を調べ、比較せよ。
10. Research various Integrated Development Environments and summarize why some IDEs are aimed at different types of development efforts and programming languages.
10. さまざまな統合開発環境を調べ、特定のIDEが異なる種類の開発作業やプログラミング言語を対象にしている理由をまとめよ。

Problem Set B問題集B

Exercises 1–5練習問題 1–5
1. Choose a software program you use frequently. This could be a game, social media platform, productivity tool, or anything else. Analyze its functionalities and identify six areas for improvement. For each improvement, describe the benefit it would bring to the user experience.
1. よく使うソフトウェアを一つ選べ。ゲーム、ソーシャルメディア、仕事の効率を高めるツール、そのほか何でもよい。機能を分析し、改善できる点を六つ見いだせ。それぞれの改善が利用体験にもたらす利点を説明せよ。
2. Imagine you’re designing a software system for a library. List at least six functional requirements this system should meet.
2. 図書館向けのソフトウェアシステムを設計していると想像しよう。このシステムが満たすべき機能要求を、少なくとも六つ挙げよ。
3. Besides functionality, what are at least three nonfunctional requirements that are important for a library information system? Explain why each requirement is important.
3. 機能以外に、図書館の情報システムにとって重要な非機能要求を、少なくとも三つ挙げよ。それぞれが重要である理由を説明せよ。
4. What are the questions that should be answered by each team member at the daily Scrum meeting?
4. 毎日のScrumミーティングで、各チームメンバーが答えるべき問いは何か。
5. Safety critical applications are key components of a system that would severely impact the safety and well-being of the users and bystanders. Provide an example of a safety critical application that, if the software of that component would fail, could cause catastrophic consequences to the life and safety of users and bystanders.
英語のヒント
5. 安全性が極めて重要なアプリケーションは、ユーザーや周囲の人々の安全・健康に深刻な影響を及ぼしうるシステムの、重要な構成要素である。その部品のソフトウェアが故障すると、ユーザーや周囲の人々の生命と安全に壊滅的な結果をもたらしかねない、そのようなアプリケーションの例を挙げよ。
Exercises 6–9練習問題 6–9
6. Research the Boeing 737 Max 8 Maneuvering Characteristics Augmentation System (MCAS) software and sensor problem. What went wrong and how could Boeing and the Federal Aviation Administration (FAA) have done a better job of developing and testing a safety critical application?
6. Boeing 737 Max 8の操縦特性向上システム(MCAS)の、ソフトウェアとセンサーの問題を調べよ。何がうまくいかなかったのか。またBoeingと米国連邦航空局(FAA)は、安全性が極めて重要なアプリケーションの開発とテストを、どうすればより適切に行えただろうか。
7. As a software developer, you wrote a routine that converts degrees Fahrenheit to degrees Celsius and you want to test it. How would you suggest performing unit testing of this functionality?
7. ソフトウェア開発者として、華氏を摂氏に変換するルーチンを書き、テストしたいと考えている。この機能の単体テストを、どのように行うことを提案するか。
8. Explain how you could create an open world machine learning bot that could trade on a financial exchange.
8. 金融取引所で取引できる、オープンワールドの機械学習ボットを、どのように作成できるかを説明せよ。
9. Identify new examples of software as a differentiator for products and services.
英語のヒント
9. 製品やサービスの差別化要因としてソフトウェアを使う、新しい例を挙げよ。