コンピューターサイエンスの問題を解いてみた


コンピューターサイエンスについて学習したので、簡単な問題の解説等をアウトプットしておく。


256ビットのデータは何バイトか計算してください。

  • 8ビット=1バイト
  • 256ビット ÷ 8 = 32バイト

2進数「1011011」を16進数に変換してください。

  • 2進数の4桁は0~15まで計算でき、これは16進数の1桁に対応している。
  • そのため、2進数を右から4桁ずつブロックに区切り、各ブロックを16進数に変換することで全体を変換することが可能。
  • 今回は、2進数「1011101」→「101 1101」とし、16進数「5 B」→「5B」となる

IPv6アドレスは「2001:0dp8:1234:5678:90ab:cdef:0000:0000」のように表されるが、長さは何ビットとなるか。

  • IPv6は32桁の16進数で構成されている。
  • 16進数の1桁は「0~F」であり、これは2進数に直すと、「0000~1111」となるので、すなわち4ビットの長さを持っている。
  • よって、IPv6は、4ビット × 32桁 = 128ビット

RAMについて正しく説明している選択肢を以下から2つ選んでください。

①ROMに比べ、読み書きが高速である。
②不揮発性であり、電源を切っても内容は消えない。
③揮発性であり、電源を切ると内容が消える。
④補助記憶装置として利用される。
PCのスペックの「メモリ16GB」のように表現するが、これは主記憶装置であるRAM(Random Access Memory)を指している。
HDDやSSDなどの補助記憶装置と比べ、高速・揮発性(電源を切ると内容が消える)という特徴があり、例えばプログラム実行時の一時領域として使われます。
ROM(Read Only Memory)は不揮発性(電源を切っても内容が消えない)であり、BIOS等のPCの起動に必要なデータなどが格納されている。
回答は①、③


コンピューター5大装置として、正しい組み合わせに並べ替えてください。

- 入力装置:キーボード
出力装置:ディスプレイ
制御装置:CPU
記憶装置:ハードディスク

もうひとつは演算装置で、これもCPUに該当する。


プログラムが自分自身を呼び出すことをなんと呼ぶか。

回答は再帰です。
自分自身を呼び出す関数は「再帰的(リカーシブ)」な性質を持っている。
また、再帰的な関数のことを「再帰関数」と呼ぶ。
たとえば1から100までの和を計算するなど、目的の結果にたどり着くまで似たような計算を繰り返す場合などに使われます。


AさんはニュースのWebサイトを毎朝チェックしている。今日もアクセスしたところ、更新されているはずのページが昨日の状態のままであった。Webサイト管理者はたしかにページを更新していて、他のユーザーは最新のページを閲覧できている。このときAさんが取るべき行動はなんでしょうか。

回答はWebブラウザのキャッシュを削除する
一度アクセスしたWebサイトのデータを保存しておき再度アクセスする際に読み込むことで速やかに表示させる機能を「キャッシュ」と呼ぶ。
古いページが表示されてしまう場合、Web上の新しいページではなく、キャッシュの古いページを読み込んでいる可能性がある。
ブラウザの設定画面などからキャッシュを削除することで解消される。


PRIMARY KEY制約について、正しい選択肢を2つ選んでください。

①値が重複していない。
②複数のPRIMARY KEYを設定できる。
③英数字しか設定できない。
④空の値(NULL)を設定できない。

PRIMARY KEYは、レコードを一意に識別するために「テーブル内で値が重複してはいけない」かつ「必ず値が設定されている」必要がある。
似たものにUNIQUE制約というものがありますが、こちらは重複排除のみでNULLは許容される。
回答は①、④


データベースの正規化について正しい選択肢を1つ選んでください。

①データの重複を排除し、矛盾が発生しないようにする
②データベース構造を適切に設計することで、データへのアクセスや操作が高速になる
③レコードの数を減らすことで、運用管理のコストを下げる。
④テーブル内の一意となるべきIDが重複することを防ぐ

回答は
正規化は、データの重複をなくし不整合が怒らないようにすることを目的としている。
「テーブル内で一意となるべきIDが重複することを防ぐ。」は主キーに関する説明です。


データベースが格納されたディスクが破損したため、新しいディスクにバックアップファイルの内容を復元しました。データベースを回復するために次に行う作業として、正しい選択肢を1つえらんでください。

①ロールフォワード
②トランザクション
③コミット
④ロールバック

