软件工程概述

第一章软件工程概述

  1. 计算机软件概念

       1.1 计算机软件

软件:计算机系统中与硬件相互依存的另一部分,其包括程序,数据,文档

程序:是按事先设计的功能和性能要求,执行的指令序列

数据:是使程序能够正常操纵信息的数据结构

文档:是与程序开发,维护,使用有关的图文材料

        1.2 软件的特点 

(1)抽象性:软件是一种逻辑实体,而不是具体的物理实体。

(2)无磨损:l在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。

(3)维护困难:软件维护困难,无明显的制造过程。

(4)依赖性:l软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。

(5)未摆脱手工艺:软件的开发至今尚未完全摆脱手工艺的开发方式。

(6)复杂性:软件本身是复杂的,相当多的软件工作涉及到社会因素

                                      (实际问题的复杂性,  程序逻辑结构的复杂性)

(7)软件成本相当昂贵

          1.3 软件与硬件的关系 

            1.4 软件分类

(1)基于软件功能划分:系统软件;支撑软件;应用软件

                             工具软件,它帮助软件开发人员开发自己的软件产品

(2)基于软件工作方式划分:  实时处理;分时处理;交互式;批处理

(3)基于软件规模划分: 微型;小型;中型;大型;   甚大型;    极大型

(4)基于软件服务对象的范围划分: 项目软件(定制软件);产品软件

                          项目软件:为特定客户(或少数客户)特定客户(或少数客户)编写

                          产品软件:直接提供给市场,或是为千百个用户服务的软件。

  2.软件的发展

第一阶段:(程序设计阶段)(约1950至1965):

                 【特点】:硬件已通用,软件个体化,软件开发者即使用者。软件只有程序,无文档;

                 【典型技术】:面向批处理、自定义软件

 

第二阶段(程序系统阶段)(1965—1979):

                 【特点】:多道程序设计技术、多用户系统、人机交互式技术、 实时系统和第一代数据库管理系统的出现,使得计算机应 用得到迅速。出现了专门从事软件开发的“软件作坊”。原始的开发与维护方法陷入了极端困境,“软件危机”产生 。

                  【典型技术】:多用户、实时、 数据库、软件产品

 

 

第三阶段(软件工程阶段)(1975—1985):

                  【特点】:微处理器的出现,使计算机大众化。软件开发有了可以遵循的软件工程化的设计准则、方法和标准。

                   【典型技术】:分布式系统、广域网和局域网、低成本的硬件、嵌入“智能”

 

 

第四阶段(1985-至今):

                    【特点】:针对计算机和软件的综合应用

                    【典型技术】:强大的桌面系统、面向对象技术、专家系统、人工神经网络、网络计算机

 

 

 

3 软件危机

         3.1软件危机概念(三方面)

(1)预算,进度,可靠性:软件总是超出预算、落后于进度表,而且不可靠

(2)开发,维护过程中问题:计算机软件的开发和维护过程中所遇到的一系列严重问题。 :

(3)不能完成任务,成本上升:l在软件生产的各阶段都会引入不同程度的错误,造成不能预期完成任务,致使成本上升,甚至导致软件失败

     3.2.软件危机的表现 

(1)软件开发和维护费用急剧上升 

(2)不重视文档资料

(3)产品质量不可靠

(4)软件产品成本高于硬件产品

(5)供需失配

 

           3.3.软件危机的原因

(1)与软件本身的特点有关(逻辑产品,未摆脱手工业)

(2)软件开发和维护的方法不正确

  • 忽视软件开发前期的需求分析;

  • 开发过程没有统一、规范方法论的指导;

  • 文档资料不齐全;

  • 忽视人与人的交流;

  • 忽视测试工作,提交给用户的软件质量差;

  • 轻视软件的维护。

 

4.软件工程与开发准则

软件工程应使用已有的工程规则的理论和模式,来解决所谓的"软件危机"。

         4.1软件工程概念

用工程化的原则解决软件危机。

详细描述为:在软件开发过程中应用工程化原则,解决软件的整体质量较低、最后期限和费用没有保证等问题

IEEE给出了更全面的定义:

IEEE:软件工程是(1)把系统的,规范的,可度量的途径应用于软件开发,运行和维护过程,也就是把工程应用于软件。(2)研究(1)中提到的途径。

          4.2软件工程三要素

(1)工具:软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。
(2)方法:软件工程方法为软件开发提供了 “如何做” 的技术。
(3)过程:软件工程过程定义了:

  • 方法使用的顺序
  •  要求交付的文档资料
  • 为保证质量和适应变化所需要的管理
  •  软件开发各个阶段完成的里程碑

 

 

         4.3软件工程的基本准则

1、严格阶段管理

   这条基本准则意味着,应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。

2、坚持阶段评审

在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误。

3、加强产品控制

当改变需求时(即客户改变要求),为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理

4、采纳新技术

采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。

5、结果应能清楚地审查

工作进展情况可见性差,难以准确度量。为了提高软件开发过程的可见性,和更好的管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准。

6、开发小组的人员应该少而精

    5.软件生存周期

软件生命周期划分为三个时期:计划时期、开发时期、运行时期;

计划时期:划分为问题定义和可行性研究;

开发时期:划分为需求分析、概要设计、详细设计、编码和测试阶段;

运行时期:主要是在运行中完成各类维护。

6.软件生存期模

 

软件开发模型是对软件过程的建模,包括:

  • 瀑布模型

  • 原型模型

  • 增量模型

  • 螺旋模型

6.1瀑布模型

特点:(优)

1.阶段间具有顺序性和依赖性关系

顺序性:必须待前一阶段的工作完成之后,才能进行下一阶段的工作。

依赖性:前一阶段的输出就是后一阶段的输入,只有前一阶段的输出正确,后一阶段的工作才有可能获得正确的结果。

2.推迟实现

实践表明,编码开始得越早完成开发工作所需要的时间反而越长。

3.质量保证

各阶段都必须完成规定的文档。完整、正确、合格的文档不仅是软件开发时期各类人员之间相互通信的媒介,也是软件维护的重要依据。

各阶段结束前都要对所完成的文档进行评审,以便及时发现问题,改正错误。

 

缺点:

(1) 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。

(2) 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,不适应需求变化,从而增加了开发的风险。

(3) 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值