让你提前认识软件开发(50):软件需求

第3部分 软件研发工作总结

软件需求

 

        软件工程师的工作职责是什么?一句话,就是完成软件需求。大家每天都接触到的软件,都是从软件需求一步步进化而来的。那么,软件需求是什么?如何完成需求?在完成需求的过程中我们要注意哪些问题呢?本文将为你解答这些问题。

1. 什么是软件需求?

        通俗地讲,软件需求是指要求软件开发工程师完成的软件的功能。例如,如果要求一个软件具备文件处理的能力,要求一个WEB页面具备显示客户信息的能力,要求一款手机具备指纹识别的能力,等等,这些要求都是软件需求。

        用较为专业一点的术语来说,需求指被描述对象(也就是软件)“做什么”(功能需求)及“做什么”时的水平(非功能需求,如性能需求、质量属性需求、外部环境需求等)。

        需求与开发的关系如图1所示:

图1 需求与开发的关系

 

2. 软件需求示例

        如果要求做一个软件来实现文件处理功能,则一个较为完整的软件需求如下所示:

需求背景:客户要求软件具备文件处理能力,以获取文件中的信息。

需求描述:该软件处理本地文件中的信息,并将读取到的信息保存到数据库中。

执行者:本软件

优先级:高

使用频度:软件运行时执行

前置条件:数据库和操作系统正常运行

后置条件:无。

正常过程:

Step 1:该软件周期性地扫描本地指定的文件目录,以发现按要求命名的文件;

Step 2:扫描到文件之后,程序对读取到的内容进行解析,并将解析后的内容写入到指定的数据库中。

可选过程:无。

异常过程:如果本地目录里面没有文件,则程序继续执行而不停止。

特殊需求:不处理pdf格式的文件。

需求来源:运营商客户。

        一条软件需求包括了以上诸多的内容,其目的就是把需要做的东西描述清楚,以便于开发人员编写程序实现该需求。

 

3. 完成需求过程中的角色分工

        在一条需求从产生到完成的过程中,牵涉到的主要人员包括以下几类:

        (1) 系统工程师(System Engineer,简称SE):他们负责写需求,并在开发过程中不断完善需求,同时解答研发人员的疑问。

        (2) 开发工程师(Development Engineer):他们负责用程序代码实现需求,并就需求中的问题与SE沟通。

        (3) 测试工程师(Test Engineer):他们主要对开发工程师做出的软件进行测试,并就相关问题与开发工程师和SE沟通。

        以上三类角色的互动情况如图2所示:

图2 三类角色的互动情况

 

4. 开发工程师如何准确地完成需求?

        (1) 参加需求评审会议,了解需求所要实现的功能,并就需求的合理性进行评估,剔除不合理的、有歧义的、实现难度很大的需求。

        (2) 在开始编码之前,做好软件的详细设计并发起评审,确保软件流程的正确性及功能的完整性,减少后期修改所带来的麻烦。

        (3) 在编码的过程中,仔细阅读需求,确保对之有了准确的、透彻的的理解。如果在需求实现过程中发现了需求问题或有所疑惑的地方,及时与SE沟通(最好面对面沟通)。

        (4) 在完成了一个功能之后,即对代码进行自测(单元测试),确保已实现功能的正确性。在所有功能都实现之后,还要对整个程序进行测试(集成测试)。

        (5) 在提交程序之前,确保代码、文档都已齐备,最后再对程序版本的完整性进行检查。

 

        一切软件都是从需求开始的,因此,对于软件需求,开发人员一定要抱着高度负责任的态度,快速、准确地将其实现,以做出高质量的软件产品。

 

 

 

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

时间: 2024-09-27 02:52:24

让你提前认识软件开发(50):软件需求的相关文章

开源软件开发与软件安全问题(1)

关于微软Windows与基于Linux的操作系统哪个更安全的讨论席卷了互联网.讨论涉及许 多人的既得利益和偏袒的利益.由于了解不够以及逻辑错误引发的误解导致了讨论的混乱,使得讨论趋于白热化.出于广告宣传策略的需求希望能使赞助方获得更多的关注,派性论文使用整理过的统计数据泡制过于明显的权威及客观,实际上等于用偏见和可疑的事实来支持讨论.这场缺乏确切结论的大讨论看似永无休止的部分原因就在于对安全的评估过多的集中 于一个附带现象上:他们只研究安全性能的表面现象,而没有 深入的分析安全特性的原因.部分原

《软件工艺师:专业、务实、自豪》一2.7 敏捷软件开发与软件工艺的关系

2.7 敏捷软件开发与软件工艺的关系 经常有人误解软件工艺,认为它与敏捷开发是互斥的,是用来取代敏捷开发的.事实完全不是这样,它们能相互补充.时下的敏捷开发可以给软件组织及软件行业提供一套新思路.敏捷开发方式关注软件产品的价值.提倡根据价值排定优先级.简化繁琐的规章制度.减少浪费.扩大开发人员的参与范围,并提供快速反馈.这使得公司能够更迅速地应对变化,从而变得更加敏捷.敏捷开发方式帮助软件公司做正确的事.而软件工艺则涉及软件开发的专业技术层面.软件工艺是一种理念,许多开发者采用这种理念来激励自己

