软件开发简介
欢迎!在本章中,我们将探讨软件究竟是如何被创造出来的。这不仅仅是坐在电脑前敲打代码那么简单。就像盖房子需要蓝图、地基和定期维修一样,专业软件开发遵循一个特定的过程,称为程序开发生命周期 (Program Development Life Cycle, PDLC)。别担心步骤看起来很多——我们会将其拆解成简单、合乎逻辑的部分,让你轻松理解!
12.1 程序开发生命周期 (PDLC)
程序开发生命周期 (PDLC) 是开发人员用来创建高质量软件的一套循序渐进的过程。你可以把它想象成软件工程师的“待办事项清单”。
五大主要阶段
每个软件项目通常都会经历以下五个阶段:
1. 分析 (Analysis):精确找出用户的需求。开发人员会与客户沟通,并建立一份“需求规格说明书”。
2. 设计 (Design):建立“蓝图”。这包括规划用户界面、数据结构以及算法(使用流程图或伪代码)。
3. 编码 (Coding):使用 Python、VB 或 Java 等语言编写程序的实际过程。
4. 测试 (Testing):检查程序中的错误(Bug),并确保其符合分析阶段所设定的需求。
5. 维护 (Maintenance):在软件发布给用户后,确保其持续顺畅运行。
开发模型
不同的项目需要不同的处理方式。以下是你需要了解的三种模型:
1. 瀑布模型 (Waterfall Model)
这是一种“线性”模型。你必须完全完成一个阶段,才能进入下一个阶段。就像真正的瀑布一样,你很难逆流而上!例子:要求极其严格的大型政府项目。
2. 迭代模型 (Iterative Model)
开发人员先建立软件的一个小版本,进行测试,然后“迭代”(重复)循环以增加更多功能。例子:开发手机应用程序时,先发布“1.0 版本”,然后再于“2.0 版本”中加入更多功能。
3. 快速应用程序开发 (RAD)
这种方法专注于快速构建原型 (Prototypes)(早期且简单的版本)以获取用户的反馈。它涉及大量的沟通与交流。例子:初创公司试图测试一个全新的想法,看看大众是否喜欢。
快速回顾:PDLC 模型
• 瀑布式:严格、按部就班、难以变更。
• 迭代式:以“循环”或版本形式构建软件。
• RAD:快速的原型制作与持续的用户反馈。
12.2 程序设计
在编码之前,我们必须先进行规划。两种主要的工具可以帮助我们在写下第一行代码之前,“预见”程序的运行方式。
结构图 (Structure Charts)
结构图用于分解 (Decomposition)——将一个棘手的大问题拆解成较小、易于管理的小任务(模块)。它展示了这些模块如何互动,以及模块之间传递了什么数据(参数)。
类比:如果“做晚餐”是个大任务,那么“切菜”、“煮水”和“摆餐具”就是子任务。
状态转换图 (State-Transition Diagrams)
这些图表显示系统如何根据特定事件从一个“状态”转换到另一个“状态”。
例子:自动售货机。它的“状态”可以是等待投币、选择商品和出货。当你投入硬币时,状态便会从“等待”转换为“选择”。
12.3 程序测试与维护
即使是最优秀的程序员也会犯错!测试就是我们寻找并修复这些错误(缺陷)的方法。
错误类型
1. 语法错误 (Syntax Errors):就像代码中的“文法错误”。程序甚至无法启动。例子:将 "print" 写成 "prnt"。
2. 逻辑错误 (Logic Errors):程序可以运行,但结果是错的。例子:你想将两个数字相加,却不小心用了减号:\( Result = A - B \) 而非 \( Result = A + B \)。
3. 执行阶段错误 (Run-time Errors):程序启动了,但在运行过程中崩溃。例子:尝试将数字除以零 \( (x / 0) \)。
测试方法
我们如何找到这些错误?我们使用不同的测试策略:
• 人工执行 / 逐步演练 (Dry Run / Walkthrough):人脑使用“追踪表 (Trace Table)”用纸笔模拟代码的执行。不使用电脑!
• 黑盒测试 (Black-box Testing):只测试输入和输出。你不看内部的代码,只检查结果是否正确。
• 白盒测试 (White-box Testing):测试代码的内部逻辑。你检查所有可能的执行路径(循环、if 判断式),确保它们都能正常运行。
• Alpha 测试 (Alpha Testing):由开发人员在“内部”进行的测试。
• Beta 测试 (Beta Testing):将软件发布给一小群真实用户,以在现实环境中找出 Bug。
• 桩测试 (Stub Testing):使用“虚拟”代码作为尚未编写完成之模块的占位符。
选择测试数据
要制定一个好的测试计划,你需要三种数据:
1. 正常数据 (Normal Data):应该能顺利运行的数据。例子:如果程序接受 1-100 的年龄,"25" 就是正常数据。
2. 异常数据 (Abnormal Data):显然错误的数据。例子:在年龄栏输入 "香蕉" 或 "-5"。程序应该拒绝这些输入。
3. 极端(边界)数据 (Extreme / Boundary Data):位于允许范围边缘的数据。例子:针对 1-100 的年龄,"1" 和 "100" 就是极端数据。很多 Bug 就隐藏在这里!
关键重点:维护
软件完成后,便进入维护阶段。维护分为三种:
1. 更正性 (Corrective):修复测试期间未发现的 Bug。
2. 适应性 (Adaptive):更改软件以使其能在新的操作系统上运行(例如:为 Windows 11 更新应用程序)。
3. 完善性 (Perfective):改进软件(例如:提升速度或加入“深色模式”)。
摘要检查清单
✓ PDLC 阶段:分析、设计、编码、测试、维护。
✓ 模型:瀑布式(线性)、迭代式(循环)、RAD(原型)。
✓ 设计工具:结构图(分解任务)与状态转换图。
✓ 错误:语法(文法)、逻辑(数学/逻辑失败)、执行阶段(崩溃)。
✓ 测试:白盒(内部)、黑盒(外部)、Alpha(开发人员)、Beta(用户)。
✓ 数据:正常、异常、极端。
小撇步:在考试中,如果题目问你如何修复逻辑错误,请记住,使用追踪表 (Trace Table) 进行人工执行 (Dry Run) 是找出数学逻辑出错位置的最佳方法!