ロールフォワード:何らかの理由でコミット済みのトランザクションがディスクに反映されていないとき、それを反映させる操作
トランザクション:データベースに対するの処理のまとまり
コミット:データベースの更新に成功した場合、その成功を確定させること
ロールバック:更新の一部が失敗した場合、更新内容を取り消すこと
回答は


スケールアウトの説明として、正しい選択肢を1つ選んでください。

①高度で複雑な処理が必要になったため、サーバーのCPUと
メモリを増強した。
②より多くのアクセスに対応するため、サーバーの台数を増やした。
③サーバーの老朽化に伴い、新しい機器にシステムを移行した。
④過剰なリソースを削減するため、サーバーの台数を減らした。

回答は
システムの性能アップの方法として、以下の2つがあります。
スケールアップ:CPUやメモリなどを高性能にすること
スケールアウト:サーバーの台数を増やすこと
1台を強化して縦に伸ばすか、台数を増やして横に伸ばすかというイメージになりますね。
対して性能をダウンさせる場合はこのようになります。
スケールダウン:CPUやメモリなどの性能を落とすこと
スケールイン:サーバーの台数を減らすこと


スループットについて正しく説明している選択肢を1つ選んでください。

①コンピューターに一定の負荷を与え、性能を測定する方法
②単位時間あたりに処理できる仕事の量
③コンピューターに処理を要求してから、応答が開始されるまでの時間
④コンピューターが何らかの処理を行う際、付随して発生する間接的な処理およびそれに必要な時間

スループットは単位時間あたりに処理できる仕事の量を表し、機器単体だけでなくシステム全体やネットワークの速度など様々なものに対する評価基準です。
回答は
「コンピューターに処理を要求してから~」:レスポンスタイムの説明です。
「コンピューターが何らかの処理を行う際~」:オーバーヘッドの説明です。
「コンピューターに一定の負荷を与え~」:ベンチマークの説明です。


非機能要件として定義すべきものを、選択肢から1つ選んでください。

①システムで使われるデータの流れ
②定期メンテナンスでの停止時間
③ユーザー操作の可能な範囲
④機能間や他システムとのインターフェース
回答は
システムが実現する機能以外の部分を「非機能要件」と呼びます。
たとえば「Twitter」では「ツイート」や「いいね」、「タイムラインの表示」などが機能であるのに対し、「24時間アクセスできる」、「プライバシーが確保される」などが非機能要件にあたります。


次の用語の中から、「CLI」に関連深いものをすべて選んでください。

①ターミナル
②アイコン
③bash
④デスクトップ
⑤シェル
⑥ウィンドウ

回答は①、③、⑤
CLI(Command Line Interface):キーボード入力による文字列でコンピューターに指示を与える方式です。「黒い画面に文字がたくさん並んでいるプログラマーっぽい画面」を想像して頂ければよいでしょう。
GUI(Graphical User Interface):グラフィカルで直感的に操作ができるもので「デスクトップにアイコンが並んでいる見慣れた画面」になります。
「シェル」:人間がコンピューターに指示を与えるためのインターフェースです。いろいろな種類があり、MacやLinuxでは「bash」「zsh」などが、Windowsでは「コマンドプロンプト」「PowerShell」がよく使われています。
GUI上でCLIの操作がしたい場合に使われるのが「ターミナル」です。Macの「ターミナル」アプリや、VSCodeの画面下部に表示されているものがターミナルになります。


差分バックアップ方式の特徴はどれか。正しい選択肢を1つ選んでください。

①増分バックアップ方式に比べ、1回のバックアップ時間が長い。
②増分バックアップ方式に比べ、1回のバックアップファイルのサイズが小さい。
③フルバックアップ方式に比べ、復旧時間は短い。
④復旧時はフルバックアップファイルに加え、フルバックアップ以降のすべての差分バックアップファイルが必要になる。

回答は
差分バックアップ方式は、最初にフルバックアップを行い、その後は「フルバックアップとの差分」を記録していく方式です。
対して、増分バックアップ方式は「前回との差分」を記録していく方式です。そのため、差分バックアップ方式は増分バックアップ方式に比べ、毎回のファイルサイズが大きく取得時間も長いが、復旧は「フルバックアップ+最新の差分バックアップ」のみで可能です。


