第一章:软件工程综述
软件:软件的构成部分为程序,有关数据,以及开发运维使用的相关文档。
软件危机:主要有三部分,进度,费用,质量。软件危机的突出表现。1软件生产率低。2软件产品与用户要求不一致。3软件增长规模带来的复杂度增长,4不可维护性突出,软件文档不完全,不一致。
软件工程:将系统划,规范化,可量化的方法应用于软件开发运维,即将工程化方法用于软件。
软件工程三要素:工具,方法,过程。
第二章:软件过程
软件工程的过程:
1,软件描述
2,软件设计和实现。
3,软件有效性验证。
4,软件进化。
软件过程模型:
1,瀑布模型(V模型):发开过程如同一个瀑布一样从一个阶段结束再到另一个阶段。通常很少用瀑布模型,项目组推进工作难,客户通常难以描述所有需求,要修改困难。
2,增量模型:初始软件需求有明确定义,迫切需要提供一套功能有限的软件产品给用户使用并听取用户意见,后续再扩展直到产生一个充分的系统。
3,构件复用模型:将封装好实体进行进行适当的设计变成构件。
应对变更时的模型
1,原型模型:客户定义了软件的一些基本任务,但是没有详细定义功能特性。当开发人员对于算法效率,操作系统的适用性和人机交互的形式没有好的把握时使用。(其中分为:抛弃式原型,进化式原型)
2,螺旋模型:适用于大型模型的软件开发,将软件项目开发划分为制定计划,风险分析,实施开发以及客户评价。
3,Rational统一过程:以架构为核心,采用迭代和增量开发策略,突出了用例驱动的特点。
新型敏捷开发:当今新的软件要迅速开发出来,抓住新的机遇,应对竞争压力。
第三章:可行性研究 ,结构化需求分析,结构化软件设计
可行性研究的工作过程:
1,确定项目规模和目标。
2,研究目前正在使用的系统。
3,建立新系统的高层逻辑模型。
4,导出和评价供选择的解法。
5,推荐行动方针。
6,草拟开发计划
7,编写可行性研究报告。
系统流程图:
选择题:
需求的定义 :
用户解决问题或达到目标所需的条件或能力
系统或系统部件要满足合同,标准,规范,或其他正式规定文档所具有的条件的能力。
对前两点所描述条件或能力的文档化表述。
需求工程的活动:
需求获取,需求分析,需求规格说明,需求验证,需求管理。
结构化需求分析方法:创建上下文,建立0层图,功能分解产生N层图。
概要设计:软件结构图,ER图,接口设计,详细设计,过程设计。
选择题:
第四章:面向对象的需求分析,设计,基于构件的开发。
(1)面向对象的分析过程:
上下文模型->活动图->用例图->类图->时序图->状态图
(2)软件体系结构设计:
表示层,业务逻辑层。数据访问层。
包图:
构件图:
部署图:
决策表与决策树:
数据流图:
软件结构图
用例图与类图:
选择题
第五章:软件项目的测试
软件测试的目的:发现错误而执行程序(一个好的测试用例在于发现至今没有发现的错误)
1,黑盒测试:看不到内在逻辑和原理,单纯从使用需求上来测试。
边界值测试:测试用例在边界值附近,并且覆盖所有可能。(一定要有输入和预期结果)
等价类划分法:把程序的输入域划分为若干部分,然后每一部分取具有代表性的少数数据。
因果图法:适用于多种组合情况产生相应动作的情形。
2, 白盒测试:了解程序结构和处理过程
1,逻辑覆盖测试法:达成语句覆盖,判断覆盖,条件覆盖,路径覆盖。
例:
测试用例为:a=5 b=8 c=4 执行路径为 a-b-e
a=11 b=15 c=4 执行路径为 a-c-d-e
a=10 b=8 c=4 执行路径为 a-b-f-g
a=10 b=15 c=8 执行路径为 a-c-d-f-g
2,基本路径测试法:在程序流图的基础上,通过分析控制构造,导出基本可执行路径集合。
1,绘制出程序流程图,2,计算环路复杂度。3,找出独立路径。4,设计测试用例。
第六章:软件实施,维护与进化和文档标准
软件的实施:一般分为以下六步。
1,实施准备
2,业务交流
3,软件实施培训
4,数据准备及系统初始化
5,老系统切换及试运行
6,系统验收
软件的维护:分为以下四种
1,改正性维护:因为开发不足,在说明书之内,修改软件中的缺陷与不足。
2,适应性维护:为了软件适应操作环境变化而进行的修改软件的活动。
3,完善性维护:用于对于软件产生了新的需求,为了改善,加强系统性能。
4,预防性维护:根据现有信息对未来环境进行预测,为日后改进软件奠定基础。
软件再生工程:指对于既存对象系统进行调查,并将其中非可重用构件改造为新形式代码的开发
其中六类活动:库存目录分析,文档重构,逆向工程,代码重构,数据重构,正向工程。