软件开发的201个原则 (第31~60)学习笔记

文章强调了在软件开发中遵循技术趋势、使用文档标准和术语表的重要性。需求分析应当清晰、无歧义,通过原型降低风险,记录需求引入的原因,并对需求进行优先级排序。此外,介绍了有限状态机作为建模工具的作用,以及明确软件的可靠性和环境超出预期时的系统行为。
摘要由CSDN通过智能技术生成

目录

第31~60个原则

不忽视技术

使用文档标准

文档要有术语表

软件文档要有索引

对相同的概念用相同的名字

研究再转化,不可行

作为系统开发者,请承担责任

低质量的需求分析,导致低质量的成本估算

先确定问题,再写需求

立即修复需求规格说明中的错误

原型可以降低选择用户界面的风险

 记录需求为什么被引入

确定子集

评审需求

避免在需求分析时进行系统设计 

使用正确的方法

使用多角度的需求视图

介绍一下有限状态机

合理地组织需求

给需求排优先级

书写要简洁

给每个需求单独编号

减少需求中的歧义

 对自然语言辅助增强,而非替换

 在更形式化的模型前,先写自然语言

保持需求规格说明的可读性

明确可靠性

应明确环境超出预期时的系统行为

自毁的待定项

 为什么只有被淘汰的页面被修改过时,才需要写回外存


第31~60个原则

不忽视技术

我们始终要紧跟时代

理想情况,“最好”、“最有效”往往代表着其“最流行”,要紧跟时代,防止掉队。

两种方式让你紧跟技术潮流:阅读正确的杂志,和正确的人交谈。

使用文档标准

创新,即遵循标准,同时理智地执行

目前最广泛认可的是IEEE发布的文档标准

文档要有术语表

但是标准是 定义中使用的任何单词,都应该尽量避免让人再去术语表中查找含义

软件文档要有索引

对相同的概念用相同的名字

不要让其他人,比如读者,产生疑惑

研究再转化,不可行

软件研究者很少有开发实际系统的经验

        要实现从研究所到开发机构的最成功的成果转化,从一开始双方就要紧密合作。需要使用工业界的环境作为萌发想法并验证效果的实验室,而不是在想法成形后再做技术转化。

        目前,或许我们最缺乏的,就是一个大师云集的时代,一个满是灯塔的世界,来点亮自己昏暗的前途人生,告诉我们的年轻人,让他们知道并有很多的选择告诉自己,知道往哪里走。

  

作为系统开发者,请承担责任

需求工程的最终产出是需求规格说明

低质量的需求分析,导致低质量的成本估算

使用原型,降低需求不确定的风险

使用配置管理,来控制需求变更

 

先确定问题,再写需求

在解决问题时,不要被最初方案带来的潜在兴奋所蒙蔽

需求难以理解,更难以说明。对此,错误的解决方法是草率地完成需求规格说明,匆忙地进行设计和编码,然后徒劳地希望:
1.任何系统都比没有系统要好。
2.需求迟早会被解决。
3.或者,设计师在开发的过程中会明确可以开发什么
正确的解决方法是,立刻不计代价、尽可能多地获取需求信息。应使用原型的方法。

 

立即修复需求规格说明中的错误

因为你越是往后推,你就越是难办,难处理,困难就越是大,成本就越高

原型可以降低选择用户界面的风险

原型的确有很强的好处,主要是快捷,能够立马给出一个肉眼可见的演示效果,这样是更利于项目的推进的。

 

 记录需求为什么被引入

        假设客户后续要求做一个需求变更,我们需要知道原始需求的动机,以便确认是否可以安全地变更。同样当系统无法满足某个需求时,我们需要知道需求的背景,才能决定是修改系统设计以满足需求,还是修改需求以匹配系统。

确定子集

 在编写需求规格说明时,要清晰识别有用的需求的最小子集。

评审需求

如果需求规格说明的某些部分是用更正式的语言编写的

相关人员可以“看到”系统功能,而不只通过“阅读”了解系统如何运行。

就是要方便快捷,让协作方能够更为快速认知

避免在需求分析时进行系统设计 

需求阶段的目标是明确系统的外部行为

要最够明确,以保证当使用需求规格说明作为指引时,所有设计人员都能对系统的目标行为做出相同的理解。

给一个善意的提醒:

警告: 这里包含的设计,仅用于辅助理解产品的外部行为。在系统外部行为相同的情况下,设计人员可以选择任何设计方案。

使用正确的方法

就是面对不同的需求,我们要给出适配的解决方案,这真的很是重要

使用多角度的需求视图

        就是多来一些图或者是分析的方法

