第一章:
什么是软件?
计算机系统中与硬件相互依存的另一部分。软件包括程序、数据及其相关文档的完整集合。
(1)能够完成预定功能呾性能的可执行指令(program)
(2)使得程序能够适当地操作信息的数据结构(data)
(3)描述程序的操作呾使用的文档(document)
软件危机的定义?
软件在开发和维护过程中遇到的一系列严重问题。
软件危机包含两层含义:
(1)如何开发软件
(2)如何维护数量不断膨胀的现有软件。
软件危机的表现:
(1)软件开发的迚度难以控制,经常出现经费超预算、完成期限拖延的现象。
(2)软件需求在开发初期不明确,导致矛盾在后期集中暴露,从而对整个开发 过程带来灾难性的后果。
(3)软件文档资料不完整、不合格。由亍缺乏完整规范的资料,加上软件测试不充分,从而造成软件质量低下。
(4)软件的可维护性巩,程序错误难以改正,程序丌能适应硬件环境的改变。
(5)软件价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。
什么是软件工程?
软件工程是指导计算机软件开发和维护的一门工程学科
软件的生命周期?
1、计划阶段:确定待开发的总体目标和范围,研究系统的可行性;
2、分析阶段:分析整理和提炼所收集到的用户需求,建立完整的分析模型,将其编写成软件需求规格说明和初步的用户手册;
3、设计阶段:决定软件怎么做,集中于软件体系结构数据结构、用户界面和算法
4、实现阶段 :将所设计的各个模块编写成计算机可接受的程序代码
5、测试阶段:设计测试用例,对软件进行测试,发现错误,进行改正;
6、运行和维护阶段:应在软件的设计和实现阶段充分考虑软件的可维护性;
软件工程的三要素:
1、工具(例:EA、Axure、MoinMoin、XMind等等.....);
2、方法(例:业务建模方法、需求方法、项目管理方法、配置管理方法);
3、开发过程(根据客户、团队和项目特征指定框架,关键是对核心活动的选取和定义,如业务建模、需求、分析、设计、实施、发布);
经典的软件过程:
1、瀑布模型
2、RUP统一软件过程
3、Scrum敏捷过程
4、扩展ICONIX
软件过程之-----瀑布模型:
1、特点及其缺点:
(1)特点:自上而下、相互衔接的固定次序,上一个阶段的变换结果是下一个阶段变换的输入,相邻两个阶段具有因果关系;
(2)缺点:各个阶段划分固定,阶段之间产生了大量文档,增大了工作量。开发模型是线性的,用户只有等到整个过程的末期才能见到开发结果,增加了风险;早期的错误等到后期的测试阶段才能发现,进而带来严重的后果;
2、过程:
(1)需求分析
(2)需求定义
(3)概要设计
(4)详细设计
(5)实现
(6)系统测试
(7)验收测试
(8)维护
软件过程之----RUP统一软件过程:
1、特点:
中心思想是用例驱动、架构为中心、迭代和增量
迭代:反复求精
增量:逐块建造
软件过程之-----扩展ICONIX
7个阶段:
1、愿景
2、业务建模
3、需求分析
4、健壮性分析
5、关键设计
6、最终设计
7、实现
获取愿景三部曲:
1、第一步:找到项目的"老大"
2、第二步:得到“老大”对项目的期望(愿景)
3、第三步:描述出愿景的度量指标;
业务建模的意义和步骤:
1、意义:
业务建模要求我们把视角从软件系统转向客户组织,站在客户的角度看问题,以达到清晰准确地“诊断”,对症“开方”。
1、明确为谁服务--找准客户及其愿景,切记不是在为自己做系统;
2、要改进的组织是什么现状---有什么痛处和不足;
3、如何改进--新系统的价值就是解决客户痛处、改良客户不足,这才是客户愿意掏腰包的动力
4、在业务建模和需求分析阶段,忘掉自己技术专家的身份;
2、步骤:
1、明确我们为谁服务(选定要改进的组织)
2、要改进的组织是什么现状(业务用例图、现状业务序列图)
3、我们如何改进(改进业务序列图)
业务建模的第二步(了解组织现状)
从外部看:组织是价值的集合,用业务用例图来建模;
从内部看:组织是系统的集合(人是一种智能系统),用业务序列图来建模;
业务用例(从外部看企业)
业务用例图帮助我们从高层次了解组织的业务构成。
业务用例图的组成:
1、业务执行者:在业务组织之外,与其交互,享受其价值的人或组织;例如食客是餐馆的业务执行者,顾客是超市的业务执行者;
2、业务组织:超市、餐馆;
3、业务用例:业务组织为业务执行者提供的价值。例如餐馆的业务用例有吃饭、点餐;超市的业务用例有结账;
业务序列图(从内部看企业)
业务序列图帮助我们从细