软件工程作业

发布于 2021-03-14  184 次阅读


第一章 软件学工程概论
1.理解软件的概念,回答“软件≠程序”,请解释这句话为什么是正确的?
答:软件是包括程序、数据、文档、服务的一个完整集合,它是计算机系统中与硬件相互依存的另一部分。而程序是按事先设计的功能和性能要求执行的指令序列,是实现软件的基本功底。因此,“软件≠程序”是正确的

4.什么是软件危机?它有哪些典型表现?如何消除软件危机?
答:第一问答案:
软件危机是指在软件开发、维护过程中所存在的一系列严重、或致命的问题。目前,几乎所有软件都不同程度地存在这类问题。
第二问答案:
软件危机的主要典型表现与产生的原因有以下几方面:
1.对软件开发成本和进度的估计常常很不准确。拖期,项目管理经验欠缺。

  1. 软件不能符合用户的要求。用户对“已完成的”软件系统不满意的现象经常发生。模糊的需求、闭门造车、忙于编程,仓促上阵。
  2. 软件产品的质量往往靠不住。可靠性和质量保证欠缺,缺少测试。
  3. 软件常常是不可维护的。设计死板,没有整体考虑。
  4. 软件通常没有适当的文档资料。缺少设计资料、难以维护,写文档嫌麻烦。
  5. 软件成本在计算机系统总成本中所占的比例逐年上升。软件过于庞大,成本过高。
  6. 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。跟不上计算机和软件技术的发展速度,技术落后。
    8.开发者只专注于技术、风险意识薄弱。
    第三问答案:
    消除途径主要有:
    1、理解软件的概念:软件是程序、数据及相关文档的完整集合。
    2、应该推广使用在实践中总结出来的开发软件的成功的技术和方法
    3、应该开发和使用更好的软件工具。
    4、软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。所以要解决软件危机中的问题,既要有技术措施(方法和工具),又要有必要的组织管理措施,必须用工程化的方法管理软件开发过程,用先进的软件开发技术进行软件开发,从管理和技术两方面保证软件开发的质量。

5.什么是软件工程? 什么是软件工程环境?
答:第一问有5个答案,回答其中之一都算正确:
①软件工程是开发、运行、维护和修复软件的系统方法。
②建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。
③所谓软件工程,提倡的是一种软件开发中的系统思想的具体实现,是一门科学,也被称为是软件产业中的“软”科学。
④IEEE:软件工程是开发、运行、维护和修复软件的系统方法,是一门工程学科,即采用工程的概念、原理、技术和方法来开发和维护软件。
⑤软件工程是把系统的、 有序的、 可量化的方法应用到软件的开发、 运营、和维护上的过程。
第二问答案:
软件工程环境(Software Engineering Environment),是包括方法、工具和管理等多种技术的综合系统。其设计目标是简化软件开发过程,提高软件开发质量和效率。

6.简述软件开发的基本策略,为什么要进行软件优化?
答:1. 软件复用:把复用的思想用于软件开发,称为软件复用。采用复用思想可简化软件开发过程,提高软件质量,并降低总的开发工作量与维护代价。

  1. 分而治之:俗语“分而治之、各个击破”,降低系统的复杂性
  2. 软件优化与折中:不断改进软件中的算法、数据结构和程序组织,实现整体质量的最优。为了让软件跑的快起来,提高开发速度,提高软件质量必须对开发好的软件系统进行优化。

7.什么是软件生命周期?软件生命周期主要包括哪些阶段?怎样划分阶段?
答:
1、软件生命周期又称作软件生存周期、系统开发生命周期,是指从提出开发软件产品开始,直到软件报废为止的全过程。
2、主要包括软件定义、开发和运行三个阶段,每个阶段又可进—步划分成若干个子阶段。
3、划分方法:
定义阶段:是对软件进行一个初步的分析,确定软件要完成的总目标、制定软件开发计划、完成软件的可行性分析,并确切回答系统要解决的问题是什么?
开发阶段:设计和实现在前一个时期定义的软件,主要体现为系统设计(总体设计、详细设计)和系统实现。
运行阶段:测试校验、交付与维护阶段的主要任务是使开发出的软件持久地满足用户的需要,直到寿命终止。
通常,一个阶段的工作要在前一个阶段工作完成并审查通过之后,才能够开始进行。而这一阶段的工作也恰恰是为了能够延续并具体实现前一个阶段所提出的方案。

9.常用的软件开发模型有几个?都有什么特点?说明每种模型的适用范围?
答:常见的软件工程模型有:瀑布模型、快速原型模型、演化模型、螺旋模型、喷泉模型等。
瀑布模型:文档驱动。适合在软件需求比较明确、开发技术比较成熟、工程管理比较严格的场合下使用。
快速原型模型:原型驱动。用户时刻参与,便于交流,比较适合大型的、复杂的软件系统。
演化模型:分阶段迭代开发。演化模型的特点是通过逐步迭代弄清软件需求,而建立软件系统,在一定程度上减少了软件开发活动的盲目性。其适合场合为需求没有或者难以完整定义的软件,注意与原型模型之间的区别。
螺旋模型:风险+原型驱动。主要用于大型软件的开发。
喷泉模型:用例驱动、迭代开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。


擦肩而过的概率