软件工程
软件工程概述
- 软件的概念、特点
-
特点:
- 复杂性;退化性;制约性(受计算机系统)。
- 抽象性;人工性;社会性。
- 无明显制造性;昂贵性。
-
软件工程的概念、要素、目标、原则
- 概念:借鉴传统工程师的原则和方法,以...(用目的去补充)为目的,指导软件开发和维护的工程学科。
- 三要素:过程、方法、工具
- 目标(三高两低):达到要求的功能,高性能,高质量,低成本,低维护。
- 原则:(两严格一少而精)
- 以分阶段的生命周期计划来严格进行项目管理
- 严格产品控制
- 开发小组人员应该少而精
- 敏捷软件开发的概念
-
轻量级的软件工程方法,它更强调开发过程中各种变化的必然性,主张通过团队协作来响应变化。
-
软件危机的概念
- 概念:泛指软件开发和维护中遇到的一系列问题
软件过程
- 软件过程的概念、模型
- 概念:软件的诞生和生命周期是一个过程,这个过程叫软件过程
- 模型:瀑布模型、喷泉模型、演化模型(原型+增量+螺旋)、基于组件的开发模型、形式化方法模型
- 软件生命周期的概念、阶段
- 概念:不用背,拿阶段凑即可(经过...的一个周期,叫软件生命周期)
- 阶段:可行性研究、需求分析、软件设计、编码、软件测试、软件维护(大概是后几章标题)
可行性研究
- 可行性的概念
- 可行性:主要从经济、技术等方面分析所给出的解决方案是否可行,能否在规定的资源和时间的约束下完成。
- 技术可行性:主要研究待开发的系统功能、性能和限制条件,技术能否实现,其技术风险。
- 经济可行性:对成本-效益或投资-效益的分析
- 成本估算方法:COCOMO模型、三点估算、类比估算等。
需求分析与结构化分析
- 计算机需求工程的概念
-
概念:涉及需求的获取、分析,规格说明、验证,确保需求得到准确实现
-
需求分析的概念、任务、原则
- 概念:收集和分析用户需求,以明确软件系统应具备的功能和约束条件
- 任务
- 建模阶段,即建立起系统的分析模型
- 描述阶段,即需求文档化
- 结构化分析的模型
- 数据字典、数据流图、E-R图、状态转换图
- 数据流图的符号
- 外部实体、数据流、数据变换、数据存储
软件体系结构(软件设计)
-
分布式系统结构:多处理器、C/S等
-
体系结构框架:MVC、MVP、J2EE等
面向对象方法与分析与设计(软件设计)
- 面向对象方法的优势、步骤
- 优势:符合人类思维习惯;稳定性好;可重用性好。
-
步骤:面向对象分析,面向对象设计,面向对象实现,面向对象测试。
-
面向对象分析的步骤
-
步骤:确定问题域;确定类与对象;确定类的关系、区分整体对象;定义属性;定义服务;确定附加约束。
-
具体步骤:找到用例参与者;确定系统的所有用例;识别目标系统的类与对象;分析类之间的关系;用模型图表示。
-
面向对象设计的原则、步骤
-
耦合性:主要指对象之间的耦合。
-
内聚性:低耦合往往意味着高内聚,高内聚有利提高系统独立性。
-
原则:模块化、低复用性;抽象化、信息隐藏;低耦合、高内聚。
- 步骤:建立软件体系结构环境图;软件体系结构设计;子系统设计;对象设计和优化。
软件实现(编码)
- 软件界面设计的概念
-
概念:确定用户与软件交互的方式。
-
软件设计风格的概念
- 概念:指源程序的书写习惯。具有良好的风格和规范可以使程序有较强的可读性、可维护性,提高团队效率。
软件测试
- 软件测试的概念、原则、步骤
- 概念:是发现软件中错误和缺陷的主要手段。为了保证软件质量,开发人员通过软件测试发现软件中存在的问题,并及时修改。
- 原则:无法完全测试;测试存在风险;测试只能表明存在缺陷。
- 步骤:测试计划、测试设计、测试执行、缺陷跟踪、测试评估。
- 白盒测试与黑盒测试的概念、比较
- 白盒测试概念:把测试对象看作一个透明盒子,根据程序内部信息设计测试用例,检查程序逻辑是否正确工作。
- 黑盒测试概念:把测试对象看作一个黑盒子,不考虑程序内部,只检查程序功能是否符合需求。
- 比较:
- 结构:白盒考虑内部结构,黑盒不考虑。
- 测试用例:白盒用内部逻辑结构来生成测试用例,黑盒用软件规格说明书。
- 适用:白盒使用系统测试、集成测试,黑盒都适用。
- 覆盖:白盒能测试所有逻辑路径,黑盒不能。
- 测试的概念:
- 单元:检测代码的某单元功能是否正确。
- 集成:是多个单元的聚合。多个单元组合成模块,多个模块组合成程序的更大部分。
- 压力:通过施加高负载来测试系统稳定性和性能。
- 系统:略。
- 验收:在系统测试之后的测试。验证新建系统是否满足用户需要。
软件维护
- 软件维护的概念、步骤
- 概念:概括地说,在软件交付后,为了改正缺陷、改进性能、补充功能所进行的软件修改。
- 步骤:
- 建立维护机构;
- 用户提出申请(申请维护);维护人员确认维护类型并维护(确认维护+进行维护);
- 整理维护记录并评审维护工作;评价维护工作。
- 提高可维护性的措施
- 建立明确的质量目标和优先级
- 建立完整文档
- 采用先进维护工具
- 注重可维护性的评审环节
- 软件再工程(重构、正向工程、逆向工程)的概念
- 重构:在不改变外部的情况下,改善内部,以提高可维护性和性能。
画图
数据流图
- 外部实体:方框
- 存储文件:平行线
- 操作:圆形
- 数据流向:箭头

UML类图
- 类
- 类名
- 类属性
- 类方法
- 可见性符号:放在属性、方法前,-表示private,+表示public,#表示protected,~表示default
- 子类
- 与普通类一致
- 抽象类
- 类名放在<<>>中
- 与普通类一致
- 依赖关系
- 类的继承:子类->父类
- 类的组合:子类-<>父类(实心菱形)(父类没了,那子类也会没有)
-
非依赖关系
-
类的关联:类a--类b(实线)(比如人会吃肉,人类--肉类,人类和肉类没有依赖关系)
- 类的聚合:类b-<>类a(比如动物园里有乌龟)
UML状态图
- 状态符号
- 分支符号与[]

UML活动图
- 非泳道图
- 状态、分支、并行、合并


- 泳道图


UML用例图
- 主要参与者、次要参与者
- 用例
- 关系:包含(A->B,虚线)、扩展(A<-B,实线)、泛化(就是实例化类对象的意思)


UML时序图
- 生命线
- 请求箭头(实线)与响应箭头(虚线)
- 选择框