软件设计

耗尽脑汁的需求分析工作 - 新书《火球 UML大战需求分析》试读 第2章

家住魔仙堡 提交于 2020-01-11 10:08:09
摘要 :怎么又变了?当初就应该让客户书面签字 确认 !你可能会经常发这样的牢骚,可是就算客户书面确认,客户还是会“赖账”的! 软件 项目的其中一项不变真理:人是会死的,需求是会变的!本章将会和你一起来体验软件 需求分析 工作的风风雨雨,找出需求分析工作的根本之道,了解 UML 如何帮助我们提升需求分析的水平。 (本书已经发售) 作者: 张传波 网名:Fireball(火球) www.umlonline.org 2.1 需求分析面面观 客户需要的是一把梯子,系统分析员了解到的是一张凳子,开发人员做出来的是一张桌子,测试人员以为是一张椅子……很多角色参与项目工作,每种角色会从自身角色出发来理解需求,以致各种角色对需求的理解会不太一样。下表对各种角色的特点进行了分析: 表 2.1 各种角色的特点 另外要说明的是: 客户一方的总倾向是:自己少花钱,让软件公司多做事情。 而软件公司一方的总倾向是:多拿客户的钱,尽量少做事情。 影响各人对需求理解的主要因素有两方面:一方面是角色的思考倾向,上表反应了这点;另外一方面是人的需求分析能力,能力越强的人越能把握需求,本书重点讲解的内容就是如何 活用UML 来提升需求分析能力。 而更“离谱”的是:每个人嘴巴上说的需求和心目中的需求总是有差异的,所谓的“词不达意”,受表达能力所限,不是每个人都能完整准确地表达自己的想法;有时候客户今天想要这个

让人耗尽脑汁的需求分析工作(转--Fireball)

时光怂恿深爱的人放手 提交于 2020-01-11 05:02:36
摘要 :怎么又变了?当初就应该让客户书面签字 确认 !你可能会经常发这样的牢骚,可是就算客户书面确认,客户还是会“赖账”的! 软件 项目的其中一项不变真理:人是会死的,需求是会变的!本章将会和你一起来体验软件 需求分析 工作的风风雨雨,找出需求分析工作的根本之道,了解 UML 如何帮助我们提升需求分析的水平。 作者: 张传波 www.umlonline.org www.umlonline.org/school/ 本文来自新书《活用UML——需求分析高手》的第二章。 第一章已经在博客园发布,文章名字叫:UML一篇文章就学通 文章链接: http://www.cnblogs.com/umlonline/archive/2011/07/12/2104626.html 以下是正文: 2.1 需求分析面面观 客户需要的是一把梯子,系统分析员了解到的是一张凳子,开发人员做出来的是一张桌子,测试人员以为是一张椅子……很多角色参与项目工作,每种角色会从自身角色出发来理解需求,以致各种角色对需求的理解会不太一样。下表对各种角色的特点进行了分析: 表 2.1 各种角色的特点 另外要说明的是: 客户一方的总倾向是:自己少花钱,让软件公司多做事情。 而软件公司一方的总倾向是:多拿客户的钱,尽量少做事情。 影响各人对需求理解的主要因素有两方面:一方面是角色的思考倾向,上表反应了这点

利用proteus软件设计电路

江枫思渺然 提交于 2020-01-11 01:22:09
要求: 某控制板外接入8路数字音频脉冲信号,控制板有8个按键(K1~K8)与这8路信号相对应,每次只允许有一个按键按下。按键按下后,与按键相对应的输入信号被选中输出至扬声器,同时有一个LED数码管显示所按键序号。 原理框图 各模块功能说明 按键:由按键按下产生逻辑0; 编码器:根据按键按下的情况产生三位信号(000、001、010、011、100、101、110、111); 加法器:将编码器产生的信号做加1处理后并输出四位信号; 与运算:保证无按键按下时数码管显示为0; 译码器:将与运算后产生的四位信号做译码处理,使数码管能产生相应的数字; 7段数码管:产生相应的数字; 选择器:8种不同频率的信号作为选择器的输入端,编码器输出端的三位信号连接选择器的控制端,当相应的按键按下后控制相应的频率信号输出; Proteus工程截图 编码器 选择器 加法器 译码器及数码管 仿真结果 分析: 无按键按下时数码管显示0 分析: 按键5按下时数码管显示5 完整电路截图 完整工程视频 复制以下链接至浏览器中打开可观看完整工程视频:https://pan.baidu.com/s/1Oki4CgwM9rqACgI5BGZGHQ 后记 最后,如果需要更加详细的讲解以及已经建好的工程文件,可以联系QQ:2040243102 来源: CSDN 作者: YQz. 链接: https://blog.csdn

抽象和封装

