思考题一

一、

编码只是软件开发中很小的一部分。软件不仅仅是程序,它是一种工程化的思想,是一个需要通过需求分析、设计、实现、测试、管理和维护的工程产品,需要有分析和处理问题的过程,能够综合地解决问题。程序=数据结构+算法,软件=程序+文档。

软件开发的本质是:1.人的意愿与能力胜于任何的流程、工程实践、方法论。2.需求分析是产品外部行为探索的过程;不是言语扩传的电子流。3.软件架构是持续演进的生命有机体。而软件架构设计,便是要在软件架构这持续演进的过程中,做出最适合的决策;不是将定义、标准答案,当成是软件架构设计。定义,标准答案,只会设计出殭尸型的软件架构。4.唯有协作,才能做出好的产品。

二、软件特点

1、软件是一种逻辑实体;软件是抽象的、无形的,没有物理实体,但可以记录在介质上。

2、软件是人类智力产品。软件是人们通过智力劳动,依靠知识和技术等手段生产的信息系统产品,是人类有史以来生产的高度复杂、高成本、高风险的工业产品。软件涉及人、社会和组织的行为和需求,涉及几乎所有领域的知识。

3、软件开发过程复杂。

4、软件需要长期维护。随着社会及技术的变化进步,人的需求、社会的行为规范、组织的需求和业务流程、国家的法律等也会发生变化,这些变化都导致需要对既有软件进行修改维护。

5、软件成本昂贵。由于软件应用范围广泛和需求复杂等原因,许多软件往往是一个巨型系统,需要投入大量的人力、物力和财力进行开发。

6、软件可以复制

三、软件危机

软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

软件危机的表现有:

  1. 超出预算时间和成本
  2. 客户对生产出的软件不满意
  3. 软件有残存的错误
  4. 软件产品不可维护
  5. 文档资料不完整
  6. 软件生产率的提高跟不上硬件的发展速度

产生软件危机的原因主要有两个方面:

1.与软件本身的特性有关。与硬件不同,软件是计算机系统的逻辑部分,而不是物理部分。软件样品是产品,试制过程也是生产过程。软件不会因使用时间过长而“老化”或“磨损”;在编写程序代码并在计算机上运行之前,很难测量软件开发过程的进度和评估软件质量。因此,软件开发过程的管理和控制是非常困难的。 

2.软件开发人员的弱点。软件产品是人们思考的结果,所以软件产品的水平最终在很大程度上取决于软件人员的教育、培训和经验积累。合作开发大型软件通常需要很多人,即使对于一个软件开发人员深入研究领域的应用程序,所以你需要用户和软件和软件开发人员之间的沟通,不可避免地发生在这个过程中理解的差异,导致后续错误的设计或实现。

解决方法:

人们开始开发过程中软件开发和软件工具的使用,协助软件项目管理和生产技术,人们还将使用在软件生命周期的所有阶段的软件工具有机地集合作为一个整体,形成可以支持软件开发和维护的整个过程的集成软件支持环境,以解决软件危机从管理和技术两个方面的问题。

此外,人工智能和软件工程的结合在20世纪80年代后期成为一个活跃的研究领域。基于程序转换、自动生成和可复用软件的新软件技术的研究取得了一定的进展。在软件工程理论的指导下,发达国家建立了较为完整的软件产业生产体系,形成了较强的软件生产能力。软件标准化和可重用性受到业界的高度重视,在避免劳动重复使用和缓解软件危机方面发挥了重要作用。

四、软件工程的要素

软件工程包括三个要素:方法、工具和过程。 软件工程方法为软件开发提供了“如何做”的技术。 它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。

 

posted @ 2021-07-03 15:25  abada  阅读(117)  评论(0)    收藏  举报