A社はアプリケーションの自社開発を行う企業です。新しく開発したアプリをクラウドサービスを使って外部向けに公開する予定で、インフラ関連の管理コストはできるだけ小さくしたいと考えています。この場合に最も適しているサービスとして、正しい選択肢を1つ選んでください。

①IaaS
②PaaS
③SaaS

回答は
IaaS, PaaS, SaaSはいずれもクラウドサービスの分類ですが、それぞれ提供している範囲が異なります。
提供範囲が広く自由度が高い分、ユーザー側で構築する部分が大きい

・IaaS(Infrastructure as a Service):サーバーやネットワーク環境を提供。AWS EC2など。
・PaaS(Platform as a Service):OSやデータベースなどのミドルウェアを提供。Herokuなど。
・SaaS(Software as a Service):サービスやソフトウェアを提供。Gmail, Slack,Office365など。

提供範囲が狭く自由度は小さいが、ユーザーは簡単にサービスを使える

最も管理コストが小さいのはSaaSですが、アプリそのものを提供するため独自のアプリを公開することはできません。今回はアプリを稼働させる環境を用意できればよいので、PaaSを使えばよいということになります。


以下の選択肢から、文字コードであるものを2つ選んでくださ

い。
①RJ-45
②Shift-JIS
③UTF-8
④DOCTYPE

回答は②、③
UTF-8:世界で最も使われている文字コードで、世界のWebサイトの9割以上を占めています。
Shift-JIS:UTF-8同様に日本語を表現できる文字コードで、UTF-8よりもバイト数が少なくなりますが、一部使えない文字があったり環境によって文字化けする可能性があります。
DOCTYPE:HTMLファイルなどの冒頭で文書の形式を宣言するためのものです。
RJ-45:LANケーブルのコネクタの規格です。


バッチ処理について正しく説明している選択肢を1つ選んでください。

①複数台のサーバーを用意し、サービスの機能によって処理を振り分ける方式。
②処理すべきデータが発生するたび、即座にその都度処理を行う。
③処理すべきデータを蓄積しておき、業務時間外などの決まった時間に定期的にまとめて処理する。
④マシンパワーの求められる高負荷な処理を、複数台のサーバーで分散して行う。

回答は
決まった時間にまとめて処理を行う形態を「バッチ処理」と呼びます。社内の業務データ集計やバックアップなど、即時性は求められないが大量のデータを扱う場合に適しています。


IPアドレスが「192.168.35.10」、サブネットマスクが「255.255.254.0」のPCがある。このPCのネットワークアドレスとして正しい選択肢を1つ選んでください。

①192.168.32.0
②192.168.35.8
③192.168.34.0
④192.168.35.0

IPアドレスとサブネットマスクをそれぞれ2進数で表現すると以下のようになります。
「192.168.35.10」→「11000000 10101000 00100011 00001010」
「255.255.254.0」→「11111111 11111111 11111110 00000000」
サブネットマスクで1となっている上位23ビットがネットワークアドレスですので、
「11000000 10101000 00100010 00000000」→「192.168.34.0」が正しい選択肢となります。


192.168.1.0/25のネットワークにおいて、ホストとして使用できるアドレスは最大いくつか。正しい選択肢を1つ選んでください。

①255
②126
③128
④254

/25ということは、IPアドレス全体の32ビットのうち25ビットがネットワークアドレスとして使用されるので、ホストアドレスには残り7ビットが使用されます。7ビットで表現可能な値は 2の7乗 = 128通り ですが、そのうち"0000000"と"1111111"はネットワークアドレスとブロードキャストアドレスとして予約されているため、ホストアドレスとして割り当てることはできません。
よって、 128 - 2 = 126通りが正解となります。


ネットワーク上のPCやサーバー等にIPアドレスを自動的に割り当てる仕組みをなんと呼ぶか。英略語で答えてください。

回答はDHCP
DHCP(Dynamic Host Configuration Protocol)は、ネットワークに接続している各ノードへIPアドレス等の情報を割り当てる仕組みです。


UDPを使用しているプロトコルはどれか。正しい選択肢を1つ選んでください。

①Telnet
②HTTP
③NTP
④FTP
回答は
TCPとUDPはどちらもトランスポート層のプロトコルです。
TCPは通信前に3ウェイハンドシェイクを行うなど信頼性を重視するのに対し、UDPではやり取りを簡素にすることで高速な通信を実現しています。
そのためUDPは、複雑ではないがスピードが求められる通信に使用されます。NTP(時刻同期)のほかには、DHCP(NW設定割振)やDNS(名前解決)などに使われています。


