软件的复杂度、一致性、可变性、不可见性等特点决定了软件所固有的困难。
软件的复杂度体现在三个方面。首先,没有两个软件部分是相同的(至少在语句级别上),若有相同的,人们会把它们合并成一个供调用的子函数。其次,软件开发面对的是客观世界模型的构建问题;相对于物理学,物理学家可以忽视大量实体内容的描述,仅仅关注诸如质量、速度等非常有限内容的描述,从而大大降低问题的复杂度,而软件工程师却不能这样做。第三,构成软件复杂度的实体及其关系的描述不仅引发了大量学习和理解上的负担,而且随着软件规模的增长,使得团队成员之间的沟通以及管理变得越来越困难,从而使软件的开发逐渐地演变成一场灾难。
对于一致性来说,在大型软件开发中,为保持各子系统之间的一致性,软件必须随接口的不同、时间的推移而变化。这些变化不能被抽象掉,从而又增加了软件的复杂性。
软件处于用户、法律、计算机硬件及其应用领域等各种因素融合而成的文化环境之中。该环境中的因素持续不断地变化着,这些变化无情地强迫着软件也随之变化。
软件是看不见的,当利用图示方法来描述软件结构时,也无法充分表现其结构,从而使软件的复杂度大大超过具有电路图表示的计算机硬件的复杂度,使得人们之间的沟通面临极大的困难。
(简答题)
请从软件的复杂度、一致性、可变性、不可见性等方面介绍软件所固有的困难。
正确答案
答案解析
略
相似试题
(判断题)
软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户的需求不一致,是产生软件危机的唯一原因。
(填空题)
需求分析的困难主要体现在4个方面:问题的复杂性、()、()、需求易变性。
(简答题)
软件复杂性有哪几类?软件复杂性度量模型应遵循哪些基本原则?
(判断题)
划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。()
(简答题)
在某些紧急情况下,软件可能在需求变更请求被批准之前就进行修改。请给出一个修改过程模型,确保需求文档和系统实现不会产生不一致。
(单选题)
软件设计的模块化是对复杂问题进行()
(填空题)
软件工程学的基本原则包括()、()、一致性、确定性等。
(单选题)
在软件开发和维护过程中需要变更需求时,为了保持软件各个配置成分的一致性,必须实施严格的()。
(填空题)
利用调用返回风格软件体系结构设计的软件系统使用的是()策略,其主要思想是将一个复杂的大系统分解为一些子系统,以便降低复杂度,并且增加可修改性。