843 / 学习讲义

信息技术 / 10

软件设计与开发:从需求到可靠服务

一次解决一个小问题。从具体例子开始,理解条件,再亲手算一遍。

10 / 软件设计与开发:从需求到可靠服务 · 小节 1

需求、模块与接口

读完这一节,你会

把模糊愿望写成可验证行为,划分职责。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:让计算机按顺序做事 关系、键与关系操作 · 符号回看

从一个问题开始

“做一个好用的预约系统”怎样变成开发人员能实现、测试人员能检查的要求?

请求沿职责边界前进

请求沿职责边界前进。步骤文字在图下。界面API业务规则数据库
1 / 3

用户在界面提交意图,客户端不直接决定权限。

原创教学示意 · 手动播放,可随时暂停;折叠或离开小节时停止。

把这件事讲清楚

功能需求描述行为,如查询余位、提交预约;非功能需求描述质量或约束,如响应时间、可访问性、隐私。需求应包含角色、触发、输入、成功结果和异常。模块化分解职责,高内聚表示相关任务集中,低耦合表示依赖尽量清楚且有限。接口是模块之间的约定,含参数、返回、错误、权限与副作用,不只是页面按钮。

结构化方法按功能与数据流逐层分解;面向对象用对象的状态与行为组织,类描述一类对象,封装约束内部状态,继承表达合适的类型关系,多态让同一接口对应不同实现。两者可组合,不能把“用了类”当成设计质量证明。

为什么成立 · 关键推导

把“预约成功”写成验收条件:已登录且有空位时提交;并发请求不能超过容量;重复提交返回同一结果或被安全拒绝;无空位返回可理解提示;失败不扣名额。再把界面、预约规则、存储分离,接口明确谁验证何种条件。

入门例题 / 1

图书借阅分读者、馆藏、借阅服务。借阅服务调用“检查读者资格”和“原子创建借阅”,UI不自行修改库存。这样规则更集中,也便于测试。

典型应用与变式 / 2

对象Seat具有编号、状态;操作reserve(user)检查可预约条件并转换状态。不要公开允许任意调用者把reservedCount改成负数;封装保护不变量。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

“系统必须很快”是可直接验收的需求吗?

需要一点提示

需要场景与指标。

查看过程、答案与错因

不够。应说明负载、数据规模、时间阈值、分位数或测试方法,例如约定测试负载下95%查询2秒内完成。

计算与执行过程

给“取消预约”写一个正常与一个异常验收条件。

需要一点提示

说明身份、结果和名额。

查看过程、答案与错因

正常:本人取消未使用预约后状态取消、名额恢复一次;异常:重复取消不再重复增加名额。可有其他合理条件,关键可验证。

条件与错误辨析

每个模块直接访问所有表会有什么后果?

需要一点提示

规则与结构变化会波及多少地方?

查看过程、答案与错因

依赖扩散,修改难以隔离,权限与一致性也难维护;可通过清晰服务接口集中业务规则,但不为形式层层转发。

带走这一句

需求写成可观察行为,接口写成明确承诺。

10 / 软件设计与开发:从需求到可靠服务 · 小节 2

开发流程、测试与维护

读完这一节,你会

选合适的反馈节奏,设计能揭露错误的测试。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:需求、模块与接口 · 符号回看

从一个问题开始

一个方案到最后才让用户看,发现方向错了怎么办?

把这件事讲清楚

瀑布强调阶段交付,适用于需求和约束较稳定的情况,但变更反馈可能较晚;迭代增量用较小可验证版本持续学习;原型用低成本表示验证不确定性,不能把演示流畅等同于可上线。测试包括单元、集成、系统、验收;黑盒从规格选输入,白盒从内部控制路径考虑覆盖。测试发现缺陷,不证明所有输入都正确。

维护有纠错、适应环境、完善能力和预防问题等动机;版本控制、自动回归、日志和可回滚发布降低变更风险。质量还包括可用性、安全、性能与可维护性。

为什么成立 · 关键推导

对允许年龄18至60的输入:等价类有小于18、18—60、大于60、非数字;边界至少17、18、19、59、60、61,另测空输入。需求若允许小数或缺省必须明确。修复后先复现旧失败,再验证修复并跑相关回归。

入门例题 / 1

预约容量0、1、满额分别测试;并发两个请求争最后1位,断言最多一人成功。只测试单用户成功路径不能发现超售。

典型应用与变式 / 2

if(A且B)有两个原子条件。用TT覆盖真分支,FT覆盖假分支,但B为假的情况没测到;语句覆盖和分支覆盖并不等同于更细的条件组合覆盖。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

单元测试全过,就不需要用户验收吗?

需要一点提示

规则实现正确是否等于需求正确?

