大学院-筆記試験練習:数据库(データベース問題訓練) と 软件工程(ソフトウェア)(6)
- 1-前言
- 2-数据库データベース
-
- [データベース(SQL 記述問題)](#データベース(SQL 記述問題))
- [問題1(NULL × 並び替え)](#問題1(NULL × 並び替え))
- [問題2(GROUP BY × 条件の位置)](#問題2(GROUP BY × 条件の位置))
- 問題3(相関サブクエリ)
- [問題4(ANY / ALL 判定)](#問題4(ANY / ALL 判定))
-
- [※ 注意](#※ 注意)
- 3-数据库データベース-答案解析
-
- [第1题(NULL × ORDER BY)](#第1题(NULL × ORDER BY))
-
- [❌ 扣分点(致命)](#❌ 扣分点(致命))
- [✅ 正确写法](#✅ 正确写法)
- [第2题(GROUP BY)](#第2题(GROUP BY))
-
- [✅ 完全正确](#✅ 完全正确)
- 第3题(相関サブクエリ)
-
- [✅ 完全正确(而且是标准写法)](#✅ 完全正确(而且是标准写法))
- [第4题(ALL 判定)](#第4题(ALL 判定))
-
- [❌ 扣分点(语法错误)](#❌ 扣分点(语法错误))
- [✅ 正确写法](#✅ 正确写法)
- [📊 本番评分模拟](#📊 本番评分模拟)
- [🎯 你现在最需要修的 3 个点](#🎯 你现在最需要修的 3 个点)
- 4-软件工程(ソフトウェア)
- 5-软件工程(ソフトウェア)答案解析
-
- 問題1(逆向工学)
- 問題2(増分開発)
- [問題3(検証 Verification / 妥当性確認 Validation)](#問題3(検証 Verification / 妥当性確認 Validation))
-
- あなたの答案:評価
- [✅ 修正版(本番安全)](#✅ 修正版(本番安全))
- 一言ポイント(暗記フレーズ)
- 問題4(運用段階の課題と対策)
- 次にやると一気に伸びる練習(おすすめ)
- 6-总结
1-前言
为了考上大学院,做了日语版本练习,边学边看边记录

2-数据库データベース
データベース(SQL 記述問題)
学生(Student)
| 属性名 | 型 |
|---|---|
| 学生番号 | INTEGER |
| 学生名 | VARCHAR |
| 性別 | CHAR |
| GPA | REAL |
| 生年月日 | DATE |
| 学科番号 | INTEGER |
学科(Department)
| 属性名 | 型 |
|---|---|
| 学科番号 | INTEGER |
| 学科名 | VARCHAR |
※ GPA には NULL が含まれる可能性がある。
問題1(NULL × 並び替え)
学科番号が 2 に所属する学生のうち,
GPA が未登録(NULL)でない学生 を対象として,
GPA の 高い順 に
学生番号,学生名,GPA を出力せよ。
sql
-- SQL を記述せよ
問題2(GROUP BY × 条件の位置)
女性学生のみ を対象として,
学科ごと に
学科番号と GPA の平均値 を出力せよ。
sql
-- SQL を記述せよ
問題3(相関サブクエリ)
各学生について,
同一学科に所属する学生の GPA の最小値よりも高い GPA
を持つ学生の
学生番号,学生名,学科番号,GPA を出力せよ。
sql
-- SQL を記述せよ
問題4(ANY / ALL 判定)
生年月日が 1990 年 1 月 1 日以降 の学生が持つ
GPA のいずれよりも高い GPA を持つ学生の
全ての属性を出力せよ。
sql
-- SQL を記述せよ
※ 注意
- SQL は 標準 SQL に基づいて記述すること。
- 必要に応じてサブクエリを用いてよい。
3-数据库データベース-答案解析
第1题(NULL × ORDER BY)
你的答案:
sql
SELECT 学生番号, 学生名, GPA
FROM 学生
WHERE 学科番号 = 2
AND GPA IS NOT NULL
ORDER BY DESC;
❌ 扣分点(致命)
-
ORDER BY 缺少排序列
ORDER BY DESC❌- 必须指定列名:
ORDER BY GPA DESC
📌视角:
排序条件不成立 → 结果未定义
✅ 正确写法
sql
SELECT 学生番号, 学生名, GPA
FROM 学生
WHERE 学科番号 = 2
AND GPA IS NOT NULL
ORDER BY GPA DESC;
🔴 判定:0 分
第2题(GROUP BY)
你的答案:
sql
SELECT 学科番号, AVG(GPA)
FROM 学生
WHERE 性別 = '女'
GROUP BY 学科番号;
✅ 完全正确
- WHERE / GROUP BY 位置正确
- 非聚合列全部出现在 GROUP BY
- 语义完全符合题意
🟢 判定:满分
第3题(相関サブクエリ)
你的答案:
sql
SELECT 学生番号, 学生名, 学科番号, GPA
FROM 学生 r
WHERE GPA >
(
SELECT MIN(GPA)
FROM 学生
WHERE 学科番号 = r.学科番号
);
✅ 完全正确(而且是标准写法)
- 正确使用表别名
- 正确的相関条件
- 子查询返回单值
🟢 判定:满分
第4题(ALL 判定)
你的答案:
sql
SELECT *
FROM 学生
WHERE GPA >
(
ALL SELECT GPA
FROM 学生
WHERE 生年月日 >= '1990-1-1'
);
❌ 扣分点(语法错误)
-
ALL 的位置错误
- 正确:
GPA > ALL (SELECT ...) - 你写成了:
(ALL SELECT ...)❌
- 正确:
-
全角符号风险
'1990ー1ー 1'(全角长音符+空格)- 本番可能被直接判语法错误
✅ 正确写法
sql
SELECT *
FROM 学生
WHERE GPA > ALL
(
SELECT GPA
FROM 学生
WHERE 生年月日 >= '1990-1-1'
);
🔴 判定:0 分
📊 本番评分模拟
| 题号 | 得分 |
|---|---|
| 第1题 | 0 |
| 第2题 | ◎ |
| 第3题 | ◎ |
| 第4题 | 0 |
👉 整体:不合格,但已经非常接近过线
🎯 你现在最需要修的 3 个点
-
ORDER BY 永远写成:
ORDER BY 列名 ASC|DESC -
ALL / ANY 的固定语法
列 > ALL (SELECT ...) -
日期字符串只用半角
'YYYY-MM-DD'
4-软件工程(ソフトウェア)
ソフトウェア工学(記述式)
問題1(逆向工学)
ある企業では、長年運用されてきた業務システムについて、設計書や仕様書が十分に残っていない状態で機能追加を行う必要が生じた。
このときに行われる「逆向工学」の位置づけと、その実施が有効となる理由を説明せよ。
問題2(増分開発)
ソフトウェアを複数の増分に分け、段階的に機能を追加しながら完成に近づける開発方法が採用されることがある。
この開発方法を採用することで期待できる効果と、適用にあたって注意すべき点について説明せよ。
問題3(検証と妥当性確認)
ソフトウェア開発において、「検証(Verification)」と「妥当性確認(Validation)」は異なる活動である。
両者の違いを、開発工程における役割の観点から説明せよ。
問題4(運用段階)
運用中のソフトウェアでは、機能追加や修正に伴い、障害の発生や品質低下が問題となることがある。
運用段階におけるこれらの問題が発生する要因を述べ、ソフトウェア工学の観点から有効な対策を説明せよ。
5-软件工程(ソフトウェア)答案解析
問題1(逆向工学)
あなたの答案:評価
✅「内部構造を推量する」という方向は合ってます。
❌ただし「模倣する」「同じじゃない」あたりが危険。逆向工学の目的は同じものを作ること ではなく、理解して設計情報を回復すること。
逆向工学(理解)と、リプレース/再実装(作り直す)を混同させる
✅ 修正版(本番安全)
逆向工学とは、既存の業務システムの実装や動作結果を手がかりにして、内部構造や仕様を解析し、設計情報(構造・機能・インタフェースなど)を再構築する作業である。
設計書が不足している場合でも、現行システムの理解を深めることで、機能追加や保守を安全に行うことが可能になる。
一言ポイント
- **「模倣」ではなく「設計情報の再構築」**と書くと一気に本番っぽくなります。
問題2(増分開発)
あなたの答案:評価
❌「注意点」も内容が抽象的で、しかも「効果」がほぼ無いので本番では点が伸びません。
増分開発は必ず 効果(メリット)+注意点(デメリット/前提) をセットで聞かれます。
罠:
メリットを書かせずに「注意点」だけで終わらせる(=目的と手段が薄くなる)
✅ 修正版(本番安全)
増分開発では、機能を小さな単位に分けて段階的に実装し、各増分ごとに動作する成果物を早期に提示できる。
そのため、利用者からのフィードバックを早く得られ、要求の変更や不確実性に対応しやすい。
一方で、各増分間の整合性を保つための設計方針や、インタフェース管理・統合テストの計画が不十分だと、品質低下や手戻りが増える点に注意が必要である。
一言ポイント
- 「早期フィードバック」+「統合の難しさ(整合性・テスト計画)」が鉄板。
問題3(検証 Verification / 妥当性確認 Validation)
あなたの答案:評価
❌ここは概念が大きくズレています(本番だと致命傷になりやすい)。
- 検証:仕様どおり作れているか(作り方の正しさ)
- 妥当性確認:ユーザの目的に合っているか(作るものの正しさ)
あなたの「危害性を発見」は、どちらかというとテスト/安全性評価の話になってしまいます。
罠:
「要求を満たす=妥当性」「正しく作る=検証」を逆に書かせる
✅ 修正版(本番安全)
検証(Verification)は、仕様書・設計書に対して実装が正しく作られているかを確認する活動である(作り方が正しいか)。
妥当性確認(Validation)は、完成したソフトウェアが利用者の目的や要求に合致しているかを確認する活動である(作るものが正しいか)。
一言ポイント(暗記フレーズ)
- Verification:仕様どおり?
- Validation:目的に合う?
問題4(運用段階の課題と対策)
あなたの答案:評価
⚠️「ユーザが誤って使う」は運用問題の一部としてあり得ますが、それだけ だと減点されます。
運用段階の代表的要因はむしろ:
- 変更の蓄積で設計が崩れる
- 仕様・ドキュメント不足
- 回帰(リグレッション)不具合
- 設定・環境差分、監視不足
などです。
罠:
運用問題を"ユーザのせい"にしてしまう(因果の倒置)
✅ 修正版(本番安全)
運用段階では、機能追加や修正が繰り返されることで設計の整合性が崩れ、障害や品質低下が発生しやすくなる。さらに、仕様やドキュメントが不十分だと変更影響の把握が難しく、手戻りや不具合(回帰)が増える。
対策として、変更管理(レビュー、影響分析、バージョン管理)を徹底し、回帰テストを含むテスト計画を運用することが重要である。加えて、監視・ログ整備や利用者向けの運用手順の整備も有効である。
一言ポイント
- 「原因(変更の蓄積・情報不足)→結果(障害・品質低下)→対策(変更管理・回帰テスト・監視)」の順で書くと満点が狙えます。
次にやると一気に伸びる練習(おすすめ)
各問を この3行テンプレで書く練習をすると、採点に刺さります:
- 〜とは...である。(定義)
- なぜなら...からである。(因果)
- その結果...となる/対策は...である。(結論・効果)
6-总结
用日语的方式来直接训练,我认为是提示能力的好办法吧,希望从今天开始,每天坚持到考试那天,一直训练。