有些话、适合烂在心里 提交于 2020-01-10 20:50:08
1.使用面向对象的思想开发程序的好处 客户和软件设计开发人员之间、软件设计开发人员内部交流更加顺畅 提高软件设计和开发效率 2.从现实世界抽象出类 找出名词确定类、属性 找出动词确定方法 剔除与业务无关的属性和方法 3.方法重载的规则 方法名相同 参数项不同 与访问修饰符和返回值无关 4.实现封装的步骤 修改属性的可见性 创建公有的getter/setter方法 在getter/setter方法中加入属性控制语句 来源: CSDN 作者: weixin_46000347 链接: https://blog.csdn.net/weixin_46000347/article/details/103929546

软件工程试题(作业)

…衆ロ難τιáo~ 提交于 2020-01-07 08:12:05
如何评测软件工程知识技能水平? 我的CSDN: https://blog.csdn.net/P71720/article/details/103742773 (一),选择题(5*2) (1) 需求分析中开发人员要从用户那里了解( A )。     A.软件做什么  B.用户使用界面  C.输入的信息  D.软件的规模 (2) 软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是( C )。 A.分析阶段 B.设计阶段 C.编码阶段 D.测试阶段 答案解析:在结构化的软件开发中,一般情况下,可能需要占用的人数最多的阶段是在软件编程的阶段,但从工作量上来说,在软件的需求分析、定义及软件的测试和维护阶段需要的工作量更多,用软件开发计划中的40-20-40原则,即可说明这一点,在软件需求分析和定义阶段,虽然工作量比软件编程多,但因为软件的需求分析和定义对开发人员的素质要求比较高,所以占用的人员并不需要太多;同时由于软件维护的周期比较长,所以其耗的工作量比软件编程多,但一般来说它占用的人员并不比软件编程阶段占用的人员多,所以答案为C。 (3) 当一个模块直接使用另一个模块的内部数据,这种模块之间的耦合为( D ) 。 A、数据耦合    B、公共耦合 C、标记耦合    D、内容耦合 (4) UML是软件开发中的一个重要工具

如何评测软件工程知识技能水平?

我的未来我决定 提交于 2020-01-07 04:03:02
您认为一个软件工程师的 软件工程知识技能水平高低主要体现在哪些方面 /*--> */ /*--> */ 一个软件工程师,首先要具备良好的编程能力,这是一名程序员必要的工具;其次,要有一个良好的沟通能力,在软件设计过程中往往是以团队形式工作的,因此需要有一个良好的团队配合,这是基于沟通能力的;再者,要有一定的学习能力,软件设计往往是跨领域的,如需要你设计一个医疗用的软件,这需要学习能力作为基础,才能够更好的了解该领域的知识,获取需求;最后,需要一个持之以恒的努力,软件设计不是一朝一夕能够完成的,要能够耐得住寂寞,守得住电脑。 一、选择题 (2’× 10) 1. 某企业财务 系统的需求中,属于功能需求的是()。 A .每个月特定的时间发放员工工资 B .系统的响应时间不超过 3 秒 C .系统的计算精度符合财务规则的要求 D .系统可以允许 100 个用户同事查询自己的工资 答案A 解析:功能需求:系统要做什么,在何时做,在何时以及如何修改升级。 选自中级软件设计师考试2017 年试题 2. 系统交付用户使用后,为了改进系统的图形输出而对系统进行修改的维护行为属于()维护。 A .改正性 B .适应性 C .改善性 D .预防性 答案 C /*--> */ /*--> */ 解析:正确性维护:改正没有发现的错误 适应性维护:技术,需求发生了变化而引起的维护 完善性维护

如何评测软件工程知识技能水平

♀尐吖头ヾ 提交于 2020-01-06 20:14:24
根据本课程的学习以及自身的知识和经验,您认为一个软件工程师的软件工程知识技能水平高低主要体现在哪些方面,请您简要总结一下:   1.具有优秀的学习能力,IT技术更新很快,软件工程师应具备的技能里很重要的一点就是学习能力。只有具备了学习能力,才能很快适应市场与业务的需要,有时候工作的需求不是你在学校就已经学过的,只能靠着之前积累的经验与快速学习熟悉新的知识,升华自己的能力,为以后成为架构师后者其他职位打下基础。   2.具有扎实的计算机专业知识,吃透高等数学、离散数学、算法等课程。(1)基础编程语言,编程语言是软件工程师必备的技能,不同方向的开发需要使用到不同的编程语言通常来说,软件工程师往往需要掌握多门编程语言。(2)算法。算法是软件工程师的重点知识技能,算法的掌握情况往往能够决定软件工程师的成长高度。(3)数据库。信息是以数据为中心的,因此与数据库的交互在所有软件中都是必不可少的,了解数据库操作和编程是软件工程师需要具备的基本素质之一。目前常用的数据库软件有Oracle数据库和SQL Server等。   3.具有对这个行业的热爱,才有能坚持与继续学习的动力。   4.具有良好的交流与沟通能力,现在的软件开发永远不是一个人的游戏,需要与团队成员协调沟通,分配好工作的任务与进度,才能够开发出高质量的软件。 一、选择题 1、软件工程的出现主要是由于( ) A.程序设计方法学的影响  

