-
软件工程概述
-
软件发展:软件的定义
软件是能完成既定功能和性能的可执行的计算机程和使程序正常执行的数据,和描述程序的操作的文档。
-
软件危机:主要问题、软件危机的表现、产生软件危机的原因、缓解软件危机的途径
主要问题:质量低下,无法满足用户需求,可维护性差。
表现:1.对软件开发成本和进度估计不足。
2.用户对已完成的软件不满意。
3.软件的质量不可靠。
4.不可维护。
5.软件没有对应的文档。
6.软件成本在计算机中的成本上升。
7.软件开发生产率提高的速度不如计算机普及速度。
原因:1.与软件本身的特点有关。2.与软件开发和维护的方法不正确有关。
缓解途径:吸收经验和教训,应用推广在计算机软件开发中总结的好的方法。
-
软件开发的生命周期:8个阶段
需求分析阶段—>规格说明阶段—>设计阶段—>实现阶段—>集成阶段—>测试阶段—>维护阶段—>退役
-
软件生命周期过程模型
-
定义
软件开发的过程是软件生命周期。
-
软件生命周期的两种典型的阶段(详细解释)
1.确定需求:需要了解用户的具体需求,以后种形式接受客户和SQA小组成员的验证,然后拟定产品说 明书,当文档由SQA小组验证和客户认可后,这个阶段结束。
2.维护阶段:软件交付用户之后不可避免的需要修改,在遇到错误的时候,当软件需要适应外部环境的变
化的时候,或者当用户希望加减功能的时候。软件维护重复以前的各个阶段。
-
软件过程模型:瀑布模型和螺旋模型(两种模型的定义和优缺点)
瀑布模型:定义:线性顺序模型。规定了各项软件工程活动,包括软件设计需求分析等,规定了它们自上而
下互相衔接的固定次序。
优点:1.属于线性顺序模型。
2.应用最早,应用最广的模型。
缺点:1.给软件系统开发强加了一个项目管理结构。
2.实际项目很少按照该模型给出的顺序进行。
3.用户常常难以清楚的给出所有需求。
4.用户必须耐心,软件的运行版本要到晚期才能得到。
5.开发者常常被不必要的耽搁。
螺旋模型:定义:将瀑布模型和演化模型结合,并且添加了风险分析,沿着螺线旋转。
优点:1.支持现有软件的重用。
缺点:1.风险分析不会向模型中设计那样。
2.排他性的适用于内部大规模软件开发。
-
需求分析
-
定义:功能性需求和非功能性需求以及“需求规格说明书”。
-
软件的功能需求的三个层次:业务需求、用户需求、功能(系统)需求。
-
需求的开发与管理:
需求的开发(需求获取、需求分析、编写需求规格说明书、需求验证)
需求管理(保证需求作用在整个软件的产品生命周期中的持续、稳定和有效发挥)
-
需求分析技术:
结构化分析技术(一种面向数据流的自顶向下逐步求精的分析方法)
数据流图(上下文图、0层图、N层图)
-
概要设计
-
定义:概要设计也称为总体设计,在这个阶段需要确定软件的总体结构。概要设计可分为数据设计和系统结构设计。
-
任务:
1.数据结构设计、文件设计和数据库设计;
2.生成概要设计说明书、数据库设计说明书、用户手册;
3.软件测试计划;
-
模块独立性:模块化的优点,七级耦合,七级内聚
模块化的优点:1.是软件结构清晰,容易设计,容易阅读和理解,容易测试和调试。
2.提高软件的可靠性。
3.有助于软件开发攻宠的组织管理。
七级耦合:(低到高)越低越好
间接–数据–特征–控制–外部–公共–内容
七级内聚:(高到底)越高越好
功能性–顺序性–通信性–过程性–时间性–逻辑性–偶然性
-
详细设计
-
详细设计的概念:过程设计
-
任务:数据结构设计、算法设计、物理设计、界面设计、详细设计说明书,其他设计
-
方法:判定表、判定树
-
面向数据结构的设计:Jackson方法(主要是描述一个数据结构的东西)
第七章 面向对象方法
这章自己看看吧!
第八章 统一建模语言
-
UML设计目标:标准的建模语言,用来传达一个方法的结果。
-
UML
10种模型图:类图、对象图、构件图、部署图、用例图、活动图、状态图、顺序图、协作图、包图 -
常用的两种视角
-
UML 10种视图与模型图详细
第十章 测试
-
数据结构设计、文件设计和数据库设计
-
软件测试原则
1.尽早的和不断的进行软件测试。
2.测试用例应由测试输入和与之对应的预期输出结果组成。
3.程序员因该避免测试自己的程序
4.在设计测试用例,应当包含合理的输入条件和不合理的输入条件。
5.充分注意测试中的群集现象。
6.严格执行测试计划,排除测试的随意性。
7.应当对每个测试结果做全面检查。
-
软件测试方法4种分类
黑盒测试,白盒测试,穷尽测试,
-
软件测试与开发各阶 段的关系
软件的开发过程是一个自顶向下逐步细化的过程,而测试过程则是自底向上逐步集成的过程。与开发过程类似,每一个步骤是上一个步骤的继续。
-
单元测试针对每个程序的模块,主要测试5个方面:
模块接口、局部数据结构、边界条件、独立的路径、错误处理
-
驱动模块、桩模块
驱动模块:相当于被测模块的主程序,用来接收用例的测试数据。
桩模块:用来代替被测模块所调用的子模块。
-
集成测试
一次性集成测试,增殖式集成方式(自顶向下:深度优先,广度优先;自底向上;混合增值)
-
验收测试:
α测试(一个用户在开发环境中进行的测试)
β测试(多个用户在一个或者多个用户的实际使用环境下进行的测试)
-
回归测试
修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
-
软件测试方法:白盒测试
& 黑盒测试 -
纠错与测试交替进行,纠错原则(重在思考、避免紧张、修改彻底、防止引入新错误)
第十一章 软件维护
记不得了,自己看