電子メールに関するプロトコルについて、正しい語句を穴埋めしてください。

インターネットでメールを送信するときは、SMTPというプロトコルを使用します。
受信には2つのプロトコルが用いられますが、POP3はメールのデータをクライアント端末にダウンロードするのに対して、IMAPではメールボックス用のサーバに置いたまま閲覧することができます。

他にも、MIMEは、画像や動画、音声データをメールに添付するための技術です。
また、SNMPは、ルーターやスイッチなどのネットワーク機器を管理するためのプロトコルです。


不正行為の名前とそれぞれの説明を、正しい組み合わせに並び替えてください。

ソーシャルエンジニアリング
→画面を盗み見たり、身元を偽った電話を掛けるなどのITを介さないアナログな攻撃。
DoS攻撃
→パスワードの組み合わせを総当りで試すことで暗号を解読しようとする手法。(攻撃対象のホストに大量のデータを送信し負荷をかけることで機能を停止させる攻撃。)
フィッシング
→メール等で正規のサイトに似せた不正サイトに誘導し、個人情報を盗み取る手法。
ブルートフォースアタック
→攻撃対象のホストに大量のデータを送信し負荷をかけることで機能を停止させる攻撃。(パスワードの組み合わせを総当りで試すことで暗号を解読しようとする手法。)

他にも様々な手口が存在しますが、それぞれに対して有効な対策は異なります。
システム構成を考える際には、こういった脅威を意識し対策を組み込んでおく必要があります。


マルウェアの名前とそれぞれの説明を、正しい組み合わせに並び替えてください。

ワーム
→単独で活動し、自己増殖によって感染拡大していく。
トロイの木馬
→有益なソフトウェアに見せかけ、裏で不正な動作を行う。
ランサムウェア
→ファイルやデータを暗号化して使用不能にし、復元のために金銭を要求する。
キーロガー
→キーボードの操作を記録し、パスワードなどを盗聴する。

悪意のあるソフトウェアやプログラムを総称して、マルウェアと呼びます。コンピューターウイルスもマルウェアの一種です。


デジタル署名によって得られる効果として、正しい選択肢を2つ選んでください。

①メッセージが改ざんされていないことを保証する。
②メッセージの発信元が正しいことを保証する。
③メッセージが盗聴されないことを保証する。
④メッセージが送信先に到達することを保証する。

回答は①、②
デジタル署名は、公開鍵暗号方式を用いてデジタル文書の正当性を保証する仕組みです。これにより受信者は、「発信元が正当か」「内容が改ざんされているか」を確認することができます。


SSL/TLSに期待できる効果として、正しい選択肢を1つ選んでください。

①サーバーとの通信内容をクライアントに保持できる。
②サーバーとの通信速度が向上する。
③サーバーとの通信が暗号化される。
④サーバーの処理性能が向上する。

回答は
SSL(Secure Sockets Layer)/ TLS(Transport LayerSecurity)は、通信を暗号化し内容の盗聴や改ざんを防ぐ技術です。


A社では業務のために複数のサービスを利用していますが、それぞれログインの認証が必要なためわずらわしいという声が従業員からあがっています。

この問題を解決するために導入すべき仕組みとして、正しい選択肢を1つ選んでください。
①ストアドプロシージャ
②多要素認証
③シングルサインオン
④Active Directory

回答は
シングルサインオン(SSO)とは、1度認証を行うだけで複数のサービスやアプリケーションにログインできるようにする仕組みです。
・「多要素認証」は「パスワード等の知識情報」や「指紋・静脈等の生体情報」など異なる種類の認証方式を組み合わせることです。
・「Active Directory」はWindows Serverの機能で、ユーザー管理に使われるものです。
・「ストアドプロシージャ」はデータベースに対する複数の命令を1つにまとめて保存しておくものです。


ハッシュに関する説明として、正しい選択肢を1つ選んでください。

①代表的なハッシュ関数として、SHA-256があげられる。
②データの復号には、対応する秘密鍵が必要である。
③公開鍵暗号方式は、ハッシュ化を利用した技術である。
④元データのサイズが大きいほど、ハッシュ値のサイズも大きくなる。

回答は
・ハッシュ値は固定長であり、常に同じサイズになります。
・ハッシュ化は不可逆変換なため、元のデータに戻すことはできません。
・公開鍵暗号方式はハッシュ化とは関係ありません。