如何评测软件工程知识技能水平

坚强是说给别人听的谎言 提交于 2020-01-06 01:45:37
根据本课程的学习以及自身的知识和经验,您认为一个软件工程师的软件工程知识技能水平高低主要体现在哪些方面,请您简要总结一下:   1.具有优秀的学习能力,IT技术更新很快,软件工程师应具备的技能里很重要的一点就是学习能力。只有具备了学习能力,才能很快适应市场与业务的需要,有时候工作的需求不是你在学校就已经学过的,只能靠着之前积累的经验与快速学习熟悉新的知识,升华自己的能力,为以后成为架构师后者其他职位打下基础。   2.具有扎实的计算机专业知识,吃透高等数学、离散数学、算法等课程。(1)基础编程语言,编程语言是软件工程师必备的技能,不同方向的开发需要使用到不同的编程语言通常来说,软件工程师往往需要掌握多门编程语言。(2)算法。算法是软件工程师的重点知识技能,算法的掌握情况往往能够决定软件工程师的成长高度。(3)数据库。信息是以数据为中心的,因此与数据库的交互在所有软件中都是必不可少的,了解数据库操作和编程是软件工程师需要具备的基本素质之一。目前常用的数据库软件有Oracle数据库和SQL Server等。   3.具有对这个行业的热爱,才有能坚持与继续学习的动力。   4.具有良好的交流与沟通能力,现在的软件开发永远不是一个人的游戏,需要与团队成员协调沟通,分配好工作的任务与进度,才能够开发出高质量的软件。 一、选择题 1、软件工程的出现主要是由于( ) A.程序设计方法学的影响  

软件工程试题(作业)

对着背影说爱祢 提交于 2020-01-05 13:55:12
如何评测软件工程知识技能水平? 我的CSDN: https://blog.csdn.net/P71720/article/details/103742773 (一),选择题(5*2) (1) 需求分析中开发人员要从用户那里了解( A )。     A.软件做什么  B.用户使用界面  C.输入的信息  D.软件的规模 (2) 软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是( C )。 A.分析阶段 B.设计阶段 C.编码阶段 D.测试阶段 答案解析:在结构化的软件开发中,一般情况下,可能需要占用的人数最多的阶段是在软件编程的阶段,但从工作量上来说,在软件的需求分析、定义及软件的测试和维护阶段需要的工作量更多,用软件开发计划中的40-20-40原则,即可说明这一点,在软件需求分析和定义阶段,虽然工作量比软件编程多,但因为软件的需求分析和定义对开发人员的素质要求比较高,所以占用的人员并不需要太多;同时由于软件维护的周期比较长,所以其耗的工作量比软件编程多,但一般来说它占用的人员并不比软件编程阶段占用的人员多,所以答案为C。 (3) 当一个模块直接使用另一个模块的内部数据,这种模块之间的耦合为( D ) 。 A、数据耦合    B、公共耦合 C、标记耦合    D、内容耦合 (4) UML是软件开发中的一个重要工具

从此重构

我与影子孤独终老i 提交于 2020-01-05 06:04:38
设计是如此重要,那么开发者的基本设计能力与素质又从何下手来培养呢? 最好的办法,就是请个老师。从框架中了解,从系统中实现,从书文中汲取。然而,设计能力的提升绝非一朝一夕之功, 软件 开发中的设计大师,往往必须具备多年的修行方可称之为“架构师”。 一个在简历中轻描淡写的“ 10 年软件设计经验”,并非是所有软件人都能修炼成的真功夫,这里没有任何虚情假意可言。在一个项目的实现过程中,逐渐了解什么是对象、什么是对抽象 编程 、设计模式是如何应用在实际的系统架构、设计原则到底是什么秘密武器,而重要的是完成一个软件项目,对于更多人来说是认识一种软件开发的科学流程。这种体验,才是难能可贵的经验。在设计的广义概念里,几个必需的概念是应该首先被了解和认知的,以排名不分先后的原则罗列,它们大概包括: · 面向对象 ( Object-Oriented ),关于面向对象没有必要重复嚼舌了,本书的第 1 章“ OO 大智慧”中对 .NET 的面向对象进行了有别于其他专著的介绍,除了以实例突出面向对象之思想大成,还以浓墨铺陈了 .NET 是如何在底层 技术 上来实现继承、多态和接口映射等机制,从而使读者可以更加有效和深刻地把握面向对象之精髓。 · 面向服务 ( Service Oriented ), SO 至少是个时髦的话题, WCF 伴着 .NET 3.5 的发布,一个一统江湖的面向服务的基础架构横空出世