需求分析(掌握)
软件工程:将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究;软件工程由方法、工具、过程三部分组成。
需求特性:无二义性,完整性,一致性,可测试性,确定性,可跟踪性,正确性,必要性。
三个阶段:需求提出、需求描述、需求评审。
需求获取的方法:用户访谈、问卷调查、采样、情节串联板、联合需求计划、获取原型、会议讨论。
需求层次 | 要点 |
业务需求 | 是指反映企业或客户对系统高层次的目标要求 |
用户需求 | 描述的是用户的具体目标,或用户要求系统必须能完成的任务 |
系统需求 | 是从系统的角度来说明软件的需求,包括功能需求、非功能需求和设计约束等。 |
质量功能部署(QFD):是一种将用户要求转化成软件软件需求的技术,其目的是最大限度提升软件工程过程中用户的满意度。
常规需求:用户认为系统应该做到的功能或性能,实现越多用户会越满意。
期望需求:用户想当然认为系统应具备的功能和性能,但并不能正确描述自己想要得到的这些功能或性能需求。如果这些需求没有得到实现,会让用户感到不满意。
意外需求(兴奋需求):是用户要求范围外的功能或性能,实现这些需求用户会很高兴,但不实现也不影响购买的决策。
软件需求规格说明书(SRS):是需求开发活动中的产物,编制该文档的目的是使项目干系人与开发团队对系统的初始规定有一个共同的理解使之成为整个开发工作的基础。SRS内容主要包括:范围、引用文件、需求、合格性规定、需求可追踪性、尚未解决的问题、注解、附录。
UML(了解)
是一种定义良好、易于表达、功能强大且通用的建模语言。他融入了软件工程领域新思想、新方法和新技术。
从总体上看,UML的结构包括构造块(事物、关系、图)、规则和公共机制(规格说明、修饰、公共分类、扩展机制)三部分。
UML中的关系:依赖、关联、泛化、实现。
UML视图(熟悉)
- 逻辑视图(设计视图):他表示了设计模型中在架构方面具有垂直意义的部分。它是类、子系统、包和用例实现的子集。
- 进程视图:对可执行线程和进程作为活动类的建模,他是逻辑视图中的一次执行实例。
- 实现视图:对组成基于系统的物理代码的文件和构件进行建模。
- 部署视图:把构件部署到一个物理节点上,表示软件到硬件的映射分布结构。
- 用例视图:是最基本的需求分析模型。
面向对象分析(熟悉)
用例模型:识别参与者、合并需求获得用例,细化用例描述、调整用例模型:包含关系、扩展关系、泛化关系
分析模型(CRC建模):定义概念类、确定类之间的关系、为类添加指责、建立交互图。
类之间的关系:关联、依赖、泛化、组合、聚合和实现。
软件架构风格(掌握)
- 数据流风格:包括批处理序列和管道/过滤器两种风格。
- 调用/返回:包括主程序/子程序,数据抽象和面向对象,以及层次结构。
- 独立构件风格:包括进程通信和事件驱动的系统。
- 虚拟机风格:包括解释器和基于规则的系统。
- 仓库风格:包括数据库系统、黑板系统和超文本系统。
软件架构评估、设计(掌握)
软件架构的评估:
- 基于调查问卷(检查表)的方式。
- 基于场景的方式。
- 基于度量的方式
软件架构的设计:SD(结构化设计)是一个面向数据流的方法,他以SRS和SA阶段所产生的DFD和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程。遵循原则:高内聚、低耦合。
软件设计模式:
- 设计模式包括模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式等基本要素。
- 设计模式根据目的和用途不同,分为创建型模式、结构型模式、行为型模式。
- 根据处理范围不同,设计模式类模式和对象模式。
软件工程
过程管理 | 成熟度等级及连续式分组 | 过程域 |
过程域的阶段式分组 | 可管理级 | 需求管理、配置管理、项目计划、项目监督与控制、供应商合同管理、度量和分析、过程和产品质量保证 |
已定义级 | 风险管理、需求开发、技术解决方案、产品集成、验证、确认、组织级过程焦点、组织过程级别定义、组织级培训、集成项目管理、集成化的团队、决策分析和解决方案、组织级集成环境。 | |
量化管理级 | 组织级过程性能、定量项目管理 | |
优化管理级 | 组织级改革和实施、因果分析和解决方案 | |
连续式模型的过程域分组 | 过程管理 | 组织级过程焦点、组织级过程定义、组织级培训、组织级过程性能、组织级改革与实施 |
项目管理 | 风险管理、项目计划、项目监督与控制、供应商合同管理、集成项目管理、集成化的团队、定量项目管理 | |
工程 | 需求管理、需求开发、技术解决方案、产品集成、验证、确认 | |
支持 | 配置管理、度量和分析、过程和产品质量保证、决策分析和解决方案、组织级集成环境、因果分析和解决方案 |
软件测试(掌握)
静态测试:包括对文档的静态测试和代码的静态测试,采用桌前检查、代码走查、代码审查方法。
动态测试:是指在计算机上实际运行程序进行软件测试,一般采用白盒测试(结构测试)、黑盒测试方法。
白盒测试:主要用于软件单元测试中,主要思想是将程序看成一个透明的黑盒,测试人员完全清除程序的结构和处理算法,按照程序内部的结构设计测试用例,检测程序中的执行通路是否都能按照预定要求正确工作。白盒测试方法:控制流测试、数据流测试、程序变异测试。
黑盒测试:主要用于集成测试、确认测试、系统测试。将程序看成一个不透明的黑盒,完全不考虑程序的内部结构和算法,而只检查程序功能是否能按照SRS的要求正常使用。
软件维护(熟悉)
- 纠错型维护
- 适应型维护
- 预防型维护
- 完善型维护
软件集成技术
企业应用集成(EAI)、可以消除信息孤岛、他将多个企业信息系统连接起来,实现无缝集成,使他们就像一个整体一样。
企业应用集成 | 特点 | 概念 |
表示集成(界面集成) | 黑盒集成,集成点在用户界面 | 将用户界面作为公共的集成点,把原有零散的系统界面集中在一个新的界面中。无须了解程序数据库的内部结构,常用的技术有,屏幕截取、输入模拟 |
控制集成(功能集成、应用集成) | 黑盒集成、集成点在应用逻辑 | 控制集成的集成点在于程序代码中,集成出可能是只需要简单使用公开的API就可以访问,当然也可能需要添加附加的代码来实现 |
数据集成 | 白盒集成,集成点在中间件 | 为例完成控制集成和业务流程集成,必须首先解决数据和数据库的集成问题 |
业务流程集成(过程集成) | 由一系列基于标准的、统一的数据格式的工作流组成 |