1、软件分类:基于功能不同的系统软件、支撑软件、应用软件 2、软件工程以关注质量为目标,其中过程、方法和工具是软件工程的三要素 3、软件工程知识体系: 软件需求:获取、分析、规格说明和确认 软件设计:定义系统或组件的体系结构、组件、接口 软件构建:编码、验证、单元测试、集成测试和调试 软件测试:评价和改进产品的质量、标识产品的缺陷和问题 软件维护:问题和改进的需要而修改代码和相关文档 软件配置管理:控制系统地配置变更 软件工程管理:结构管理、项目管理、度量程序 软件工程过程:软件生命周期的定义、实现、评估、管理、变更和改进 4、软件生命周期的六个阶段: 可行性研究、需求分析、软件设计、编码、软件测试、软件维护 5、软件过程模型: 瀑布模型:优点是过程模型简单、执行容易、缺点是无法适应需求变更 快速原型模型 增量模型 螺旋模型:将瀑布模型和快速原型模型结合起来,并加入了风险分析。(大型软件开发) 喷泉模型 6、可行性研究:软件是否可行(问题值得被解决) 可行性研究的内容:战略可行性、操作可行性(是否能真正解决问题)、计划可行性、技术可行性(使用技术的成熟程度及优势)、社会可行性、市场可行性、经济可行性(所需成本和得到的效益的比较)和风险可行性 7、可行性研究的步骤: 明确系统目标、分析研究现行系统、设计新系统的高层逻辑模型、获得并比较可行的方案、撰写可行性研究报告 8、E-R图:实体—矩形框;属性—椭圆形;关系—菱形 9、数据流图是描述系统中数据流的图形工具,是用来表示信息流和信息变换过成的图解方法。 信息源、加工、数据存储、数据流以及表示符号 10、数据字典:用于定义数据流图中各个图元的具体内容,为数据流图中出现的图形元素做出确切的解释。 11、软件设计包括概要设计和详细设计 12、软件设计的意义:在软件开发过程中处理核心地位,它是保证质量的关键步骤。软件设计提供了可以用于质量评估软件表示,软件设计是能够将用户需求准确转化为软件产品或系统的唯一方法,软件设计是所有软件工程活动和随后的软件支持活动的基础。 13、软件设计的目标:(1)设计必须实现所有包含在分析模型中的明确需求,而且必须满足用户期望的所有隐含需求 (2)对于程序员、测试人员和维护人员而言,设计必须是可读的,可理解的指南(3)设计必须提供软件的全貌,从实现的角度说明数据域、功能域和行为域
14、模块是数据说明、可执行语句等程序对象的集合,是构成程序的基本构件,可以被单独命名并通过名字来访问。 模块化就是把系统或程序划分为独立命名并且可以独立访问的模块,每个模块完成一个特定的子功能 模块化注意:(1)模块的规模要适中,模块的规模可以用模块中所含语句的数量来衡量。 (2)提高模块的独立性,降低模块间的耦合程度 15、耦合和内聚: 耦合是各个模块之间互联程度的度量 为了提高模块的独立性,尽量降低模块之间的耦合程度 无直接耦合、数据耦合和标记耦合属于低强度的耦合 内聚是模块内部各个元素之间彼此结合的紧密程序 提高模块的内聚程度,使模块内部的各个组成成分都相互关联,使其为了完成特定的功能而结合在一起。 偶然内聚、逻辑内聚和时间内聚属于低内聚 顺序内聚和功能内聚属于高内聚 16、在数据流图中,数据流分为变换型数据流和事务型数据流 17、Jackson方法是面向数据结构的设计方法。分为3种基本类型:顺序型结构、选择型结构和循环型结构 18、流程图、盒图、PAD图、判定表、判定树 19、编程语言:机器语言(“0”和“1”)汇编语言(面向机器的低级语言,用助记符代替)高级语言(面向过程和面向对象)超高级语言 20、按良好的编程风格进行编程:版权和版本声明、程序版式、注释、命名规则、数据说明、语句构造、输入/输出、效率 21、软件测试是为了发现错误而执行程序的过程 22、软件测试原则:(1)完全测试是不可能的 (2)测试中有风险存在 (3)软件测试只能表明缺陷的存在,而不能证明产品已经没有缺陷 (4)软件产品中所存在的错误数与已发现的错误数成正比 (5)要避免软件测试的杀虫剂现象 23、黑盒测试有多种技术,例如:等价类划分法、边界值分析法、错误推断法、因果图法、决策表法、场景法等 24、逻辑覆盖法是常用的白盒动态测试方法,以程序内部逻辑结构为基础,分为语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖和路径覆盖 25、集成测试包括非增量式集成和增量式集成 26、软件维护分类,完善性维护是软件维护的主要部分,它是针对用户对软件产品所提出的新需求所进行的维护
|