一、问答
1、什么是软件开发过程中的角色倒置?
在调研的初始阶段,工作基本上按工程师的计划开展。设计出第一个版本后,用户开始提意见。工程师随
着用户亦步亦趋,完全迷失了自我,用户说怎么改就怎么改、绝不多考虑任何一点,工程师的主动性和专
业特长没有任何发挥,最后的成果代表的是用户水平,不是专业软件设计者的水平。
2、什么是挤牙膏式的开发需求?
需求在像“挤牙膏”一样,一点一点的确认,挤一点做一点,工期被拉的特别长,成本也被大大扩大。出
现这种“挤牙膏”式的需求调研方式,也是因为开发者没有发挥主动性。一般只是在初期进行了一定程度
的设计和规划,后期则完全被动的听从用户指挥,不再去做深层次的挖掘和设计。
3、为什么开发过程中搜集术语很重要?如何搜索?
每一个术语基本上都会对应一个功能点,甚至可能是一个大模块。
搜集术语时要忽略准确性,用笔记勿用计算机,勿打断勿怕重复;搜集术语时要重点找对象,找对象的属
性(种类)、动作等;要找系统用户沟通、与管理人员和决策人员交流。
4、需求过程中笔记的几率和整理的技巧。
①与用户交流完要及时整理; ②整理一个划走一个; ③多换行,一行一个关键点;
④整理完成后要对要点按照业务类型进行分类汇总,形成系统框架图
5、什么是硬数据?什么是用户亲切的数据?
硬数据:要使用界面来验证和推敲需求,需要在界面上显示一些数据。按照先壳后芯的原则,我们不要通
过数据库查询、接口或复杂计算来获取数据,只要用代码编写 text 文本,即用硬数据代替即可,采用硬数
据与上述复杂方式取得数据的效果是一样的,对交流和揣摩没有任何影响。
这种用程序编写的数据就是硬数据,硬数据也必须是真实数据。
用户亲切的数据:我们在做界面的时候,选择用户熟悉的数据、角色、图片等,使用户感到亲切,贴近用
户的实际工作情况,交流起来也会容易一些。
6、真实数据在需求分析中的作用。
为了方便、节约时间而采用简单数据,会脱离生产环境太远,导致准确性降低。应采用真实数据和真实角
色,这样能最大程度的模拟生产环境,保证准确性,甚至降低返工率。数据是真实的,用户体验起来才有
真实感;使用真实数据能使我们自己在揣摩功能时更加顺畅。
7、有哪些事情是开发者认为不重要而用户认为非常重要的?
美观;细节;错别字;行间距;图片;格式等等小问题,通常是技术上很好实现、改起来很容易的问题,
往往是界面问题,开发者随手就能解决,恰恰是用户最关心的。
8、为什么亦步亦趋、迷失自我的设计方式遇弱则弱,遇强则强?
工程师随着用户亦步亦趋,用户说说怎么改就怎么改,绝不多考虑任何一点,工程师的主动性和专业特长
没有任何发挥,因此最后的成果代表的是用户水平,不是专业软件设计者的水平。当用户能力较强时,完
全听从于这个用户指挥勉强可以满足用户的需求;但这种情况概率很低,用户能力会受到各方面限制,设
计者如果不去了解业务,仅按用户的要求来设计,肯定干不好,这就是所谓的“遇强则强,遇弱则弱”。
9、为什么了解业务是设计之本?
了解业务是做需求和设计的基础,不了解业务,需求和设计无从谈起。配合我们做需求的用户通常会收到
各方面限制,我们不了解业务肯定做不好。只有了解业务并结合我们的专长,才能设计出令人满意的系统。
了解业务的过程,调研和设计工作才有基础。做需求和设计也一样,只有冲着了解业务去,才能做出好的
需求和设计。只有回归到提高管理水平和提高工作效率的本质上,需求调研和设计才能满足用户的要求。
10、为什么说用户不是神?
我们在做需求调研或设计时要避免亦步亦趋、迷失自我,不能依赖用户,因为会受到多方面的限制:
1) 受专业或岗位的限制。一个用户不可能提出所有需求,我们不能把一个用户提的需求当作全部。
2) 受时间限制。配合我们调研的人有自己的主业,需求调研只是被临时安排的,他们投入的时间必然很少。
3) 责任心不强。用户把往往把配合调研当作是额外的任务,抱着一种得过且过、与我无关的态度。
4) 受能力限制。配合我们调研的往往是部门内工作相对轻松的年轻人,通常懂点计算机,但业务能力一般。
5) 不懂信息化。用户一般不具备计算机专业知识,对信息化的实现手段、表现能力、最佳实践知道的很少。
11、为什么先壳后芯、广度优先的开发方式返工最少?
做项目如果一开始就做“芯”,即先做底层实现,用户一旦否定我们的设计,就等于一起否定了我们的底
层实现,需大量返工。对于管理类软件来说,需求大部分是反映在界面上的,界面定了,需求也就基本上
定了,先做好界面,以此把需求与用户沟通清楚。强调广度优先,把所有界面做出来跟用户去确认需求,
所有界面获得用户认可后,再开发每个页面的后台功能,后续返工的概率就会大大降低。
12、为什么管理软件中界面定了需求也就定了。
对于管理类软件来说,需求大部分是反应在界面上的,界面上的管理功能表示了软件能够做什么,即涵盖
了大部分的需求。
13、原型在调研中的作用。
我们在设计原型的过程中能够充分体会需求;用原型与客户交流,可减少语言描述的误解,向用户验证需
求和设计,不仅便于交流和揣摩,还可减少返工。
14、投入大量时间设计原型为什么能缩短开发周期?
原型确定了基本上需求也就确定了,设计好原型后与用户进行交流,确认后再开发减少返工的频率,降低
返工需要的时间,缩短开发周期。
15、项目中那些事情应该先做,哪些事情应该后做?
轻重缓急指南。以下类型的事情应该先做并应多投入精力:1)领导或用户重视的;2)着急使用的;3)确
定技术路线、验证方案的;4)实用的;5)看得见的;6)投入产出比高的;7)使用频度高的;8)影响验
收或阶段性目标的;9)边界清晰的;10)把握大的。
16、项目处理的不同阶段中那些事情应该侧重?
项目所处阶段不同,工作顺序和需要侧重处理的事情也有所不同。项目前期要优先处理技术验证、需求验
证、方案验证等工作,这类工作处理恰当能避免以后返工;项目中期侧重于务实、能真正为用户解决问题
的工作;项目后期的工作重点围绕结项、完工等工作开展
17、为什么说在开发过程中不能平行用力?
开发时要有侧重点,对于常用的功能做的尽善尽美,而难度大却不常用的功能可以尽量的简化。否则时间
长、工作量大、必要的功能还不一定做好。
18、为什么即使是额外的工作也不能降低要求?
有时候虽然与客户明确了项目边界,但客户仍然要求我们额外做很多功能,为了维护客户关系及公司口碑,
我们不能完全不做超出项目范围的工作,但这些工作必须是可预期的、可控的,对于那些一旦沾上就没完
没了的工作,一定要警惕。我们因为帮客户处理了一些额外的工作,影响了项目范围内的部分工作,客户
会认为我们没有尽责,也就是说,不该我们做的我们做的再好,在客户心里也无法抵消我们该做的没做好
留下的坏印象。另外,我们不能幻想额外的工作可以降低标准,客户不会记得这是额外的工作,甲方领导
和最终用户更不会了解情况,所以,不管是不是额外的工作,客户对我们要求的标准是一样的,一旦我们
做不好,同样会留下坏印象。
19、为什么分外的工作不能冲抵分内工作?
因为验收着按照合同验收,口头上的额外的工作无法冲抵合同内的功能的要求,分外的工作不在合同之内。
20、为什么技术含量高的并不一定是重要工作?
要抓住用户真正需要的功能,并不是技术高就一定实用。如手机的指纹识别和通话功能。
21、什么是 baseline(边界)?
项目边界是界定项目所有需要完成的工作,明确了项目的目标和主要的可交付物。如果不能有效的控制项
目的范围,将会带来许多严重问题,比如:没有明确定义的工作不能有效执行、盲目扩大范围会带来工期
延误甚至影响项目预算。所以,我们在做项目的时候,第一件事就是要明确项目的范围,确认需求边界,
不能敞着口干。除了要明确的项目的整体范围之外,每项功能的范围也应该明确。
22、什么是体外循环?
不管实现过程,只在乎结果的。如超市管理系统,采购作为一个过程在体外循环。
23、为什么说进度的估计总是偏乐观?
对需求理解不清楚,用户不断提出新问题,在需求调研中没有做好。
24、为什么纯编码的时间往往很短?
需求理解不清楚,存在大量的返工,浪费时间;测试,bug
25、什么是帕肯森定律?(拖延)
不管给你多少时间都要拖到最后时间才完成。
26、里程碑对进度的控制有什么用?
里程碑。里程碑指的是项目进展过程中的标志性事件,设置里程碑不仅有利于提高对整体进度的把控精度,
还有能给团队带来成就感、提高团队士气、提高工作效率等作用。
27、为什么合同越具体对开发方越有利?(2016 年秋考了)
合同的解释权在甲方,开发方是乙方。合同规定了的肯定要做,不写具体客户会不断要求新功能,成本高。
合同不明确,可能项目结果有出入,很难顺利验收,大量返工。一开始写具体,那么就有法可依。
28、签字有哪些作用?
1)促使用户认真思考;2)避免双方理解不一致;3)避免遗忘;4)推动用户工作。然而在实际工作中,
找用户签字是很困难的,这通常是由这样几个原因造成的:1)用户不了解或不理解签字的内容;2)用户
对签字的内容不认可、不满意;3)用户虽然了解、也认可签字的内容,但是不愿意负责任。
29、编程使用缩排格式的好处。
代码清晰,成功率高,便于代码的查看和找错
30、变量命名具有明确的意义和自解释性对程序的好处。(2016 年秋考了命名规则)
可读性高,可以帮助思考;修改;便于沟通交流。
31、固定编程风格的好处。
失误率低,搜索方便。
32、注释是否越多越好?
不是,在特殊意义的地方,非常规的地方,大段落加注释。
33、什么是主题句,主题句有什么作用?
在规范的文档中,每一个段落都应该有一个主题句,也就是段落大意。我们梳理文档结构的时候,要把段
落大意梳理出来。主题句相当于一个小目录,只是由于字数偏多,在格式上一般不设置为目录而已。实际
上目录和主题句能完整的表达文档的大意,段落只是更详尽的阐述。主题句一般放在段落的开头处,之后
的论述是对主题句的支撑。
34、为什么写文章要先梳理好文档结构?
写文档时要先设计好结构。文档的结构主体一般包括目录、章节、段落、主题句。搭好结构之后,再逐步
的补充内容。写文档是一个逐步细化、逐步求精的过程。
35、谈谈对写文章时 1 要点 2 结构 3 内容的理解。
先确定要写文章的主体要点,然后列出文章的结构框架,对于结构中每一块进行实际内容的填充细化。
36、写文档时为什么要考虑阅读者的知识背景?
很多人在写文档时不对专业知识进行交代,直接用专业的表达方式来写关键内容,由于读者不具备专业的
背景知识或没有从业相关工作,他们并不一定能看懂。因此,我们写文档,尤其是写关键内容时,一定要
考虑读者的知识背景,尽量用他们能看懂的语言来描述,或者提前对专业知识进行解释。
37、为什么美化的投入产出比最高?(2016 年秋考了)
市场上许多商家都非常重视包装带来的用户体验。对软件来说,在不增加系统功能的前提下,对系统画面
进行美化可以快速提升客户对系统的印象。昨晚界面这个“壳“后适当美化再跟用户交流,有利于用户理
解我们的设计,反之会影响用户的情绪以及对待交流的认真程度。
38、为什么说一图抵万句?
当前的社会节奏很快,很少有人会耐心阅读大篇文字,而图形则很容易吸引读者眼球。因为图形传达的信
息量大、阅读起来使人感觉舒服。
39、美化的技巧有哪些?
颜色:切忌黑色、纯色,要浅、淡、明快
表格:表格线颜色改为淡色,勿用黑色
留白:不要让整个界面显得太慢太挤
山寨:借用其他比较美观的界面设计方式
字体:灰色比黑色好,尽量用 5 号字体显秀气
整体:要显得小、轻、齐
插图:放些美观的图片
40、为什么怎么强调美化都不为过?(同 37)
市场上许多商家都非常重视包装带来的用户体验。对软件来说,在不增加系统功能的前提下,对系统画面
进行美化可以快速提升客户对系统的印象。每个软件开发公司都有美工或者兼职美工就是这个道理。所以
说美化在软件设计中投入产出比最高。
2016 年秋考了两道 HTML5 的问题(具体记不清了,主要是有哪些改进和优势)
还有 Hibernate 比 jdbc 的优势;Struct2 比 Servlet/Jsp 的优势;GET/POST 区别
二、简答题:
1、MSF 小组模型成功的原则。
六条:成员平等;共识前景;产品意识;零缺陷意识;客户中心意识;主动学习意识
2、在大项目和小项目中的伸缩原则。
为小项目缩小:虽然小组模型由六个角色组成,但并不意味着要求至少六个人。关键在于 6 个角色在项目
中都要有人承担。不过某些角色同时由一个人承担可能会导致很大的风险,特别是开发,不应该和其他角
色混同在一起。
为大项目伸展:扩充小组模型有两种方法:一是按角色职能扩充,二是按产品特征扩充。这两种方法并不
排斥,有时混用更有效。
3、简述产品经理的主要活动。
(1)扮演客户推动小组;⑵扮演小组推动客户;⑶管理客户的期望;⑷开发、维护和实施业务用例;⑸推
动特征的识别和确定优先级;⑹开发、维护和实施通信计划
4、版本化在过程模型中的作用
(1)可封闭项目的问题;(2)鼓励连续渐增式交付特征;(3)有利于管理项目中不确切和易变化的部分;
(4)能以最短时间上市;(5)小组成员看到多版本发布计划,增强了对可移动目标的信心;(6)能及时
得到反馈信息。
5、MSF 过程模型的描述。(3 个图)(2016 年秋考了,要求画图)
MSF 过程模型建立了工程中各种活动的顺序,包含四个主要的里程碑,每个里程碑都是一个阶段的终结点。
面向客户的里程碑,而不是面向开发的里程碑。每个里程碑是项目组重新校准客户期望值的同步点
(1)预想和构思阶段:一旦一个新产品吸引了大家的兴趣并得到了允许构建的批准后,项目组开始集中起
来定义产品。前景描述文档清晰地阐明了产品或服务的最终目标,并提供了明确的方向。
(2)设计阶段:项目设计包含功能规定文档、每种角色职能组的计划组合和时间进度安排。在项目设计核
准里程碑上,客户和项目组在要交付的内容上及如何进行构建达成一致。
(3)开发阶段:经过核准的功能规定和项目计划提供了开始开发的基准线。
(4)稳定阶段:集中注意力于寻找错误和修改错误,所以测试活动成为主要的工作。在产品发布里程碑,
产品正式转交给操作和支持组。
6、风险的缓解策略。
(1)化解:抽掉风险可能发生的条件;抽掉风险发生后产生影响的条件,把风险发生的概率或后果降
低到一个可接受的范围内,如对需求变更时让用户签字。
(2)转移:设法将风险的后果连同责任转移到他方身上,比如将有风险的工作外包出去
(3)避免:排除风险的起源或风险发生的条件,如遇到技术风险时,我们坚持不用这个技术而
改用成熟的技术。
7、风险管理模型。
8、 与其他模型区别(瀑布,螺旋)(2016 年秋考了)
(1)瀑布模型使用里程碑作为整个过程管理中的转换或评估点,阶段分明,必须将当前阶段的任务完成后,
才可以进行下一阶段的任务。每阶段需经过评审。它的优点是过程概念清晰,便于管理。适用于一开始就
能非常清楚地描绘出项目的需求,并且需求不会发生变化的项目。
(2)螺旋模型没有所谓的里程碑,对软件按周期不断地重复构建,多次迭代对项目需求不断的精练和对项
目不断的评估,每一次计划后又重新考察风险。反复一圈,对本产品的认识就加深一步,产品就愈发完善。
(3)过程管理模型将瀑布模型和螺旋模型最好的方面集中在一起,一方面通过采用瀑布模型基于里程碑计
划的方法,提高了项目的可预测性。另一方面通过采用螺旋模型,获得客户的反馈和创造性。
9、为什么风险中采取主动态度?
风险无处不在,贯穿于项目的整个生命周期中,任一环节没控制好风险都可能导致失败。采取主动态度,
做好全面的风险分析和风险管控可以帮助我们顺利开展工作、减少损失。
10、过程管理模型以及进度资源特征(互异三角形)(2016 年秋考了)
最优的
有限定的
可接受的
资源 可寻找最小费用策略 寻求不超支的策略 实报的费用,资源有出处,可接受
进度 可设置及早上市策略 定死时间做出时间框 认定产品在某个时间不能上市,此
后可接受
特征 以最大化特征数上市 只以最基本特征上市 达不到预期特征个数,通过项目互
易成为可接受的
三、有一道 10 分的大题,没看懂,是关于规约的问题,最后一节课的时候认真听听老师是怎么说的。
四、设计(分值很高,但是每个小题分值都不高)
指定一个场景做设计(2016 年秋是网上订餐系统):(以下都考了)
1、 写出所有想到的术语(2 分)
2、 列出可能使用系统的角色(2 分)
3、 找到三个主要对象以及主要属性和动作(2 分)
4、 把系统分为 2 期来设计
5、 找一个功能使用体外循环来简化
6、 写出每期开发的里程碑
7、 写出开发中存在的风险以及解决措施
8、 尾气中重要角色设计三个主要的功能操作的主界面
9、 找到两个功能描述用例,画出界面图(6 分)
10、
11、
12、
13、
找到一个有 3 个入口以上的功能,并列出入口
设计并画出两个界面(第一个体现集成,第二个体现继承,是第一个界面的后继界面)
界面中至少包含一个智能功能
界面体现伴生信息(10、11、12、13 共 6 分)