软件工程课程部分习题

导读

软件工程导论。 张海潘、牟永敏 著
第一章 课后部分习题

习题一:

1.什么是软件危机?他有哪些典型表现?为什么会出现软件危机?

  • 软件危机:
    是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
    主要包含2方面问题:如何开发软件;如何维护数量不断膨胀的已有软件。

  • 典型表现:
    对软件开发成本和进度的估计常常不准确。
    用户对“已完成的”软件系统不满意的现象经常发生。
    软件产品的质量往往靠不住。
    软件常常是不可维护的。
    软件通常没有适当的文档资料。
    软件成本在计算机系统总成本中所占的比例逐年上升。
    软件开发生产率的提高,远远跟不上计算机应用迅速普及深入的趋势。

  • 原因:
    主要有2个方面: 与软件本身有关; 在开发与维护过程中的不正确方法有关。
    软件维护通常意味着改正或修改原来的设计,这就在客观上使得软件较难维护。
    目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因。

    错误的认识和做法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视了软件维护。

    急于求成,仓促上阵,对用户要求没有正确认识就匆忙开始着手编写程序,这就如同不打好地基就盖高楼一样,最终必然垮台。

    一个软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数据等成分。必须清除只重视程序而忽视软件配置其余成分的糊涂观念。

    轻视维护是一个最大的错误。

3. 什么是软件工程?他有哪些本质特性? 怎样用软件工程消除软件危机?

  • 软件工程:
    是指导计算机软件开发和维护的一门工程学科。1968年第一届NATO会议上指出软件工程的目标是 经济地开发出高质量的软件,而且强调了软件工程是一门工程学科,他应该建立并使用完善的工程原理。
    包括技术和管理两方面的内容,是技术和管理紧密结合所形成的工程学科。
  • 本质特性:
    软件工程关注与大型程序的构造。
    软件工程的中心课题是控制复杂性。
    软件经常变化。
    开发软件的效率非常重要。
    和谐地合作是开发软件的关键。
    软件必须有效地支持他的用户。
    在软件工程领域中通常由具有一种文化背景的人 替 具有另一种文化背景的人创造产品。
  • 怎样消除:
    软件工程的7条基本原理:
    用分阶段的生命周期计划严格管理。
    坚持进行阶段评审。
    实行严格的产品控制。
    采用现代程序设计技术。
    结果应能清楚地审查。
    开发小组的人员应该少而精。
    承认不断改进软件工程实践的必要性。

4. 简述结构化范型 和 面向对象范型的要点,并分析他们的优缺点。

  • 结构化范型:
    也叫传统方法学,生命周期方法学。
    是吧软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。 自顶向下的顺序完成各个阶段的任务。
    • 优点:
      每个阶段的任务相对独立,便于不同人员分工协作,从而降低了整个软件开发工程的困难程度。
      是软件开发的全过程以一种有条不紊的方式进行,保证了软件的质量,特别是提高了软件的可维护性。
    • 缺点:
      维护起来仍然很困难。
      当软件规模庞大,或者对软件的需求是模糊的或会随时间变化而变化的时候,使用传统方法学往往不成功。
      要么面向行为,要么面向数据。
  • 面向对象范型:
    尽量模拟人类习惯的思维方式,是开发软件的方法与过程 尽可能接近 人类认识世界、解决问题的方法与过程,从而使 描述问题的问题空间(问题域) 和 实现解法的解空间(求解域) 在结构上尽可能的一致。
    主动地多次反复迭代的演化过程。
    对象: 把对象作为融合了数据 及在数据上的操作行为的统一的软件构件。
    类: 把所有对象都划分成类。 类是对 有着相同数据和相同操作的一组相似对象的定义
    继承:类的层次结构的系统。 父类与子类(或者说 基类与派生类)
    封装:对象彼此间能通过发送消息互相联系。对象的所有信息不能从外界直接访问。
    • 优点:
      促进了软件重用。
      最后都是由很多小的对象组成,降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作。

6. 什么是软件过程,他与软件工程方法学有何关系。

  • 软件过程:
    是为了获得高质量软件所需要完成的一系列任务的框架,他规定了完成各项任务的工作步骤。
    软件过程必须科学、有效。
  • 软件工程方法学:
    在软件生命周期全过程中使用的一整套技术方法的集合。
    包含3个要素: 方法、工具和过程。
  • 软件工程方法学 里 包含了 软件过程。

7. 什么是软件生命周期模型? 试比较瀑布模型、快速原型模型、增量模型、螺旋模型的优缺点,说明每种模型的使用范围。

  • 软件生命周期模型:
    生命周期模型简洁地描述软件过程,规定了把生命周期划分成哪些阶段及各个阶段执行顺序。
    可划分为8个阶段
    问题定义
    可行性研究
    需求分析
    总体设计
    详细设计
    编码和单元测试
    综合测试
    软件维护

  • 瀑布模型:
    优点: 它是规范的、文档驱动的方法。
    缺点: 最终开发出的软件产品可能并不是用户真正需要的。
    适用范围: 规模很小的项目。

  • 快速增长模型:  是为了克服瀑布模型的缺点而提出来的。
    优点: 不带反馈环的,软件产品的开发基本上是线性顺序进行的。

  • 增量模型:  也称为渐增模型。
    优点: 使投资获得明显回报和交易维护。
       能在较短时间内向用户提交可完成部分工作的产品。
        逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,
        从而减少一个全新的软件可能给客户组织带来的冲击。
    缺点: 在吧每个新的增量构建集成到现有的软件体系系统结构时,
     必须不破坏原来已经开发出的产品。
        要求软件具有开放的结构。
       本身是自相矛盾的,除非开发人员有足够的技术能力协调好这一明显的矛盾,否则用增量模型开发出的产品可能并不令人满意

  • 螺旋模型:   是风险驱动的一种模型。
    优点: 维护只是模型的另一个周期,在维护和开发之间并没有本质区别。
    缺点: 只有在开发人员具有风险分析和排除风险的经验及专门知识时,
       使用这种模型才会获得成功。
    适用范围:适合内部开发的大规模软件项目。

全部评论

相关推荐

最近又搬回宿舍了,在工位坐不住,写一写秋招起伏不断的心态变化,也算对自己心态的一些思考表演式学习从开始为实习准备的时候就特别焦虑,楼主一开始选择的是cpp后端,但是24届这个方向已经炸了,同时自己又因为本科非92且非科班,所以感到机会更加迷茫。在某天晚上用java写出hello world并失眠一整晚后选择老本行干嵌入式。理想是美好的,现实情况是每天忙但又没有实质性进展,总是在配环境,调工具,顺带还要推科研。而这时候才发现自己一直在表演式学习,徘徊在设想如何展开工作的循环里,导致没有实质性进展。现在看来当时如果把精力专注在动手写而不是两只手端着看教程,基本功或许不会那么差。实习的焦虑5月,楼主...
耶比:哲学上有一个问题,玛丽的房间:玛丽知道眼睛识别色彩的原理知道各种颜色,但是她生活在黑白的房间里,直到有一天玛丽的房门打开了她亲眼看到了颜色,才知道什么是色彩。我现在最大可能的减少对非工作事情的思考,如果有一件事困扰了我, 能解决的我就直接做(去哪里或者和谁吵架等等……),解决不了的我就不想了,每一天都是最年轻的一天,珍惜今天吧
投递比亚迪等公司10个岗位 > 秋招被确诊为…… 牛客创作赏金赛
点赞 评论 收藏
分享
耀孝女:就是你排序挂了
点赞 评论 收藏
分享
一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务