什么是软件工程
软件工程:将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。支持软件工程的根基在于质量关注点。
软件工程的基础是过程层,将各个技术层次结合在一起。方法层为构建软件提供技术上的解决方法。工具层为过程和方法提供自动化或半自动化的支持。
通用过程模型的定义内容
通⽤过程框架定义了 5 种框架活动 —— 沟通、策划、建模、构建以及部署。
⼀系列普适性活动 —— 项⽬跟踪控制、⻛险管理、质量保证、配置管理、技术评审以及其他活动(测量、配置管理、可复用性管理、工作产品的准备和生产) —— 贯穿软件过程始终。
什么是敏捷及优缺点原则,常见框架/方法
敏捷
要定义灵活机动、有适应能力和精益的过程以适应现代商务的需求。 敏捷开发 是⼀种软件开发⽅法论,可以应对客户快速变更的需求。它强调以⼈为核⼼,采⽤迭代的⽅式,循序渐进的 开发软件。
敏捷框架
Scrum 在固定的时间盒内进行检视和调整,并坦诚地面对真相。每次冲刺期间都会产生至少一个软件增量,产生有形成果。
XP框架(极限编程)最广泛。按照策划、设计、编码、测试四个框架活动组织,并提出一系列新颖有力的技术。保证利益相关者指定优先级特征和功能软件的频发发布。
看板法 提供了改进过程或工作流的方法,专注于变更管理和服务交付。
DevOps 将开发与运维结合。快速响应需求提升客户体验。
软件工程师的特质
个人责任感、敏锐的意识、坦诚、抗压能力、高度的公平感、注重细节、务实的。
采用敏捷理论、社交媒体和电子通信对全球化软件开发尤其有益处。
风险管理的定义
风险是关系到未来的事件,涉及选择具有不确定性、损失性。
风险分析和管理是标识风险、评估其发生的概率、估算其影响和建立在实际发生情形下问题的应急计划,是一系列帮助软件小组理解和管理不确定性的步骤。
习题:
1.软件过程
为创建高质量软件所需要完成的活动、动作和任务的框架。 活动主要实现宽泛的目标。动作包含主要工作产品生产过程中的一系列任务。任务关注小而明确的目标,能够产生实际产品。
2.UML
是提供支持面向对象软件工程时间必要的一种技术,是一种建模语言。
3.重构
通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
1.软件工程实践的精髓有哪些?(8分)
①理解问题
②策划解决方案
③实施计划
④检查结果
2.敏捷软件开发宣言有哪些?(8分)
- 个体和互动 高于 流程和工具
- 工作的软件 高于 详尽的文档
- 客户合作 高于 合同谈判
- 相应变化 高于 遵循计划
4.软件生命周期包括哪些阶段?(8分)
需求分析阶段:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。
软件设计阶段:主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。
软件编码阶段:是将软件设计的结果转换成计算机可运行的程序代码。
软件测试阶段:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。
软件运行和维护阶段:是软件生命周期中持续时间最长的阶段,包括纠错性维护和改进性维护两个方面。
5.UML中的图形的有哪些?(6个以上得满分,本题6分)
顺序图、类图、活动图、状态图、泳道图、构件图、部署图
需求工程的基本任务
需求⼯程是指致⼒于不断理解需求的⼤量任务和技术。
需求⼯程包括七项任务:起始,获取,细化,协商,规格说明,确认和管理。
XP重构和结对编程
XP:极限编程,是一种轻量级的、灵巧的软件开发方法。具有严谨和周密的特征。
结对编程:指是两位程序员并肩坐在同一台电脑前,共同探讨设计方案、共同设计算法、共同编写程序代码、共同完成各种测试。
构件内聚类型
内聚分类:功能内聚、分层内聚、通信内聚、顺序内聚、过程内聚、时间内聚、偶然内聚
耦合性
耦合性是程序结构中各个模块之间相互关联的度量它取决于各个模块之间接⼝的复杂程度、调⽤模块的⽅式 以及那些信息通过接⼝ 。
敏捷开发原则
1. 快速迭代
2. 让测试人员和开发者参与需求讨论
3. 编写可测试的需求文档
4. 多沟通,尽量减少文档
5. 做好产品原型
6. 及早考虑测试
软件体系结构
提供了待构建软件的整体视图,描绘了软件构件的结构和组织形式,构件的性质及构件之间的链接。
需求确认的工作
需求调研和准备、需求分析、需求验证、项目范围说明书和工作分解结构(WBS)、需求变更管理
2.2统一过程模型(重要)
统一过程模型是一种“用例驱动、以体系结构为核心、迭代及增量”的软件过程框架,由UML方法和工具支撑。五个UP阶段不是顺序执行,而是阶段性并发执行。
1. UP 的 起始阶段 包括客户沟通和策划活动。
2. 细化阶段 包括沟通和通⽤过程模型的建模活动。
3. 构建阶段 与通⽤软件过程中的构建活动相同。
4. 转换阶段 包括通⽤构建活动的后期阶段以及通⽤部署活动的第⼀部分。
5. ⽣产阶段 与通⽤过程的部署活动⼀致。
黄金规则
Theo Mandel 关于界⾯设计提出的三条⻩⾦规则
1. 把控制权交给⽤户
2. 减轻⽤户的记忆负担
软件测试
目的是发现错误。
步骤
①单元测试,侧重于单个构建,确保起到单元的作用
②集成测试 侧重于软件体系结构的设计和构建
③高阶测试
④确认测试 需求的最终保证
⑤系统测试 软件与系统的其他部分作为一个整体测试
3.开发用例
·ATM取款
·餐厅使用信用卡付费
·使用在线书店搜索书