当前位置:文档之家› 软件工程作业(答案参考)

软件工程作业(答案参考)

软件工程作业(答案参考)
软件工程作业(答案参考)

软件工程第一次作业

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.需求分析

在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件项目的开发打下良好的基础。“唯

一不变的是变化本身”,同样软件需求也是在软件爱你开发过程中不断变化和深入的,因此,我们必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。

3.软件设计

此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计一般分为总体设计和详细设计。还的软件设计将为软件程序编写打下良好的基础。

4.程序编码

此阶段是将软件设计的结果转化为计算机可运行的程序代码。在程序编码中必定要制定统一、符合标准的编写规范。以保证程序的可读性、易维护性。提高程序的运行效率。

5.软件测试

在软件设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。测试方法主要有白盒测试和黑盒测试。

15)软件体系结构最早是在哪个阶段决定的?

答:最早在软件设计阶段决定的。此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计一般分为总体设计和详细设计。还的软件设计将为软件程序编写打下良好的基础。

16)详细设计与程序编写阶段有什么样的密切联系?

答:详细设计与程序编写阶段的联系就比如详细设计是楼房住框架,程序编写是室内装修。先有详细设计再有程序编写。

17)“软件测试是为了验证系统的正确性”这句话对吗?

答:不正确.

18)软件维护有那几种?各有什么功能?

答:软件维护一般分为适应性维护、改正性维护、完美性维护和预防性维护。适应性维护即修改软件以适应环境的变化;改正性维护也就职诊断和改正在应用过程中发现的软件错误;完善性维护即根据用户的要求改进或扩充软件使它更加完善;预防性维护即修改软件为将来的维护活动预先做准备。

19)你是否开发过大型系统,开发模式是什么?在程序设计中使用过何种语言?

答:未曾开发过系统,具体不清楚。程序中曾学过C语言与汇编语言,但都不太记得了。

20)如末开发型系统,你认为大型信息管理系统最佳的开发模式是什么?

答:我认为是原型模式,瀑布模式与渐增模式均假设在项目开始时,用户需求能被清楚完整地描述。但在许多情况下。这假设是不切实际的,因为用户经常无法把需求清楚完整地表达,有时虽能够清楚表达,但开发人员可能没有足够的经验与知识完全了解用户的需求,也可能一时无法找出问题的解决方法。

原型模式首先针对用户需求比较清楚的部分或开发人员能够掌握的部分,按照分析、设计、实施等步骤速度开发原型。开发过程中,强调以原型作为用户与开发人员沟通的工具,双方通过原型的操作与反馈,以弄清、修改及扩充需求,并以此来修改与扩充原型。上述步骤反复进行,直到系统复合双方约定为止。

相关主题
文本预览
相关文档 最新文档