1.软件概述
软件的概念及特点
- 软件与程序:
- 程序是人们为了完成特定功能而编制的一组指令集
- 软件不仅包括程序,还包括程序的处理对象-数据,以及文档
- 软件具有的一些特点:
- 软件是一种逻辑实体,具有抽象性
- 软件的生产与硬件的制造不同,是被开发或设计的
- 软件在使用工程中不会磨损
- 软件的开发尚未完全摆脱手工的开发方式
- 软件的开发和运行必须依附于特定的计算机系统环境
软件的分类
软件工程
软件工程的概念
IEEE对软件工程的定义为:1)将系统化、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。2)对1中所述方法的研究
具体来说,软件工程是以借鉴传统工学的原则和方法,以提高质量,降低成本为目的,指导计算机软件开发和维护的工程学科,这是一种层次化的技术。从上至下依次是:工具层,方法层,过程层,质量保证层。
软件生存周期
软件生产周期的概念
一般分为六个阶段:
- 可行性研究
- 需求分析
- 软件设计
- 编码阶段
- 软件测试
- 软件维护
软件生存周期模型
瀑布模型:线性,不可回溯
- 优点:过程模型简单,执行容易
- 缺点:无法适应变更
原型模型:快速而准确的获得需求
- 优点:简单快速
- 缺点:成本高,不易于创新
增量模型:每个增量分别开发
- 优点:成本小,风险小
- 缺点:项目管理难度大
演化模型:显式地把增量模型扩展到需求阶段,为了构造第二个增量,使用第一个增量来精化需求
- 优点:易对需求做出更改
- 缺点:风险大
螺旋模型:开发过程分为制定计划,风险分析,实施开发和用户评估四类活动
- 优点:降低项目开发的风险,
- 缺点:一个周期执行时间太长,需要借助自动化工具
2.可行性研究与需求分析
可行性研究
可行性研究的步骤:
- 明确系统目标
- 分析研究现行系统
- 设计新系统的高层逻辑模型
- 获得并比较可行的方案
- 撰写可行性研究报告
需求分析
需求分析的步骤:
- 需求获取
- 分析建模
- 需求描述
- 需求验证
结构化需求分析方法:分解+抽象
步骤:
- 建立当前系统的具体模型
- 抽象当前系统的逻辑模型
- 建立当前系统的逻辑模型
结构化分析建模:
- 实体联系图(E-R图):实体,属性,联系
- 数据流图(DFD图):外部实体,数据流,数据变换,数据存储
- 数据字典(DD图):数据项,数据流,数据文件,数据库
- 状态迁移图(STD):实时系统
3.软件设计
软件体系结构的五种模型:
- 结构模型
- 框架模型
- 动态模型
- 过程模型
- 功能模型
软件质量属性:系统属性,商业属性,框架属性
内聚:一个模块内部各组成部分的处理动作的组合强度,块内联系
耦合:两个模块之间的相互依赖关系,块间关系