前言:
感谢大佬们的不求回报的分享,
感谢好人们的百忙之中的帮助。
爱的传递,希望能帮到更多的人。
软件工程学概述:
- 为了更有效地开发和维护软件,软件工程者在20世纪60年代后期开始认真研究消除软件危机的途径,从而逐渐形成一门新兴的工程学科——计算机软件工程学(通常简称为“软件工程学”)。
1.1 软件危机…………P1
- 软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重问题。
- 软件危机的典型表现:
- 对软件开发成本和进度的估计常常很不准确。
- 用户对“已完成的”软件系统不满意的现象经常发生。
- 软件质量往往靠不住。
- 软件常常是不可维护的。
- 软件通常没有适当的文档资料。
- 软件成本在计算机系统总成本中所占的比例逐年上升。
- 软件开发生产率提高的速度,远远比不上计算机应用速度普及及深入的趋势。
- 产生软件危机的原因:
- 一方面与软件本身的特点有关。
- 另一方面和软件开发与维护的方式不正确有关。
- 对问题和目标的正确认识是解决任何问题的前提和出发点。急于求成,仓促上阵,对用户要求没有正确的认识就匆忙着手编写程序,这就如同不打好地基就盖高楼一样,最终必然垮台。
- 编写程序所需的工作量只占软件开发全部工作量的10%~20%。
- 一个软件产品必须由一个完整的配置组成,主要包括:程序、文档、数据等成风。
- 软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。
- 软件是程序、数据、相关文档的完整集合。
- 程序是能够完成预定功能和性能的可执行的指令序列;
- 数据是使程序能够适当地处理信息的数据结构;
- 文档是开发、使用和维护程序所需要的图文资料。
- 1983 年IEEE为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。虽然表面上看来在这个定义中列出了软件的5个配置成分,但是,方法和规则通常是在文档中说明并在程序中实现的。
- 更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。 必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,特别要吸取几十年来人类从事计算机硬件研究和开发的经验教训。
1.2 软件工程…………P5
- 软件工程具有的本质特性:
- 软件工程关注于大型程序的构造。
- 软件工程的中心课题是控制复杂性。
- 软件经常变化。
- 开发软件的效率非常重要。
- 和谐合作是开发软件的关键。(纪律是成功完成的一个关键)
- 软件必须有效的支持它的用户。
- 基本原理:(7条,缺一不可的最小集合)
- 用分阶段的生命周期计划严格管理。
- 坚持进行阶段评审。
- 实行严格的产品控制。(主要实行基准配置管理)
- 采用现代程序设计技术。
- 结果应能清楚审查。
- 开发小组的人员应该少而精。
- 承认不断改进软件工程实践的必要性。
- 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为:方法学(也称范型)
- 软件工程方法学包含3个要素:方法、工具和过程。
- 方法:是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;
- 工具:是为运用方法而提供的自动的或半自动的软件工程支撑环境;
- 过程:是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
1.3 软件生命周期……P11
- 软件生命周期由 :软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。
- 软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析 。
- 开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计、详细设计、编码和单元测试、综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。
- 维护时期的主要任务是:使软件持久地满足用户的需要。具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。通常对维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。
注:
- 软件设计的一条基本原理就是:程序应该模块化。
1.4 软件过程…………P14
- 瀑布模型
特点:
- 阶段间具有顺序性和依赖性。
- 推迟实现的观点。
- 质量保证的观点。(软件工程的基本目标是优质、高产)
- 快速原型模型
- 增量模型
- 螺旋模型
扫描二维码关注公众号,回复: 10304896 查看本文章
- 喷泉模型(是典型的面向对象的软件过程模型之一)
- Rational 统一模型
RUP总结了多年商业化验证的6条最有效的软件开发经验,这些经验被称为“最佳实践”。
》
- 迭代式开发。
- 管理需求。
- 使用基于构件的体系结构。
- 可视化建模。
- 验证软件质量。
- 控制软件变更。
- RUP软件开发生命周期。
注: RUP软件开发生命周期是一个二维的生命周期模型,如图1.10所示。图中纵轴代表核心工作流,横轴代表时间。
(1)核心工作流
- RUP中有9个核心工作流,其中前6个为核心过程工作流程,后3个为核心支持工作流程。下面简要地叙述各个工作流程的基本任务。
- 业务建模:深人了解使用目标系统的机构及其商业运作,评估目标系统对使用它的机构的影响。
- 需求:捕获客户的需求,并且使开发人员和用户达成对需求描述的共识。
- 分析与设计:把需求分析的结果转化成分析模型与设计模型。
- 实现: 把设计模型转换成实现结果(形式化地定义代码结构;用构件实现类和对象;对开发出的构件进行单元测试;把不同实现人员开发出的模块集成为可执行的系统)。
- 测试: 检查各个子系统的交互与集成,验证所有需求是否都被正确地实现了,识别、确认缺陷并确保在软件部署之前消除缺陷。
- 部署:成功地生成目标系统的可运行的版本,并把软件移交给最终用户。
- 配置与变更管理:跟踪并维护在软件开发过程中产生的所有制品的完整性和一致性。
- 项目管理:提供项目管理框架,为软件开发项目制定计划、人员配备、执行和监控等方面的实用准则,并为风险管理提供框架。
- 环境:向软件开发机构提供软件开发环境,包括过程管理和工具支持。
工作阶段
- RUP把软件生命周期划分成4个连续的阶段。每个阶段都有明确的目标,并且定义了用来评估是否达到这些目标的里程碑。每个阶段的目标通过一次或多次迭代来完成。
- 初始阶段:建立业务模型,定义最终产品视图,并且确定项目的范围。
- 精化阶段:设计并确定系统的体系结构,制定项目计划,确定资源需求。
- 构建阶段:开发出所有构件和应用程序,把它们集成为客户需要的产品,并且详尽的测试所有功能。
- 移交阶段:把开发出来的产品提交给用户使用。
- 敏捷软件开发宣言
- 个体和交互胜过过程和工具。
- 可以工作的软件胜过面面俱到的文档。
- 客户合作胜过合同谈判。
- 响应变化胜过遵循计划。
- 极限编程(XP)
客户作为开发团队的成员。
使用用户素材。
短交付周期。
验收测试。
结对编程。
测试驱动开发。
集体所有。
持续集成。
可持续的开发速度。
开放的工作空间。
及时调整计划。
简单的设计。
重构。
使用隐喻。
1.5 小结………………P31
- 面向对象方法 = 对象 + 类 + 继承 + 用消息通信
End :
如果觉得有收获,就请我喝杯咖啡吧!