本节书摘来自华章计算机《Python语言程序设计》一书中的第2章,第2.13节,作者:[美]梁勇(Y. Daniel Liang) 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.13 软件开发流程
关键点:程序开发周期是一个包括明确需求、分析、设计、实现、测试、部署和维护的多步骤过程。
开发软件是一个工程过程。软件产品,无论是大还是小,它们都有相同的周期:明确需求、系统分析、系统设计、实现、测试、部署和维护,如图2-2所示。
明确需求是寻求理解软件要解决的问题和建立关于软件系统需要完成任务的详细文档的一个正式流程。这个阶段需要用户和开发者之间的进行紧密的交互。本书中大多数例子都很简单,并且它们的需求陈述很明确。然而,在现实世界中,问题并不总是定义明确。开发者需要保持和用户(会使用软件的个人或团体)紧密的联系,仔细研究问题以期明确到底需要软件做什么。
https://yqfile.alicdn.com/a085ddfcddda0a9fb7881fea8b2729a770f67e5b.png" >
图2-2 在程序开发周期的任何一步,为了修改错误或解决导致程序
不能完成既定功能的问题,退回前一步是有必要的
系统分析是指分析数据流和识别系统的输入和输出。当你分析时,它帮你确认哪个输入是最早的,然后帮你搞清楚要产生输出需要哪些输入数据。
系统设计是设计从输入获取输出的过程。这一阶段涉及很多层的抽象,将问题分解为可管理的几个组件,然后为每个组件的实现设计策略。你可以将每个组件看作一个完成系统中特定功能的子系统。系统分析和设计的本质是输入、处理和输出(IPO)。
实现过程涉及将系统设计翻译成程序。每个组件被编写成各自的程序,然后将它们集成在一起工作。这一阶段需要使用程序设计语言,例如:Python。实现过程设计到编写代码、自测和调试(就是在代码中找被称为小虫子(bug)的错误)。
测试过程确保代码满足需求规范并且清除程序bug。一部分不参与产品设计和实现的工程师组成的独立团队通常进行这类测试。
部署过程是使程序可以使用。根据软件类型的不同,有些安装到每个用户的机器上而有些则安装在可以通过互联网访问的服务器上。
维护过程涉及产品的更新和升级。一款软件产品必须持续在一个不断变化的环境中完善和升级。这需要定期更新产品来解决最新发现的bug并合并这些改变。
为了更直观地看软件开发过程,我们现在创建一个计算贷款支付额的程序。这笔贷款可以是汽车贷款、学生贷款或房屋抵押贷款。作为一个对程序设计教学的介绍,我们专注于需求分析、分析、设计、实现和测试。
第1阶段:需求分析
这个程序必须满足以下需求:
必须由用户键入利率、贷款数以及贷款的年限。
必须计算出每月还贷数和总还款数。
第2阶段:系统分析
输出是月供(monthlyPayment)和总还款数(totalPayment),可以通过下面的公式来获取:
https://yqfile.alicdn.com/92c6589e4f916b90f6567f2eeb5c5c1df7fbf092.png
" >
所以,程序需要输入的是年利率、贷款年限和总贷款数目。
注意:需求分析要求用户必须输入利率、贷款数、贷款年限。但在分析过程中,有可能你会发现输入是不充分的或有些输入对于输出而言是不必要的。如果是这样,你可以返回上一步修改需求分析。
注意:在现实世界里,你会为各行各业的用户工作。你可能会为化学家、物理学家、工程师、经济学家和心理学家开发软件。你不一定会有(或需要)这些行业的完备知识。因此,你不需要知道这些数学公式是怎样推导出来的。所以,在给出利率、贷款数、贷款年限的情况下,你可以利用公式来计算月供。然而,你需要和用户进行交流并理解这个数学模型是如何为系统工作的。
第3阶段:系统设计
在系统设计过程中,你需要确定程序中以下几个步骤。
第1步:提示用户输入年利率、贷款数、贷款年限和贷款额。
第2步:输入的年利率是百分比格式的数字,例如:4.5%。程序需要将它除以100转换为小数。因为一年有12个月,所以将年利率除以12即月利率。所以,为了获取月利率,你需要将百分比格式的年利率除以1200。例如:如果年利率是4.5%,那月利率就是4.5/1200=0.003 75。
第3步:使用第2步中的公式计算月供。
第4步:通过将月供乘以12再乘以贷款年限求出还款总额。
第5步:显示月供和还款总额。
第4阶段:实现过程
实现过程又被称为编码(编写代码)。在公式中,你需要计算(1 + 月利率)年限×12。你可以利用指数运算符将它写作:
程序清单2-8给出了完整的程序。
程序清单2-8 ComputeLoan.py
第2行读取年利率,该值在第4行被转换为月利率。
计算月供的公式在第14到15行被翻译成Python代码。
变量monthlyPayment(第14行)是2076.0252175。注意:
https://yqfile.alicdn.com/c30b28ac3788a89f99e2d4e61e5b48e2f299b923.png" >
所以,第19行显示的是保留了小数点后两位的税款2076.02。
第5阶段:测试过程
在实现程序之后,测试过程是利用几组样本输入数据来验证输出是否正确来完成的。如你在后面几章会看到的一样,某些问题会牵扯到许多情况。对于这种类型的问题,你需要设计能涵盖所有情况的测试数据。
提示:这个例子的系统设计阶段确认了几个步骤。一次增加一步来开发和测试这些步骤是一种很好的方法。这个过程可以更容易查明问题也更易于调试。