公開鍵暗号方式を使ってAさんがBさんにメールを送る場合、暗号化に使用する鍵として正しい選択肢を1つ選んでください。

①Aさんの公開鍵
②Aさんの秘密鍵
③Bさんの秘密鍵
④Bさんの公開鍵

回答は
公開鍵暗号方式では「公開鍵」と「秘密鍵」の2種類の鍵を使用します。
公開鍵は誰でも利用できるように公開されており、データを暗号化する際に使用します。
秘密鍵は特定のユーザーのみが所有しており、公開鍵で暗号化されたデータを復号化する際に使用します。
今回メールを受信するのはBさんなので、AさんがBさんの公開している公開鍵で暗号化し、BさんがBさんの秘密鍵で復号するという流れになります。


動的型付け言語の特徴について、正しく説明している選択肢を2つ選んでください。

①変数の宣言時に、データ型を決めておく必要がない。
②Java, C, Goなどが該当する。
③コンパイル時にエラーが出るので、実行前に問題箇所が分かる。
④Python, Ruby, JavaScriptなどが該当する。

回答は①、④
動的型付け言語は型(文字列や整数など)の宣言が不要なので、コードを書く負担が小さくなります。
対して静的型付け言語は記述量は増えてしまいますが、型の違いからエラーを発見できたり、メモリが最適化されパフォーマンスが良いなどの利点があります。動的型付けはスピーディで柔軟、静的型付けは細かくしっかり、のようにイメージするとよいでしょう。


モジュール結合度の最も高い状態として、正しい選択肢を1つ選んでください。

①すべてのモジュールから参照できるグローバル領域にデータを格納する
②モジュール同士で、お互いの内部を直接参照している
③単一のモジュールのみで処理を行う
④モジュール間でのデータの受け渡しを、引数のみで行う
モジュール結合度とは、モジュール同士の関連性の高さを示す指標にです。

回答は

結合度が高いほどモジュールに変更があったときの影響範囲が大きく、保守コストも高くなってしまいます。


・モジュール同士で、お互いの内部を直接参照している
・すべてのモジュールから参照できるグローバル領域にデータを格納する
・モジュール間でのデータの受け渡しを、引数のみで行う


単一のモジュールしかない場合、そもそも結合は関係ありません。


オブジェクト指向におけるクラスとインスタンスの関係性について、正しい選択肢を2つ選んでください。

①インスタンスは、対応するクラスの仕様や詳細を説明したものである。
②クラスの定義にもとづいてインスタンスが作成される。
③ひとつのインスタンスは、複数のクラスに所属できる。
④ひとつのクラスから、複数のインスタンスを生成できる。

回答は②、④

オブジェクト指向では、「クラス」という定義情報をもとに「インスタンス」という実データを生成します。
よく使われるたとえとして「たい焼きの例」がありますが、「クラス→金型」を使って「インスタンス→たい焼き」を作るイメージですね。
同じ金型から同じ形のたい焼きをいくつでも作ることができ、中身や焼き加減はたい焼きごとに調節できます。
たとえば「Userクラス」から生成された「Suzukiインスタンス」や「Tanakaインスタンス」は、どちらも「name」や「age」などの変数を持っていますが、それぞれ値は異なります。


UXデザインの説明として、正しい選択肢を1つ選んでください。

①ユーザーの年齢や性別などをターゲティングし、顧客像にマッチしたサービスやプロダクトを開発する
②サービスやプロダクトを利用するユーザーの体験や印象を、より良いものにする。
③アプリやWebサイトなどの画面や操作感を、きれいで使いやすいものにする。
④PC向けのWebサイトを、スマートフォンから表示したときでもデザインが崩れることなくきれいに表示できるようにする。

回答は

ユーザー体験(User eXperience)をより良いものにするための設計や考え方を「UXデザイン」と呼び、今日のWebサイトやアプリの開発において重要視されています。
・「アプリやWebサイトなどの画面や操作感を〜」:UIデザインの説明です。
・「PC向けのWebサイトを〜」:レスポンシブデザインの説明です。
・「ユーザーの年齢や性別などをターゲティングし〜」:マーケティングに関する説明です。


アジャイル開発の特徴として、正しい選択肢を1つ選んでください。

