← 基本情報 道場

出題範囲 › 第 13 章

第 13 章 システム開発技術

要件からテストまで。この章では次の 15 個の知識点を、解説・インタラクティブ教材・練習問題で学びます。

第 13 章 系统开发技术:从需求到测试

共通フレームとシステム開発の流れ

企業がシステムを作るときは、自社(ユーザ企業)が、システム開発会社(ベンダ企業)に開発を依頼することが多い。両者が同じ言葉で話せるように、ソフトウェア開発の工程や作業内容・作業範囲を定義したガイドラインが共通フレーム。流れは 企画 → 要件定義 → 開発 → 運用 → 保守 の 5 つのプロセス。企画では、ニーズや課題を確かめてシステム化構想を立て、具体的なシステム化計画にまとめる。

共通框架与系统开发流程:企业建系统时,多由自己(用户企业)委托系统开发公司(供应商企业)开发。为了让双方用同样的语言沟通,定义软件开发工序、作业内容和作业范围的指南就是共通框架。流程分为企划 → 需求定义 → 开发 → 运营 → 维护 5 个过程。企划阶段确认需求与课题,制定系统化构想,再整理成具体的系统化计划。

RFI と RFP

ユーザ企業が開発を任せるベンダ企業を選ぶときに使う文書が 2 つある。RFI(Request For Information:情報提供依頼書)は、ベンダが持つ製品・サービスや技術などの一般的な情報の提供を求める文書で、候補を絞る一次審査にあたる。RFP(Request For Proposal:提案依頼書)は、システムの要件などを示して、具体的なシステム提案を求める文書で、二次審査にあたる。提案を比べてベンダを選定し、契約を結ぶ。

RFI 与 RFP:用户企业选择开发供应商时用两种文件。RFI(信息请求书)请供应商提供其产品、服务、技术等一般信息,相当于初审;RFP(提案请求书)写明系统需求,请供应商提出具体的系统方案,相当于复审。比较提案、选定供应商后签订合同。

ソフトウェア開発工程と V 字モデル

要件定義 → 外部設計(基本設計)→ 内部設計(詳細設計)→ コーディング と進め、テストは逆の順に 単体 → 結合 → 総合 → 受入 と進める。設計の各工程と、それを確かめるテストが対応しているのが V字モデル。要件定義では、業務で必要な機能要件と、性能・セキュリティ・開発標準など機能以外の非機能要件を定める。

软件开发工序与 V 模型:设计依次是需求定义 → 外部设计 → 内部设计 → 编码,测试则反过来:单元 → 集成 → 系统 → 验收。设计工序与验证它的测试一一对应,这就是 V 模型。需求定义要确定功能需求与非功能需求(性能、安全、开发标准等)。

レビュー手法

各工程の終わりに成果物(設計書など)を確認するのがレビュー。誤りを早い段階で見つけるほど、直すコストが小さい。ウォークスルー:作成者が関係者に内容を説明しながら確認する。インスペクション:モデレータ(進行役)が主導し、参加者の役割を決めて正式に検査する。ラウンドロビン:参加者全員が持ち回りで責任者になって進める。

评审方法:每个工序结束时检查成果物叫评审,越早发现错误越省成本。走查:作者向相关人员讲解;审查:由主持人主导、分配角色正式检查;轮流评审:全员轮流担任负责人。

EA(エンタープライズアーキテクチャ)

EA は、個々のシステムをばらばらに最適化するのではなく、企業全体で最適化するために、業務とシステムを 4 つの体系で整理する手法。ビジネス(業務内容・業務プロセス)・データ(必要なデータと関連)・アプリケーション(データを処理するシステムの機能)・テクノロジ(技術的な構成要素)。

企业架构(EA):EA 为实现企业整体最优,把业务与系统按四个体系整理:业务、数据、应用、技术。

開発手法(ウォーターフォール・アジャイル・プロトタイピングなど)

ウォーターフォールモデル:工程を上流から順番に進める(計画しやすいが、途中の変更に弱い)。アジャイル:短いサイクルを繰り返して機能ごとにリリースする(変更に強い)。代表的な手法が XP(ペアプログラミング・リファクタリング・テスト駆動開発)と スクラム(スプリント・デイリースクラム)。プロトタイピングモデル:試作品で利用者に確認してもらう。リバースエンジニアリング:既存のソフトウェアを解析して仕様を明らかにする。ほかに DevOps、ドメイン駆動設計(業務知識を軸に設計)。

开发方法:瀑布:按顺序推进,易计划难变更。敏捷:短周期迭代、按功能发布,代表有 XP(结对编程、重构、测试驱动开发)与 Scrum(冲刺、每日站会)。原型:做试作品让用户确认。逆向工程:分析现有软件还原规格。另有 DevOps、领域驱动设计。

業務モデル(E-R 図と DFD)

要件定義の前に、利用者の業務を聞き取って図にする(業務モデル)。E-R図:管理の対象(エンティティ)と、エンティティどうしの関係(リレーションシップ:1 対 1・1 対多・多対多)を表す。データベース設計で使う。DFD:データの流れを、データフロー(→)・プロセス(○)・データストア(=)・源泉と吸収(□)の 4 つの記号で表す。

业务模型(E-R 图与 DFD):需求定义前把业务画成模型。E-R 图表示实体及其关系(1 对 1、1 对多、多对多),用于数据库设计。DFD 用数据流、处理、数据存储、源点与终点四种符号表示数据的流动。

UI 設計と GUI 部品