介绍一下有限状态机

        其实简单说,就是像是脚本一样,即使你有输入之后,它给你弄一套流程,之后这个流程中的每一个步骤就叫做状态,然后,这个步骤当然是可以数完的呀,那么就是有限的,机,相当于机制,或者这一整套,反正就是不是机器的意思。

有限状态机(Finite State Machine,FSM)是一种计算模型,用于描述系统的行为。它由一组状态、转移和动作组成,可以根据输入和当前状态来进行状态转移,并执行相应的动作。

在有限状态机中,系统的行为被建模为从一个状态到另一个状态的转移。每个状态代表系统所处的特定状态或条件。转移表示从一个状态到另一个状态的切换,转移可以由输入、事件或其他条件触发。动作则是与转移关联的操作,用于执行特定的行为或任务。

有限状态机可以分为两种类型:确定性有限状态机(Deterministic Finite State Machine,DFSM)和非确定性有限状态机(Nondeterministic Finite State Machine,NFSM)。

  • 确定性有限状态机(DFSM):在确定性有限状态机中,给定当前状态和输入,只能有一种确定的状态转移。它使用明确定义的规则来确定下一个状态。

  • 非确定性有限状态机(NFSM):在非确定性有限状态机中,给定当前状态和输入,可以有多种可能的状态转移。它允许模型在某些情况下具有多个可能的未确定的状态。

有限状态机在各种领域中得到广泛应用,例如编译器设计、网络协议、自动控制系统等。它们提供了一种简洁而有效的方式来建模和分析系统的行为,使得复杂的问题可以用一组离散的状态和转移来描述和解决。

总结起来,有限状态机是一种用于描述系统行为的计算模型,由一组状态、转移和动作组成。它提供了一种清晰、简明的方法来建模和分析系统的行为,具有广泛的应用领域。        

合理地组织需求

站在对方的角度,从他们的使用视角出发,提出需求,这个很重要。

给需求排优先级

书写要简洁

真的,我们写的是实战工程,是要赚钱的项目呀,你又不是写论文,糊弄人的,写那么刁钻,让人看不懂干嘛

给每个需求单独编号

减少需求中的歧义

 

 对自然语言辅助增强,而非替换

可通过使用有限状态机、谓词逻辑、Petri 网络、状态图筹来减少歧义

为什么要有这些图和逻辑说明啥的,就是为了消除自然语言的歧义的

 在更形式化的模型前,先写自然语言

你要是看了上面的那个例子,你就知道了,如果上手就是用形式化的东西来写,那简直不是人看的东西。

工具和形式都是来促进我们自然理解的

        最好的方法是(1) 写自然语言,( 2)写形式化模型,(3)根据形式化模型中发现的问题去修改自然语言,以减少歧义。

保持需求规格说明的可读性

因为这个需求文档是要被很多人阅读的,各色的人来看,那么我们需要保持我们给他们分别阅读的东西,要保持一个一致性,要不然大家都是各种理解,那怎么行?

有效方法,保持自然语言,同时结合更形式化的多视角

明确可靠性

可靠性真的不是随便乱说的,要不然没有用,失去可信度,对于什么事情都很可怕

可以从以下三个方面看:

当编写可靠性需求时,要区分以下概念
1.需求失效 (Failure on Demand)。系统正确响应的可能性(百1分比)是多少?例如,“系统应正确报告 99.999%的病人生命体征异常”。
2.失败率(Rate ofFailure)。这个概念和“需求失效”类似,但2.它以单位时间内的数值来衡量。例如,“系统无法正确报告病人生命体征异常的次数,每年不超过 1次”。
3.可用性(Availability)。系统可用的时间百分比是多少?例如“在任何自然年内,电话系统( 至少)在 99.999%的时间可用"。

应明确环境超出预期时的系统行为

当环境超出为其定义的任何约束时,在软件需求规格说明中应明确声明预期的系统响应。

自毁的待定项

对于一个需求文档来说,的确是不好的

但是如果创建了,我们就要在一个计划的时间内,将其完善好,以达到上面说的,自毁

需求最好保存到数据库中

理想情况下,需求规格说明本身就是整个数据库有组织的导出。 

 

 

 为什么只有被淘汰的页面被修改过时,才需要写回外存

当一个页面被淘汰时,系统需要为其分配一个新的物理页面,因此原来的页面内容需要被移出主存。如果该页面已被修改过,其内容在主存中与外存中的内容不一致,需要将主存中的内容写回外存,以保证数据的一致性。而如果页面没有被修改过,它在主存和外存中的内容是一致的,不需要写回外存。这样可以减少对外存的写入次数,提高系统性能。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值