软件工程第3次课

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

需求知识高级主讲:郭俊颖Email:ybbh6b@126.com1需求知识高级需求分析所处的位置需求捕获vs需求分析vs系统分析软件需求的类型需求捕获实例作业:做需求捕获与需求分析需求分析所处的位置概念化阶段需求分析领域建模架构设计阶段需求阶段概念化阶段:明确了软件项目的意义,可行性等概括。需求阶段:功能需求、质量属性需求、约束性需求等。架构设计阶段:分析和设计系统。需求捕获vs需求分析vs系统分析时间工作量比例需求捕获系统分析需求分析需求捕获及其成果需求捕获是获取知识的过程,知识从无到有、从少到多。需求采集者必须理解用户所从事的工作,并了解用户和客户希望系统在哪些方面帮助他们。工作成果:需求采集卡、访谈记录、访谈录音(征询授权)、书面材料、系统等。常犯错误:拿着需求捕获的内容作为需求分析。需求分析及其工作成果通过需求采集活动,捕获到了大量“原始需求”。需求分析则对采集到的原始需求进行分析、整理、辨别和归纳,最终形成系统的、明确的软件需求。需求分析是挖掘和整理知识的过程,它在已掌握知识的基础上进行。需求分析就是对用户需求进行分析,以得到一份明确的、规范的需求定义。工作成果:需求规格说明书常犯错误:需求分析不全面,少功能,无非功能性需求。系统分析及其工作成果系统分析是针对系统所要面临问题,搜集相关的资料,以了解产生问题的原因所在,进而提出解决问题的方法与可行的逻辑方案,以满足系统的需求,实现预定的目标。已经属于分析和设计阶段的工作。工作成果:分析类图、鲁棒图、序列图等。下一部分的内容。软件需求的类型软件需求功能需求非功能需求软件质量软件质量:1、一个系统、组件或过程符合特定需求的程度;2、一个系统、组件或过程符合客户或用户要求或期望的程度。一提到软件质量,人们首先想到的是“正确性”,但是运行正确的软件就是高质量的软件吗?不见得,比如运行速度很低,并且浪费内存,甚至代码写得一塌糊涂,除了开发者本人谁也看不懂,也不会使用。行不行?软件质量属性功能性质量属性:正确性,健壮性,可靠性非功能性质量属性:性能,易用性,清晰性,安全性,可扩展性,兼容性,可移植性等正确性正确性是指软件按照需求正确执行任务的能力。“正确性”的语义涵盖了“精确性”。正确性无疑是第一重要的软件质量属性。如果软件运行不正确,将会给用户造成不便甚至损失。技术评审和测试的第一关都是检查工作成果的正确性。从“需求分析”到“系统设计”再到“实现”,任何一个环节出现差错都会降低正确性。机器不会主动欺骗人,软件运行出错通常都是人造成的,所以不要找借口埋怨机器有毛病。开发任何软件,开发者都要为“正确”两字竭尽全力。健壮性健壮性是指在异常情况下,软件能够正常运行的能力。正确性与健壮性的区别是:前者描述软件在需求范围之内的行为,而后者描述软件在需求范围之外的行为。开发者往往把异常情况错当成正常情况而不作处理,结果降低了健壮性。健壮性有两层含义:一是容错能力,二是恢复能力。容错与恢复容错是指发生异常情况时系统不出错误的能力,是非常健壮的意思,比如UNIX的容错能力很强,很难使系统出问题。恢复是指软件发生错误后(不论死活)重新运行时,能否恢复到没有发生错误前的状态的能力。从语义上理解,恢复不及容错那么健壮。如:Microsoft公司早期的窗口系统如Windows3.x和Windows9x,动不动就死机,其容错性的确比较差,但它们的恢复能力还不错,机器重新启动后一般都能正常运行。可靠性可靠性是指在一定的环境下,在给定的时间内,系统不发生故障的概率。可靠性本来是硬件领域的术语。比如某个电子设备在刚开始工作时挺好的,但由于器件在工作中其物理性质会发生变化(如发热),慢慢地系统的功能或性能就会失常。所以一个从设计到生产完全正确的硬件系统,在工作中未必就是可靠的。软件在运行时不会发生物理性质的变化,人们常以为如果软件的某个功能是正确的,那么它一辈子都是正确的。可是我们无法对软件进行彻底地测试,无法根除软件中潜在的错误。平时软件运行得好好的,说不准哪一天就不正常了,如有千年等一回的“千年虫”问题,司空见惯的“内存泄露”问题、“误差累积”问题等等。时隐时现的错误一般都属于可靠性问题,纠错的代价很高。软件需求的类型软件需求功能需求非功能需求质量属性约束运行期质量开发期质量属性质量属性------非功能性运行期质量属性(外部)开发期质量属性(内部)性能易理解性安全性可扩展性易用性可移植性持续可用性可重用性可伸缩性可测试性互操作性可维护性鲁棒性可兼容性性能性能通常是指软件的“时间-空间”效率,而不仅是指软件的运行速度。人们总希望软件的运行速度高些,并且占用资源少些。性能:包括速度、吞吐量和持续高速性三方面的要求。吞吐量通过单位时间处理的交易数量来度量;速度往往通过平均响应时间来度量;而持续高速性是指保持高速处理速度的能力。性能优化的目标是“既要马儿跑得快,又要马儿吃得少”,关键任务是找出限制性能的“瓶颈”,不要在无关痛痒的地方瞎忙乎。可以通过优化数据结构、算法和代码来提高软件的性能。安全性这里安全性是指信息安全,英文是Security而不是Safety。安全性是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。“道高一尺,魔高一丈”,如今全球黑客泛滥,绝对安全的信息系统几乎不存在。开发商和客户愿意为提高安全性而投入的资金是有限的,他们要考虑值不值得。究竟什么样的安全性是令人满意的呢?一般地,如果黑客为非法入侵花费的代价(考虑时间、费用、风险等因素)高于得到的好处,那么这样的系统可以认为是安全的。易用性易用性是指用户使用软件的容易程度。现代人的生活节奏快,干啥事都想图个方便。所以把易用性作为重要的质量属性对待无可非议。导致软件易用性差的根本原因:理工科大学教育存在缺陷:没有开设人机工程学、美学、心理学这些必修课,大部分开发人员不知道如何设计易用的软件产品。开发人员犯了“错位”的毛病:他以为只要自己用起来方便,用户也就会满意。软件的易用性要让用户来评价。当用户真的感到软件很好用时,一股温暖的感觉油然而生,于是就用“界面友好”、“方便易用”等词来评价软件产品。质量属性------非功能性持续可用性:系统长时间无故障运行的能力。可伸缩性:用户数和数据量增加时,软件系统维持高服务质量的能力。如增加服务器或软件个数,不需要修改代码。互操作性:本软件系统与其他系统交换数据和相互调用服务的难易程度。鲁棒性:也称容错性,对于非法操作,软硬件故障等非正常情况的处理能力。易理解性意味者所有的工作成果易读、易理解,可以提高团队开发效率,降低维护代价。开发人员只有在自己思路清晰的时候才可能写出让别人易读、易理解的程序和文档。可理解的东西通常是简洁的。一个原始问题可能很复杂,但高水平的人就能够把软件系统设计得很简洁。如果软件系统臃肿不堪,它迟早会出问题。所以简洁是人们对工作“精益求精”的结果,而不是潦草应付的结果。可扩展性可扩展性反映软件适应“变化”的能力。在软件开发过程中,“变化”是司空见惯的事情,如需求、设计的变化,算法的改进,程序的变化等等。由于软件是“软”的,是否它天生就容易修改以适应“变化”?关键要看软件的规模和复杂性。如果软件规模很小,问题很简单,那么修改起来很容易,这时无所谓“可扩展性”,但是如果软件规模很大,问题很复杂,倘若软件的可扩展性不好,那么该软件就像用卡片造成的房子,抽出或者塞进去一张卡片都有可能使房子倒塌。可扩展性是系统设计重点考虑的质量属性。可移植性可移植性是指软件不经修改或稍加修改就可以运行于不同软硬件环境的能力,主要体现为代码的可移植性。编程语言越低级,其程序越难移植,反之则容易。软件设计时应该将“设备相关程序”与“设备无关程序”分开,将“功能模块”与“用户界面”分开。质量属性------非功能性可重用性:重用软件系统或其一部分的难易程度。可测试性:对软件测试以证明其满足需求规约的难易程度。可维护性:定位修改点并修改的难易度,修改bug、增加功能、提高质量属性。可兼容性兼容性是指两个或两个以上的软件相互交换信息的能力。兼容性的商业规则:弱者设法与强者兼容,否则无容身之地;强者应当避免被兼容,否则市场将被瓜分。示例:中国联通和中国移动的手机互联互通问题金山软件公司的WPS与微软的Word之争需求捕获实例一起做需求捕获打开附件作业:做需求捕获与需求分析给定项目,自选项目必须经过老师同意并记录;做需求捕获和需求分析;需求分析利用以前学过的知识,是复习也是预习;作业形式:纸质,可手写也可电子设计后打印;下节课学习委员收。

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功