提前认识软件开发(2) 软件开发工程师常用的工具软件

有一次,我打开电视机准备随便看看,无意中被一部战争片吸引住了.成千上万的共产党战士搭起云梯,想攻破一座城池.但是城楼上面的敌人负隅顽抗,拼了命地阻击我军的进攻.双方的伤亡都很惨重,但城就是攻不下来.眼看我军剩下的人不多了,突然不知从什么地方开出一辆坦克,两炮就把城门轰开了.我军趁势攻入城中,将敌人全部歼灭了. 这类电视剧比较常见,相信大家看了不止一次.但是,我看完之后,那个场景还一直留在我的脑海里.成千上万的人不如一辆坦克来得直接,说明了什么问题呢?我立马想到了一句古诗:工欲善其事,必先利其器.

谈谈如何应对软件开发中的需求变更

令人烦恼的需求变更     在软件开发中,大家都会遇到过这样的问题:客户的一个新想法,就推翻了之前与客户经过再三讨论而确认定下来的需求.如果是功能性需求变更还会让人容易接受一些,毕竟功能性需求不实现的话,是会大大影响到软件产品的质量.但是一些非功能性的变更会让人很头疼,许多是看起来无关痛痒的.鸡毛蒜皮的变更,却是极为令人无语和无奈,甚至是烦恼和厌恶的.     (1)什么是软件需求?     在IEEE中,软件需求的定义是:用户解决问题或达到目标所需的条件或功能.一般包含业务需求.用户需求.功能

容器、DevOps来了,软件开发如何跟上节奏?

随着IT技术的不断进步,软件开发和运维领域近年来正在发生重大变革.一方面,为快速响应市场的变化,DevOps正在变得越来越流行,越来越多的企业引入了容器技术来解决软件的快速交付和部署问题.另一方面,软件的部署环境也从传统的物理机转变为云环境,其开发和运维都需要不同方法.在这些变化面前,传统的软件开发和运维方式已经很难适应,这就引发对新一代软件开发和运维工具的需求,以HPE的Octane为代表的新一代ALM就在这种背景之下推出的. HPE中国区副总裁.软件集团总经理李时认为,新一代ALM首先要做到

软件开发!=软件工程 你真的希望如此吗?

端着咖啡,你大步走向书房,只余脚步声回响在空荡的走廊里.跨过门槛,停下来咯哒一声打开头顶上的节能灯,放在书桌中央的笔 记本电脑一下子映入你的眼帘,明亮的屏幕上图表正在发出诱惑的光芒.放下咖啡,你决定最后再研究一次,看看还有什么错误或误算是先前被遗漏的.不断地熬 夜,熬夜,但最后,终于让你获得了客户的认可. 喝一口依然还滚烫的咖啡,你决定最后一次检查客户需求.用早餐的位置?有了.四个浴室,其中一个要在天花板上安装花洒淋浴头?有了.三车车库以及宽 敞的院子?有了.一切准备就绪,各就各位.最后的审查让

《实践者的研究方法》—— 第2章 软件工程 2.4 软件开发神话

2.4 软件开发神话 软件开发神话,即关于软件及其开发过程的一些被人盲目相信的说法,这可以追溯到计算技术发展的初期.神话具有一些特点,让人觉得不可捉摸.例如,神话看起来是事实的合理描述(有时的确包含真实的成分),它们符合直觉,并且经常被那些知根知底的有经验的从业人员拿来宣传. 今天,大多数有见地的软件工程师已经意识到软件神话的本质--它实际上误导了管理者和从业人员对软件开发的态度,从而引发了严重的问题.然而,由于习惯和态度的根深蒂固,软件神话遗风犹在. 管理神话.像所有领域的经理一样,承担软件职

《软件需求工程(第2版)》一2.2 软件开发过程模型

2.2 软件开发过程模型 软件开发过程模型是为获得高质量的软件系统所需完成的一系列任务的框架.它规定了完成各项任务的工作步骤.在软件工程的初期,软件生命期这一概念被提出.这是用标准的形式表示和定义了软件生存过程.所谓软件生命期是指软件从软件计划开始,经历需求分析和定义.设计.编码.测试.运行.维护直到废止为止的期间.由于软件生命期包括了软件的整个生存过程,与软件开发相关的企业和开发组织等都把软件生命期视为软件开发过程模型的依据,工程管理也以该模型为实施依据.当然,这也是模仿其他行业如机器制造业和

必由学:用软件开发云解决成长的烦恼

教育是一个永恒的研究课题,其重要性不须赘述.不管是哪种教育理念碰撞,最终都会落实在家庭教育及学校教育上来.这个庞大的教育体系,从来都是以感性的触角来探索.是否有一种方法:可以用数据或者科学的模型来完善我们对孩子的认识,从而让学校与孩子或者家长与孩子建立一种更为良性的交互模式? 快速成长的必由学:开拓教育数据化模式 大连必由学教育网络股份有限公司(以下简称"必由学")正在探索这种教育数据诊断检测模式,其学习诊断系统正应用于大连八中与大连周水子小学等中小学. 大连八中利用学习诊断系统中丰富