查看过程、答案与错因

不等于。可能实现了错误需求,也可能交互不适用;验收与可用性验证检查不同层面。

计算与执行过程

折扣仅限金额≥100,列三个边界测试。

需要一点提示

考虑金额最小计量单位0.01。

查看过程、答案与错因

99.99、100.00、100.01;分别无折扣、有折扣、有折扣,并核算折后金额与舍入规则。

条件与错误辨析

原型测试时设计者不断提示用户,会影响什么?

需要一点提示

是否测到了独立完成能力?

查看过程、答案与错因

会掩盖理解障碍。应给任务情境,观察并记录,再追问理由,不把指导后的成功算自然成功。

带走这一句

先测试最容易错的边界和异常,再检查功能如何连接。

10 / 软件设计与开发:从需求到可靠服务 · 小节 3

互联网应用如何连接

读完这一节,你会

画出一次请求的数据路径,并说明基本安全边界。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:开发流程、测试与维护 · 符号回看

从一个问题开始

手机上按“提交”,数据是直接写进远处数据库的吗?

请求沿职责边界前进

请求沿职责边界前进。步骤文字在图下。界面API业务规则数据库
1 / 3

用户在界面提交意图,客户端不直接决定权限。

原创教学示意 · 手动播放,可随时暂停;折叠或离开小节时停止。

把这件事讲清楚

典型应用由客户端界面、服务端业务与数据层构成。客户端通过HTTP等协议请求API,服务端校验身份和输入、执行业务、访问数据库并返回结果。API是程序接口,不必等于可见网页。网络可能超时、重复、断开,因此设计需处理重试与幂等;幂等指重复同一操作不会造成额外效果。

缓存保存可复用结果,降低延迟但可能陈旧;身份认证确认是谁,授权确认允许做什么。客户端隐藏按钮不是服务端权限检查。隐私设计先问数据是否必要,再安排告知、最小访问、保留期限与删除机制。本节解释应用架构,不扩成408网络课程。

为什么成立 · 关键推导

画“用户→客户端→API→业务规则→数据库→响应”六步,并标出失败分支。预约请求附稳定请求标识,服务端把去重记录和预约写入作为一致操作,网络重发不会再扣一次名额。

入门例题 / 1

客户端提交预约,服务端先校验用户与余位,再在事务中写预约、扣余位,最后返回成功。若响应丢失,客户端显示“结果确认中”并查询状态,而不是立即断言失败并再次扣库存。

典型应用与变式 / 2

展览说明可缓存一天,但当前剩余票数需更短有效期或实时确认。选择缓存粒度时把“过时有什么后果”作为依据,不是所有数据统一永久缓存。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

已登录就能看任何人的借阅记录吗?

需要一点提示

认证与授权不同。

查看过程、答案与错因

不能。还须检查该用户是否有查看这条记录的权限,前端传来的用户编号不能被无条件信任。

计算与执行过程

画出预约失败因网络超时后的处理步骤。

需要一点提示

服务器可能已经成功。

查看过程、答案与错因

先保留请求标识→显示待确认→查询服务器结果→成功则展示预约,未提交才安全重试。直接多次创建可能重复。

条件与错误辨析

为了个性化收集身份证、位置、通讯录有什么设计问题?

需要一点提示

每项是否对核心功能必要?

查看过程、答案与错因

可能过度收集,增加泄露与使用门槛。先列用途和必要性,能用偏好选择或匿名数据时不收身份信息;参考思路不是具体法律意见。

带走这一句

把失败路径也画出来,系统设计才完整。

章末 / 把知识接起来

综合训练

原创综合训练

为预约系统写两条验收条件、一项并发测试与一次网络超时恢复流程。

需要一点提示

同时覆盖成功、重复与结果不确定。

查看过程、答案与错因

条件:有余位且有权限才创建;同一请求重复不重复占位。并发测试两请求争最后1位,最多1成功。超时先保留请求ID并查询最终状态,无法确认时显示待确认,不立即重复创建。教学参考可有其他实现,但一致性与可恢复性需满足。

一点一点,积累下来。

今日学习

00:00:00

累计学习

00:00:00

学习天数

0 天

点击“开始计时”后累计时间。同一科目内切换章节或刷新会接续;切换科目不会自动启动另一科。仅当前获得焦点的可见页面累计,离开、关闭或休眠期间不补计。两科的时间与成就分别保存。

记录保存在当前浏览器,关闭后仍保留;清除网站数据会删除记录。每天累计满 1 分钟记为一个学习日,不要求连续打卡。

学习成就

已达成 0 / 10

成就记录投入与阅读进展,不代表掌握程度。阅读类成就随已读标记更新,撤销标记后会重新计算。