面向对象分析方法
软件的错误是怎样产生的?软件工程的挑战有哪些
- 交付的软件不是用户需要的
- 用户需求的变化
- 风险没有管理
- 无力的团队管理
软件
软件是一种特别的产品,随着规模和复杂性的进步以及应用领域的扩大逐渐形成了工程。
是计算机中与硬件相互依存的另一部分,包括程序、数据和说明文档。
程序是按照设计要求和性能指标设计的指令序列
数据是程序能够正常操纵信息的数据结构
说明文档是用于开发和维护软件程序的各种图文资料。
软件工程
软件工程是软件的工程性方法,涵盖了所有生命周期,并提供了一整套工程性方法来指导软件开发。
软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。
包含:1. 软件开发技术 2. 软件项目管理
软件工程三要素:方法、工具、过程
软件工程应包括的知识(10个):软件需求、软件设计、软件构建、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程工具和方法、软件质量
软件的发展历程经历了哪几个阶段,每个阶段的特点是什么?
-
第一阶段:程序设计阶段
- 个人英雄主义的开发、软件开发就是程序设计、不考虑通用型
- 文档不全
- 只有程序的概念,没有软件的概念。
- 采用汇编语言、机器语言应对计算机性能问题
-
第二阶段:软件设计阶段
- 程序规模增大、需小组协作生产
- 由小组运行、维护
- 程序重要性提升,不再被视作硬件的附属成分。
- 在计算机系统的开发过程中与硬件工程师共同起主导作用。
-
第三阶段:传统软件工程阶段
- 采用工程化生产方式
- 软件产业兴起
- 软件开发成功率、质量大大提升。
- 软件工程并发环境及并发环境涌现,度量问题得到重视。
-
第四阶段:现代软件工程阶段
- OOP广泛使用
- 软件开发技术逐渐成熟
软件危机
指计算机软件的开发和维护过程中所遇到了一系列严重问题。
软件生命周期
包括分析、设计、实现、测试和维护等。
软件工程的框架
软件工程目标:正确性、可用性、费用合算
软件工程活动:需求、设计、实现、确认、支持
软件工程原则:适宜开发范型、合适设计方法、高质量工程支持
软件过程
是为了获得高质量软件所需要完成的一系列步骤。
生命周期模型把生命周期划分成那些阶段以及执行顺序,也称为软件过程模型。
常见模型:瀑布模型、快速原型模型、增量模型、螺旋模型
瀑布模型

应用场景:大型软件项目;需求明确;需求变化少
特点:
- 阶段间具有顺序性和依赖性
- 推迟实现的观点。
- 质量保证的观点
优点:
- 严格规定了必须提交的文档
- 按活动划分的检查点
- 当前阶段完成后,只需关注后续阶段
缺点:
- 阶段划分固定、阶段间大量文档增加工作量
- 开发模型线性,只有在过程结束才能看到成果,增加风险
- 早期的错误可能要等到末期测试才能发现,带来严重后果
快速原型模型

应用领域:客户不熟悉软件、沟通理解困难
优点:
- 减少需求不明确带来的开发风险
- 更好和客户沟通
- 减少技术、应用风险,缩小成本,提高产品质量
缺点
- 尽可能快速建造原型、限制开发人员创新
- 所选技术工具不一定主流,效率低
- 可能导致产品设计差
- 客户确定真正需求、原型可能被抛弃
增量模型(演化模型)

适用范围:需求比较明确、架构稳定
优点:
- 及时反馈、适应变化好
- 客户看到不断变化的软件,降低开发风险
- 团队士气的鼓舞
缺点:
- 需要开放式的体系结构,维护难度大
- 容易退化为边做边改模型、使软件过程控制失去整体性
螺旋模型

适用范围:大型复杂的系统
优点:
- 强调可选方案以及约束条件支持软件重用
- 有助于提升软件质量
缺点:
- 要求客户接受相信风险分析
- 风险分析成本过大则无意义
- 需善于识别风险且准确
结构化方法(面向功能、数据流软件开发方法,结构化生命周期法)
五个阶段:规划、分析、设计、实施、运行维护
Jackson方法的表示:顺序、选择、重复
面向对象软件开发方法
自底向上的归纳、自顶向下的分解,尽可能运用人类自然思维方式
要点:
- 客观世界由各种对象组成
- 所有对象划分为类
- 类具有登记
- 对象之间通过消息交互
三大重要特征:封装、继承、多态
基本概念:对象、类、封装...
核心概念:对象、类
网友评论