《Python语言程序设计》——2.13 软件开发流程

简介:

本节书摘来自华章计算机《Python语言程序设计》一书中的第2章,第2.13节,作者:[美]梁勇(Y. Daniel Liang) 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.13 软件开发流程

关键点:程序开发周期是一个包括明确需求、分析、设计、实现、测试、部署和维护的多步骤过程。
开发软件是一个工程过程。软件产品,无论是大还是小,它们都有相同的周期:明确需求、系统分析、系统设计、实现、测试、部署和维护,如图2-2所示。
明确需求是寻求理解软件要解决的问题和建立关于软件系统需要完成任务的详细文档的一个正式流程。这个阶段需要用户和开发者之间的进行紧密的交互。本书中大多数例子都很简单,并且它们的需求陈述很明确。然而,在现实世界中,问题并不总是定义明确。开发者需要保持和用户(会使用软件的个人或团体)紧密的联系,仔细研究问题以期明确到底需要软件做什么。


<a href=https://yqfile.alicdn.com/a085ddfcddda0a9fb7881fea8b2729a770f67e5b.png" >

图2-2 在程序开发周期的任何一步,为了修改错误或解决导致程序
不能完成既定功能的问题,退回前一步是有必要的
系统分析是指分析数据流和识别系统的输入和输出。当你分析时,它帮你确认哪个输入是最早的,然后帮你搞清楚要产生输出需要哪些输入数据。
系统设计是设计从输入获取输出的过程。这一阶段涉及很多层的抽象,将问题分解为可管理的几个组件,然后为每个组件的实现设计策略。你可以将每个组件看作一个完成系统中特定功能的子系统。系统分析和设计的本质是输入、处理和输出(IPO)。
实现过程涉及将系统设计翻译成程序。每个组件被编写成各自的程序,然后将它们集成在一起工作。这一阶段需要使用程序设计语言,例如:Python。实现过程设计到编写代码、自测和调试(就是在代码中找被称为小虫子(bug)的错误)。
测试过程确保代码满足需求规范并且清除程序bug。一部分不参与产品设计和实现的工程师组成的独立团队通常进行这类测试。
部署过程是使程序可以使用。根据软件类型的不同,有些安装到每个用户的机器上而有些则安装在可以通过互联网访问的服务器上。
维护过程涉及产品的更新和升级。一款软件产品必须持续在一个不断变化的环境中完善和升级。这需要定期更新产品来解决最新发现的bug并合并这些改变。
为了更直观地看软件开发过程,我们现在创建一个计算贷款支付额的程序。这笔贷款可以是汽车贷款、学生贷款或房屋抵押贷款。作为一个对程序设计教学的介绍,我们专注于需求分析、分析、设计、实现和测试。
第1阶段:需求分析
这个程序必须满足以下需求:
必须由用户键入利率、贷款数以及贷款的年限。
必须计算出每月还贷数和总还款数。
第2阶段:系统分析
输出是月供(monthlyPayment)和总还款数(totalPayment),可以通过下面的公式来获取:


<a href=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。你可以利用指数运算符将它写作:


38b939493cd79095d8304cfc19f415632fdb1a02

程序清单2-8给出了完整的程序。
程序清单2-8 ComputeLoan.py


0597513b8765a930d98561a9ba6563e92e901f4d


7233bd41063d9020e03f9f9fec9e89f5eeaaf0da

第2行读取年利率,该值在第4行被转换为月利率。
计算月供的公式在第14到15行被翻译成Python代码。
变量monthlyPayment(第14行)是2076.0252175。注意:


<a href=https://yqfile.alicdn.com/c30b28ac3788a89f99e2d4e61e5b48e2f299b923.png" >

所以,第19行显示的是保留了小数点后两位的税款2076.02。
第5阶段:测试过程
在实现程序之后,测试过程是利用几组样本输入数据来验证输出是否正确来完成的。如你在后面几章会看到的一样,某些问题会牵扯到许多情况。对于这种类型的问题,你需要设计能涵盖所有情况的测试数据。
提示:这个例子的系统设计阶段确认了几个步骤。一次增加一步来开发和测试这些步骤是一种很好的方法。这个过程可以更容易查明问题也更易于调试。
相关文章
|
4月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
本文介绍了Python中的循环语句,包括while和for循环的使用,range()函数的运用,以及continue、break和pass关键字的说明,同时提出了关于while循环是否能与成员运算符结合使用的思考。
59 1
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
|
3天前
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
41 20
|
4月前
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
54 1
|
1天前
|
存储 缓存 算法
探索企业文件管理软件:Python中的哈希表算法应用
企业文件管理软件依赖哈希表实现高效的数据管理和安全保障。哈希表通过键值映射,提供平均O(1)时间复杂度的快速访问,适用于海量文件处理。在Python中,字典类型基于哈希表实现,可用于管理文件元数据、缓存机制、版本控制及快速搜索等功能,极大提升工作效率和数据安全性。
19 0
|
2月前
|
人工智能 IDE 测试技术
使用通义灵码提升Python开发效率:从熟悉代码到实现需求的全流程体验
作为一名Python开发者,我最近开始使用通义灵码作为开发辅助工具。它显著提高了我的工作效率,特别是在理解和修改复杂代码逻辑方面。通过AI编码助手,我能够在短时间内快速上手新项目,实现新需求,并进行代码优化,整体效率提升了60%以上。通义灵码不仅加快了代码生成速度,还增强了代码的健壮性和稳定性。
|
2月前
|
SQL 关系型数据库 数据库
优化Web开发流程:Python ORM的优势与实现细节
【10月更文挑战第4天】在Web开发中,数据库操作至关重要,但直接编写SQL语句既繁琐又易错。对象关系映射(ORM)技术应运而生,让开发者以面向对象的方式操作数据库,显著提升了开发效率和代码可维护性。本文探讨Python ORM的优势及其实现细节,并通过Django ORM的示例展示其应用。ORM提供高级抽象层,简化数据库操作,提高代码可读性,并支持多种数据库后端,防止SQL注入。Django内置强大的ORM系统,通过定义模型、生成数据库表、插入和查询数据等步骤,展示了如何利用ORM简化复杂的数据库操作。
70 6
|
2月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
4月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之if条件控制
Python中的流程控制语句if条件控制,涵盖了比较运算符、成员运算符、身份运算符、逻辑运算符的使用,if语句的嵌套,以及如何使用input和print函数进行交互式编程练习。
36 1
Python接口自动化测试框架(基础篇)-- 流程控制之if条件控制
|
2月前
|
存储 IDE 开发工具
编写Python参考手册速查软件(一)
编写Python参考手册速查软件(一)
53 0
|
2月前
|
Python
编写Python参考手册速查软件(二)
编写Python参考手册速查软件(二)
37 0