软件工程作业(答案参考)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程第一次作业
1)软件工程适用范围?
答:软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。
2)软件工程如何控制系统开发的复杂性的?
答:可理解性(understandability)。系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植或重用。
3)以你的经验,举例说明一个成熟的软件通常采用什么方法来适应现实世界的变化的?
答:以猎豹游览器为例,开始软件投入市场公测,软件自带收集错误报告的程式,当遇到问题软件错误,会将相关信息反馈到接受错误信息的服务器,已方便程序员及时发现问题加以修复,修复完成后提供程序更新,循环此法提供软件运行稳定性,另外还有用户反馈的相关功能,对软件的建议也会收集到服务器,按实用性需求程序员可在原有程序上开发调整更适合用户使用的程序。
4)假设某软件公司,能为同一个用户开发两个不同层次的软件:一个层次的软件功能非常强大,在满足用户所有需求的基础上,还能提供大大超过用户需求的其他更多更强的功能;另一个层次的软件仅仅能满足用户需求,但没有提供其他额外的功能。请问如果你是项目负责人,你会选择为客户开发那个层次的软件?
答:我会选择仅仅满足用户需求的软件。因为太多的功能,相对于非专业的人员,在用户体验上可能会造成困扰,太多的功能会导致难以操作。而且功能强大的软件还会给用户费用上带来不必要的投入,软件是以人为本,方便用户工作,达到提高工作效率的目的。若然日后此用户需要更多功能的时候,我们还是可以向其软件公司提供升级功能解决用户需求。
5)协同工作有什么重要性?
答:日常工作中,80%的事项,都需要与同事协作完成、与其他部门协调资源、或者向领导进行请示汇报;80%的工作都处于开放的环境,如特殊请求、突发事件、临时汇报、项目协作、活动组织、意见征集、沟通协调等等,因此,通过柔性协作流程的使用,员工可以很便捷的实现与其他同事的头脑风暴、分工协作、资源整合,并且可以通过自建模板和自建流程的使用,使得很多处于随机和发散状态的工作实现有序化、可跟踪化、可追溯化,实现工作的敏捷性与有效性的统一,简单来说,就是实现员工的工作产生1+1>2的效果。
6 )只要是编程高手,即使是不懂软件工程,也能编出很好的软件。
答:不一定。软件的开发是由需求调研分析、概要设计、详细设计、编码、测试及用户体验反馈等组成的。所以只是懂得编码编程其中一部分不一定能编出很好的软件。
7 )只要拥有一套讲述如何开发软件的书籍,并了解了书中的标准与示例,就可以解决软件开发中遇到的任何问题。
答:好的参考书无疑能指导我们的工作。充分利用书籍中的方法、技术和技巧,可以有效地解决软件开发中大量常见的问题。但实践者并不能因此依赖于书籍,这有如下两个原因。
(1)在现实中,由于工作条件千差万别,即使是相当成熟的软件工程规范,也常常无法套用。
(2)软件技术日新月异,没有哪一种标准能长盛不衰。祖传秘方在某些领域很吃香,而在软件领域可能意味着落后。
8 )只要拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。
答:不一定。软件的开发是由需求调研分析、概要设计、详细设计、编码、测试及用户体验反馈等组成的。所以只是有最好的开发工具、最好的计算机其中一部分不一定能做出优秀的软件。大公司经常有这样的心态。良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环境的是一群庸人或者是一群勾心斗角的聪明人,难保他们不干出南辕北辙的事情。
9 )软件开发时,如果进度慢,落后于计划,可以增加更多的程序员来解决。
答:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的项目增添新手,可能会更加延误项目,原因如下。
(1)新手会产生很多新的错误,给项目添麻烦。
(2)老手向新手解释工作及交流思想都要花费时间,使实际开发时间更少。
所以精确地制定项目计划很重要,不在乎计划中的进度看起来有多么快,计划要恰如其分。
10 )争议:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?
软件的性能问题;
答:如果开发软件的目的是为了学习或是研究,那么应该设计一种更快的算法。如果该软件已经用于商业,则需谨慎考虑。若换一台更快的计算机能解决问题,则是最快的解决方案。改进算法虽然可以从根本上提高软件的运行速度,但可能引入错误并延误进度。
技术狂毫无疑问会选择后者,因为他们觉得放弃任何可以优化的机会就等于犯罪。类似的争议还有:是买现成的程序,还是彻底由自己开发?技术人员和商业人士常常会有不同的决策。
11)开发一个软件大概需要多少资金、时间,将获得什么效益一般是在哪个阶段确定?相对而言,在哪个阶段与用户交流最多?
答:软件开发并没有说一定需要多少资金、时间,主要开软件的大小开发的难度。软件要获得效益,一般都在软件测试阶段。相对而言,此阶段也是与用户交流最多的。
12)系统分析员主要工作在哪个时期?程序员主要工作在哪个时期?
答:系统分析员主要工作在详细设计阶段,程序员主要工作在程序编码阶段。
13)软件定义时期的三个阶段,各自回答什么关键问题?
答:三个阶段
1.定义阶段:可行性研究初步项目计划、需求分析
2.开发阶段:概要设计、详细设计、实现、测试
3.运行和维护阶段:运行、维护、废弃
14)软件开发时期有几个阶段?各自回答什么关键问题?
答:软件开发一般分为五个阶段:
1.问题的定义及规划
此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。
2.需求分析