首页 > 其他分享 >软件工程:波斯特尔定律,输入输出的平衡之道

软件工程:波斯特尔定律,输入输出的平衡之道

时间:2023-04-19 09:00:59浏览次数:32  
标签:输入输出 定律 波斯 宽容性 软件工程 软件 特尔 输入

hi,我是熵减,见字如面。

在软件开发中,你是否遇到过这种情况:

你正在开发一个文件上传的功能,用户可以上传各种类型的文件。按照用户的需求场景,程序应该能够宽容地接受各种类型和格式的图像文件。如果用户上传了一个非常大的图像文件,你无法正常的处理,程序也不应该直接的奔溃,而是要给用户一个友好且有效的错误提示。

在这个案例中,对功能的有效处理,就是一个典型的波斯特尔定律的具体实现场景。在软件开发中,波斯特尔定律强调了对用户输入数据的容错性和灵活性,以确保软件的稳定性和可靠性。

那具体什么是波斯特尔定律?

什么是波斯特尔定律

波斯特尔定律(Postel's Law),又称 稳健性原则(Robustness Principle),是由因特网的先驱之一、Jon Postel所提出的一项规则,该规则的原文是:

“接受的要自由,发送的要保守。”("Be liberal in what you accept, and conservative in what you send.")。

最初是针对TCP/IP协议栈的设计和实现而提出的,目的是为了增强网络的鲁棒性和兼容性。但是,它也可以广泛地应用到其他领域,比如用户界面设计、数据交换格式、编程语言等等。

引申到具体的软件工程中,当我们设计或实现一个软件系统时,我们应该遵循规范和标准,尽量减少错误和不一致,保证输出的质量和可靠性。但是,当我们与其他系统或用户交互时,我们应该尽量容忍他们的输入,即使它们不完全符合规范或预期,只要能够理解它们的意图就可以了。

波斯特尔定律对软件工程的提示

波斯特尔定律在软件工程中对我们的4点提示:

  • 提高软件的容错性:波斯特尔定律强调了在软件设计和开发中对于输入数据的容错性和灵活性,即使用户或其他系统产生了不规范或无效的输入数据,软件也应该能够宽容地处理这些问题,并给出友好的错误提示。这可以提高软件的容错性,减少因数据不规范而导致的程序崩溃或其他问题。

  • 提高软件的稳定性和可靠性:波斯特尔定律要求在软件设计和开发中保持严谨和谨慎,确保软件能够正确地处理各种输入数据,并保持良好的稳定性和可靠性。这可以确保软件能够稳定地运行,提高用户的满意度和信任度。

  • 促进软件的互操作性:波斯特尔定律强调了在软件设计和开发中对于数据传输和交换的宽容性,使得不同的软件系统能够更好地互相通信和交互。这可以促进软件的互操作性,降低开发和维护成本,并提高软件的可扩展性和可重用性。

  • 改善用户体验:波斯特尔定律要求软件在处理输入数据时保持灵活性和宽容性,这可以降低用户面对错误和问题时的不适感和不满意度,并提供友好的用户体验。这可以提高软件的使用率和用户忠诚度,从而帮助软件更好地实现商业目标。

波斯特尔定律对于软件工程具有重要的意义,可以提高软件的容错性、稳定性、互操作性和用户体验,从而实现软件的商业价值和社会价值。

波斯特尔定律常见误区

虽然波斯特尔定律被广泛地应用于软件设计和开发中,但是它也存在着一些常见的误区。

以下是一些常见的波斯特尔定律应用误区:

  • 过度的宽容性:过度的宽容性可能导致软件无法正确地处理输入数据。如果软件对输入数据过于宽容,可能会忽略一些关键数据或者使数据处理过程变得不确定和不可靠。

  • 过于依赖于定律:虽然波斯特尔定律要求软件在处理输入数据时保持宽容性和灵活性,但是这并不意味着可以忽略输入数据的质量。如果输入数据过于不规范或无效,软件仍然可能遇到严重的问题。

  • 忽视安全性问题:波斯特尔定律要求软件在处理输入数据时保持宽容性和灵活性,但是在处理敏感数据时必须注意安全性问题。软件应该具有足够的安全性措施来保护用户数据和系统安全。

  • 忽视性能问题:波斯特尔定律要求软件在处理输入数据时保持宽容性和灵活性,但是如果处理大量数据时,软件的性能可能受到影响。因此,软件设计和开发应该综合考虑宽容性和性能问题。

因此,在应用波斯特尔定律时,必须注意避免上述常见的误区,综合考虑输入数据的质量、安全性、性能和代码质量等方面,以实现软件的高质量和稳定性。

写在最后

总之,波斯特尔定律并不是一个唯一正确的法则,也不是一个放任自流的借口。

软件设计时,需要我们在保守和自由之间找到一个平衡点,既要遵守规范和标准,又要适应变化和需求。也需要我们在设计和实现时考虑到各种可能的情况,并做好相应的处理。

波斯特尔定律是一个非常有价值的软件开发原则,其可以帮助我们提高软件系统的质量和效率。

最后的最后,在生活之中亦是如此:就是让自己尽可能的活好,也尽量不要给他人去添麻烦。


阅读,思考,练习,分享,日日不断之功。

嗯,写完了。

新的一天,加油哦 (ง •̀_•́)ง

标签:输入输出,定律,波斯,宽容性,软件工程,软件,特尔,输入
From: https://www.cnblogs.com/peida/p/17332014.html

相关文章

  • 4/18打卡 复数的输入输出和加减乘除重载
    classComplex{doublereal;doubleimag;public:friendistream&operator>>(istream&is,Complex&c);friendostream&operator<<(ostream&os,constComplex&a);Complex(){real=0;......
  • 软件工程日报——每日站立会议
    昨天:我和我的队友进行了讨论,明确了之后的分工和思路,决定以时间,偏好和规则为基础的排班逻辑,然后我又将员工偏好设置的增删改查操作和预测数据的添加、查看操作进行了编写今天:我根据昨天的讨论内容开始了排班操作的编写,我预计在排班界面添加一个操作按钮,用来展现排班的过程遇到......
  • 2023.4.18——软件工程日报
    所花时间(包括上课):8h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习。我了解到的知识点:1.了解了一些数据库的知识;2.了解了一些python的知识;3.了解了一些英语知识;4.了解了一些数学建模的知识;5.了解了一些Javaweb的知识;......
  • 2023.4.18——软件工程站立会议
    团队照片: 站立会议内容:昨天做了什么?学习javaweb知识,为好看的模板做优化;(学习了一部分的javaweb知识,花了3h,还剩余1h)今天要做什么?继续学习javaweb知识,为模板做优化;遇到什么问题?时间分配问题;团队成员的工作: ......
  • 软件工程日报—站立会议
    昨天:我对排班的思路进行了思考,考虑到要以门店规则和员工偏好为基础,确定了一个排班思路今天我和我的队友进行了讨论,明确了之后的分工和思路,决定以时间,偏好和规则为基础的排班逻辑遇到的问题:对于周一到周五和周末的开店时间不同,偏好数据如何保存还有不同职位的排班安排仍有疑问......
  • mock软件工程化设计
    1、需求(1)ws_client用来模拟ws协议的客户端,向总体网的数据通道发送数据。通过cli插件,满足用户交互。需要考虑各种数据,周期/非周期,周期间隔,表号send1203100(ms)cyclicsendAcycliclist-c/-ac:查询所有的cyclic和acyclic表号同时发送多张表,如何发,指令如何设计考虑......
  • [软件工程]小议迭代计划如何做
    对话原文地平风线11:07:05项目计划,是否在一开始就写清楚各次迭代的内容青润11:07:44不是的。地平风线11:08:35那是每一次迭代时,再往里面补充吗?青润11:08:36很多时候,迭代在刚开始都是概括的,只有马上要做的那个迭代才会做到很细致的程度。......
  • [软件工程]SD2会中的简短体会
    本来早就想记录一下,看着太热了,我就不凑热闹了。一来二去,就拖延到了今天。SD2这次大会,感觉很不错,我看了几个专题:1、D语言程序设计的确是高手,可惜时间太短了,很多东西没说出来,或者说有意思的东西没说出来。2、Ivar的let‘sDo 有人会说,你写错了,Ivar写的是:let’spractise!哈哈哈哈,我说......
  • [软件工程]软件质量应该包括哪些?
    昨天参加了2007年中国软件质量年会,会上做了一个专题:《敏捷开发模型实践之交换编程》,效果还不错,至少开讲10分钟后,现场已经没人睡觉了,一直到结尾,不仅没人睡觉,也没人主动离开。 昨天的会让我想到了一个问题,软件质量应该包括哪些?大家常提到软件质量的部分有:1、软件产品质量2、软件开发......
  • [全程建模]《软件工程之全程建模实现》一书第二版签约公告
    自从发布了《[全程建模]《软件工程之全程建模实现》一书第二版公开寻找出版商》一文,小子得到了多家出版社的联系(其中包括电子工业出版社的另一个出版部门),经过近十个月的对比分析,最后选择了机械工业出版社。在今年英雄会上签了合同,预计时间是2010年3月底交付初稿,正式出版应该是在201......