首页 > 编程知识 正文

什么是软件危机?它和软件工程有什么关系?,软件工程解决软件危机

时间:2023-05-06 11:13:45 阅读:200257 作者:4428

第一章 软件危机与软件工程

1.1 软件的定义是什么

计算机软件是与计算机系统操作有关的程序、规程、规则及任何与之有关的文档和数据。

软件的含义 (软件是程序、数据以及文档的完整组合)

      研制了软件设计和生产的方法与工具,从而为“文档加程序”

       • 文档是软件质的部分

       • 程序是文档代码化的表现形式

软件的正确含义:

   1.运行时,能提供所要求功能和性能的指令(Instruction) 或计算机      程序(Program)集合。

   2.程序能满意地处理信息的数据逻辑(data structure)。

   3.程序能满意地按照预定的商业逻辑进行处理。

   4.描述程序功能需求以及程序如何操作和使用所要求的文档(Documents).

1.2 软件危机产生的原因有哪些?

    产生软件危机有二个方面:

    一方面与软件本身的特点有关。

    一方面与软件开发与维护的方法不正确有关。

 

      ① 忽视软件需求分析的重要性。

      ② 忽视软件文档的重要性。

Ø 软件是逻辑部件,开发质量较难评价。

Ø 软件规模庞大,有技术问题,也有管理方法问题。

Ø 早期开发的个体化,忽视需求分析。

Ø 对前期工作不能忽视,提高软件质量的关键。

Ø 严重性:在软件开发的不同阶段修改付出的代价(后期比前期高2-3个数量级),软件维护是极端艰巨复杂的工作(占55%-70%)。

1.3 软件开发环境是由什么组成的?(找不到……可能是《软件工程》第25页的内容)

1.4 软件危机与软件工程的关系

为了解决软件危机,既要有技术支持措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好的开发和维护计算机软件的一门新兴学科。
1.5 软件生命周期包含哪几部分?也就是讲软件开发过程分为哪几个阶段,以及 每个阶段完成的工作(软件生命周期各阶段的基本任务)。

 1.问题定义:“要解决的问题什麽?”在问题定义阶段应提出。

① 问题性质报告② 工 程目标和规模报告③ 对系统的实际用户和使用部门进行访问调查,澄清含 糊不清的地方后得到双方满意的文档。                    

 2.可行性研究:关键问题“对于上一个阶段所确定的问题有行得通的解决办法”

① 确定工程规模和目标 ② 估计系统成本和效益。         

该阶段实际上是一个工程的核心阶段,对双方都是讨价还价的心理战,直接 关系到整个系统研发的成本与利益。

 3. 需求分析:解决的问题“为解决问题,目标系统必须做什麽?”

 系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出 经过用户确认的系统逻辑模型。通常用数据流程图,数据字典和简要的算法表示系统的逻辑模型。

 需求分析阶段必须交出完整准确的系统逻辑模型经用户确认后,再进入下 一个阶段,应防止和克服急于着手进行具体设计。

 4. 总体设计:“应该如何解决这个问题?”,应考虑几种可能的解决方案:

 (1)低成本的解决方案:系统只能完成最少必要的工作,不做额外工作。

(2)中等成本的解决方案:除很好地完成预定的任务,使用方便,而且还有附加的额外功能。

(3)高成本的“十全十美”的系统 :该系统具有用户可能希望有的所有功能和 特点。

5. 详细设计:总体设计以比较抽象概括的方式提出了解决问题的办法,详细设计的任务是把解法具体化。具体的任务是设计出程序的详细规格说明,通常用HIPO图(层次图加输入/处理/输出图)或PDL语言(过程设计语言)描述详细设计结果。

6. 编码和单元测试:程序员根据系统要求,选定开发平台把详细设计的结果翻译成选定的语言书写程序,并仔细测试编写的每个模块。

7.综合测试 :通过各种类型的测试使软件达到预定的要求。

             集成测试:根据软件结构,把模块按某种选  

                      定的策略装配起来, 装配过程中对

                      程序进行必要测试。

  基本

  测试

             验收测试:按照规格说明书的规定,对目标系

                       统进行验收。

8.软件维护:改正性维护、适应性维护、完善性维护、预防性维护

1.6 软件生命周期模型有几种(特点)?类型软件?

① 瀑布模型

 

特征:活动的输入来自上一活动的输出;完成该项活动的内容;活动的输出

传给下一活动;对活动的实施工作进行评审。

适合:需求明确的任务。

优点:以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,

      从而保证了软件产品及时交付,并达到预期的质量要求。

缺点:成品时间长;缺乏灵活性。

 

② 快速原型模型

 

快速原型模型是为了克服瀑布模型的缺点而提出的,它通过快速构建一个可在计算机上运行的原型系统,让用户试用该原型系统并收集用户反馈意见,获取用户真实需求。(用户界面通常是快速原型的一个关键部分)

  原型法的显著特点是,允许用户在系统开发过程中完善其对系统的需求,系统开发时间短、成本低,有效的发挥用户和开发人员的密切配合作用,更好地体现了逐步完善、逐步发展的原则。

    主要困难是,由于频繁的需求变化使开发进程难于管理。另外,技术上必须要求处理好原型的集成问题,系统支撑结构和共享数据库结构的规范问题等。

③ 螺旋模型

螺旋模型的基本思想:使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。

螺旋模型的优点:对可选方案和约束条件的强调有利于已有软件的重用,也有利于把软件质量作为软件开发的一个重要目标;减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险。

螺旋模型主要适用于内部开发的大规模软件项目


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。