第一章 软件工程学概论

软件工程导论

第一章 软件工程学概论

1.1 软件危机

1.1.1 定义

软件危机的定义:

​ 是指计算机软件的开发和维护过程中所遇到的一些列严重问题。(几乎所有软件都不同程度地存在这些问题)

软件危机包含两方面的问题:

​ 如何开发软件,以满足软件日益增长的需求

​ 如何维户数量不断膨胀的已有软件

1.1.2典型表现

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

以上只是列举了软件危机的一些明显表现,与软件开发和维户有关的问题远远不止这些

1.1.3产生软件危机的原因

只有两点!!

  • 与软件本身特点有关。

​ ①它是计算机系统中的逻辑部件而不 是物理部件。

​ ②程序是软件的组成部分。程序复杂 性将随着程序规模的增加而呈指数上 升。

​ ③软件本身独有的特点确实给开发和 维护带来一些客观困难

  • 和软件开发与维户的方法不正确有关。

​ ①对用户要求没有完整准确的认识就 匆忙着手编写程序是许多软件开发工 程失败的主要原因之一
​ ②缺乏开发方法
​ ③对软件组成缺乏认识
​ ④维护不规范

发现错误一定要及时修改,下图是需求变动的影响和代价

1.1.4消除软件危机的途径

(1)首先应当对计算机软件有一个正确的认识:“软件就是程序”是错误的观念,事实上,软件是程序、数据及相关文档的完整。

(2)必须充分认识到软件开发不会某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。必须充分吸取和借鉴人们长期以来积累的原理、概念、技术和方法

(3)推广和使用在实践中总结出来的开发软件的成功的技术和方法。

(4)应该开发和使用更好的软件工具

(5)要有必要的组织管理措施

1.2软件工程

1.2.1定义
  • 软件学科的定义:

    ​ 指导计算机软件开发和维护的一门工程学科。

  • 软件工程IEEE给出的定义:

    ​ 软件工程就是 把系统的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程应用于软件。并且研究软件工程的途径。

1.2.2软件工程的本质特征
  1. 软件工程关注于大型程序的构造
  2. 软件工程的中心课题是控制复杂性
  3. 软件经常变化
  4. 开发软件的效率非常重要
  5. 和谐地合作是开发软件的关键(团队)
  6. 软件必须有效地支持它的用户
  7. 在软件工程领域中是由具有一种文化背景的人替代具有另一种文化背景的人创造产品
1.2.3软件工程的基本原理

​ 1、用分阶段的生命周期计划严格管理

​ 2、坚持进行阶段评审

​ 3、实行严格的产品控制

​ 4、采用现代程序设计技术

​ 5、结果应能清楚地审查

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

​ 7、承认不断改进软件工程实践的必要性

1.2.3软件工程方法学三要素

软件工程方法学三要素:
方法、工具和过程

​ 方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;
​ 工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;
​ 过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成 各项任务的工作步骤。

1.2.4传统方法学与面向对象方法学
(1)传统方法学
  • 定义:

    传统方法学也称为生命周期方法学或结构化范型。 它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。

  • 特点:阶段
    这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。 采用这种方法学开发软件的时候,从对问题的抽象逻辑分析开始,一个阶段一个阶段地进行开发。

  • 阶段意识:
    (1)前一个阶段任务的完成是开始进行后一个阶段工作的前提和基础,而后一阶段任务的完成通常是使前一阶段提出的解法更进一步具体化,加进了更多的实现细节。
    (2)每一个阶段的开始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。

阶段意识的优点:
1.把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发工程的困难程度;
2.在软件生命周期的每个阶段都采用科学的管理技术和良好的技术方法,而且在每个阶段结束之前都从技术和管理两个角度进行严格的审查,合格之后才开始下一阶段的工作,这就使软件开发工程的全过程以一种有条不紊的方式进行,保证了软件的质量,特别是提高了软件的可维护性。
3.采用生命周期方法学可以大大提高软件开发的成功率,软件开发的生产率也能明显提高。

阶段意识地位和作用:
1.传统方法学仍然是人们在开发软件时使用得十分广泛的软件工程方法学。
2.如果没有完全理解传统方法学,也就不能深入理解这种方法学与面向对象方法学的差别以及面向对象方法学为何优于传统方法学。

(2)面向对象方法学
  • 定义:
    与传统方法相反,面向对象方法把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。

  • 面向对象方法学4个要点:
    (1) 把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。
    (2) 把所有对象都划分成类(class)。
    (3) 按照父类(或称为基类)与子类(或称为派生类)的关系组织结构
    (4) 对象彼此间仅能通过发送消息互相联系。

面向对象方法学的优势:
1.降低复杂度:
降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作。
2.提高复用性:
对象是相对独立的实体,容易在以后的软件产品中重复使用。
3.提高灵活性:
面向对象方法特有的继承性和多态性,进一步提高了面向对象软件的可重用性。

1.3软件生命周期

1.3.1软件开发的过程

相对独立的实体,容易在以后的软件产品中重复使用。
3.提高灵活性:
面向对象方法特有的继承性和多态性,进一步提高了面向对象软件的可重用性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值