①業務の一部もしくは全体を外部に委託し、工期やコストの削減を図る。
②設計や実装、テストを小さなサイクルで繰り返し、開発を進めていく。
③システムの企画立案から運用開始までの工程を、一括して請け負い提供する。
④開発の各工程を順番に進めていき、基本的に後戻りはしない。

回答は

・「開発の各工程を順番に進めていき~」:ウォーターフォールモデルの説明です。
・「業務の一部もしくは全体を外部に委託し~」:アウトソーシングの説明です。
・「システムの企画立案から運用開始までの工程を~」:システムインテグレーションの説明です。


下記3種類のテストを、テストする範囲の大きい順番に並び替えてください。

システムテスト→結合テスト→単体テスト

単体テスト:モジュールひとつひとつの単位で、適切に作られているか確認する。
結合テスト:モジュール同士を結合し、モジュール間のインターフェースが正常に動作するか確認する。
システムテスト:プログラム全体を結合し、最終成果物と同等の状態にして要件を満たしているか確認する。


システムの内部構造に着目し、条件分岐などの実行経路を意識して行われるテストをなんと呼ぶか。正しい選択肢を1つ選んでください。

①結合テスト
②ペネトレーションテスト
③ブラックボックステスト
④ホワイトボックステスト

回答は

プログラムの実行経路を追いながら、できるだけ多くのパターンを網羅するようにテストする手法を「ホワイトボックステスト」と呼びます。
逆に、内部構造を意識せずに入力と出力のみに着目する手法を「ブラックボックステスト」と呼びます。


ウォーターフォールモデルにおける各工程を、進める順番に並べ替えてください。

要件定義→基本設計→詳細設計→実装→単体テスト→結合テスト→運用保守
ウォーターフォールモデルではひとつひとつの工程を順番通りに確実に進めていく開発手法です。
大規模な案件を慎重かつ丁寧に進めていく場合に用いられることが多いです。


A社はB社にシステム開発を委託し、請負契約を結んだ。以下の選択肢の中から、偽装請負となるものを1つ選んでください。

A社:委託者
B社:受託者

①B社の従業員が、A社のオフィスで、B社の責任者の指示に従って資料を作成した。
②B社の従業員が、A社のオフィスで、A社の責任者の指示に従って資料を作成した。
③A社の従業員が、B社のオフィスで、B社の責任者の指示に従ってシステムの検証を行った。
④A社の責任者が、B社のオフィスで、B社の責任者と作業内容の打ち合わせを行った。

回答は

偽装請負とは、業務委託の形式を取りながら、実態は労働者派遣に該当するものをいいます。
請負契約では、受託側の作業者の指揮命令を行うのは受託側の責任者であり、委託者が直接指示をすることはできません。


履行割合型の準委任契約について、正しく説明している選択肢を1つ選んでください。

①仕事を完成させる義務が発生する。
②法律に関する業務を委託する。
③発注者の指揮命令下で作業を行う。
④労働期間に対して報酬が支払われる。

回答は

履行割合型の準委任契約は「契約期間内に、依頼された業務にしっかりと取り組む」ことで報酬が支払われる形態であり、請負契約と異なり「仕事の完成」に対して責任を負
うことはありません。例えばエンジニアの場合は「技術力の提供」が条件であり、仕事が完成しなかったとしても報酬が支払われます。
注:2020年の民法改正により、新たに「成果完成型の準委任契約」が可能になりました。この契約方式の場合、作業者側は「仕事の完成義務」は負いませんが、履行割合型とは異なり、成果物を納品しないと報酬を受け取れないので注意が必要です。
発注者が作業者に直接指示する場合は「労働者派遣」に相当します。
法律に関する業務委託は「委任契約」となり、弁護士や税理士と契約する場合などが当てはまります。


リバースエンジニアリングの説明として、正しい選択肢を1つ選んでください。

①既存のソフトウェアを解析して、構造や仕様などを調査すること。
②要件や仕様書を元に、新しくソフトウェアを開発すること。
③企業の戦略や業務プロセスを見直し、根本的に再構築すること。
④既存のソフトウェアの外から見える動きは変えずに、内部構造を変更すること。

回答は

一般的な開発プロセスは「仕様からコードを書く」(フォワードエンジニアリング)のに対し、リバースエンジニアリングは「コードから仕様を分析する」という逆の順序に
なります。
・「既存のソフトウェアの外から~」:リファクタリングの説明です。
・「企業の戦略や業務プロセスを見直し~」:リエンジニアリングの説明です。