インタフェース設計には、画面の項目や操作方法を決める画面設計と、帳票(伝票など)の印刷レイアウトを決める帳票設計がある。画面は「関連項目を近くに」「ボタンの位置や形をそろえる」「入力は左上から右下へ流れるように」配置する。GUI 部品:ラジオボタン(排他的に 1 つ)・チェックボックス(それぞれ選ぶ/選ばない)・プルダウンメニュー(一覧から 1 つ)・コンボボックス(一覧から選ぶか入力)・トグルボタン(ON/OFF)。操作方式には CUI・GUI・NUI がある。

UI 设计与 GUI 控件:界面设计包括画面设计与报表设计。画面要相关项靠近、按钮统一、输入顺序从左上到右下。GUI 控件:单选、复选、下拉、组合框、开关。操作方式有 CUI、GUI、NUI。

UI / UX デザイン

UI は利用者と製品の接点(画面・ボタンなど)、UX は製品やサービスを通じて得られる体験。人とコンピュータのやり取りを設計するインタラクションデザインの 4 原則:① 説明がなくても操作できる ② 操作しやすい配置 ③ レスポンスの時間が適切 ④ デザインに一貫性。画面の大きさに合わせてレイアウトを最適化するレスポンシブデザインは UX を高める。

UI / UX 设计:UI 是用户与产品的接点,UX 是使用中获得的体验。交互设计四原则:无需说明即可操作、布局易操作、响应时间合适、设计一致。响应式设计按屏幕尺寸优化布局,提升 UX。

モジュール分割と結合度

システムを機能ごとのモジュールに分けると、並行して開発でき、再利用でき、問題があっても一部の修正で済む。良いモジュールは独立性が高い(他への影響が少ない)。モジュール同士のつながりの強さがモジュール結合度で、弱いほど良い:データ結合 < スタンプ結合 < 制御結合 < 外部結合 < 共通結合 < 内容結合。

模块划分与耦合度:把系统按功能分成模块:可并行开发、可复用、改动局部。好模块独立性高。模块间联系的强弱叫耦合度,越弱越好:数据 < 标记 < 控制 < 外部 < 公共 < 内容。

モジュール強度

1 つのモジュールの中の機能のまとまりの強さがモジュール強度で、強いほど良い:機能的強度 > 情報的強度 > 連絡的強度 > 手順的強度 > 時間的強度 > 論理的強度 > 暗号的強度。良いモジュールは「結合度は弱く、強度は強く」。

模块内聚度:模块内部功能的紧密程度叫内聚度,越强越好:功能 > 信息 > 通信 > 过程 > 时间 > 逻辑 > 偶然。好模块:低耦合、高内聚。

テストとバグ(信頼度成長曲線・バグ管理図)

テストの目的はバグを見つけて直すこと。信頼度成長曲線(バグ曲線)は、テスト項目数(時間)に対する累積バグ件数のグラフで、最初は少なく、途中で急に増え、最後は頭打ちになる S 字が理想。バグ管理図では、バグ検出数・未解決バグ数・未消化テスト項目数の推移を見て、テストの進み具合と品質を判断する。

测试与缺陷(可靠度增长曲线、缺陷管理图):可靠度增长曲线是累计缺陷数随测试推进的曲线,理想形状为 S 形并趋于饱和。缺陷管理图看检出数、未解决数、未执行测试项的变化来判断进度与质量。

単体テスト(ブラックボックスとホワイトボックス)

ブラックボックステストは内部を見ずに入力と出力だけで確かめる。テストケースは、境目の値を選ぶ限界値分析や、グループごとに代表値を選ぶ同値分割で作る。ホワイトボックステストは内部構造に注目し、網羅の基準は弱い順に 命令網羅(全命令を 1 回)・判定条件網羅(分岐の Yes/No を 1 回ずつ)・条件網羅(各条件の真偽を 1 回ずつ)・複数条件網羅(条件の真偽の組合せをすべて)。

单元测试(黑盒与白盒):黑盒测试只看输入输出,用边界值分析与等价类划分设计用例。白盒测试看内部结构,覆盖标准从弱到强:语句、判定、条件、多重条件。

結合テスト(スタブとドライバ)

単体テストが終わったモジュールを組み合わせて確かめるのが結合テスト。上位から順に結合するトップダウンテストでは、まだできていない下位モジュールの代わりにスタブ(呼び出される側の仮モジュール)を使う。下位から順に結合するボトムアップテストでは、まだできていない上位モジュールの代わりにドライバ(呼び出す側の仮モジュール)を使う。

集成测试(桩与驱动):集成测试把单元测试完成的模块组合起来验证。自顶向下时,用桩模块代替尚未完成的下位模块(被调用方);自底向上时,用驱动模块代替尚未完成的上位模块(调用方)。

総合テスト・受入テスト・リグレッションテスト

総合テスト(システムテスト)は、本番とほぼ同じ環境で、開発者がシステム全体を確かめる:機能テスト・性能テスト・負荷テスト・セキュリティテスト・ユーザビリティテストなど。受入テストは、利用者が業務で使える状態かを確かめて、受け入れるかどうかを判断する。リグレッションテスト(回帰テスト)は、修正や変更によって他の部分に不具合が出ていないかを確かめる。

系统测试、验收测试、回归测试:系统测试由开发方在接近生产的环境中验证整体(功能、性能、负载、安全、易用性);验收测试由用户判断能否接收;回归测试确认修改没有影响其他部分。

基本情報 道場で学習を始める →

← 第 12 章 プログラミングとオブジェクト指向 第 14 章 マネジメント →