软件工程期末复习

374 阅读4分钟

简答题

软件工程概述

  1. 软件的定义:软件=程序+数据+文档
  2. 软件作用:一方面是一种产品(提供计算能力;产生,管理,获取,修改,显示,传输信息),另一方面是开发其他软件产品的工具(IDE,操作系统,网络软件)
  3. 软件危机的概念:在计算机软件的开发和维护中所遇到的一系列严重的问题
  4. 软件危机产生的原因: 与软件本身特点有关(过程难控制,复杂性随规模指数上升);对用户需求的认知不准确;实践中采用错误的方法或技术;轻视软件维护/维护方法不正确
  5. 消除软件危机:应用软件工程的工具和方法
  6. 应用软件工程的目的:既满足用户需求又具有良好工程特性的软件产品,从而实现商业价值和用户满意度
  7. 软件工程定义:应用系统化,规范化,可量化的方法来开发,运行和维护软件,即将工程化的方法应用到软件;以及对上述方法的研究
  8. 软件工程三要素:工具,方法,过程

软件过程

  1. 软件过程的概念:为创建高质量软件,所需完成的一系列活动,动作和任务的框架
  2. 软件过程模型的概念:是软件开发全部过程,活动和任务的结构框架的一种概括;它能直观表达软件开发全过程,明确规定要完成的主要任务,活动或开发策略。
  3. 软件周期五个阶段: 沟通->策划->建模->构建->部署;
  4. 软件周期三个时期:软件定义时期->软件开发时期->软件维护时期
模型名称特点优点缺点适用场景具体例子
瀑布模型顺序执行,每个阶段完成后才能进入下一个阶段易于理解和管理,文档化程度高缺乏灵活性,难以适应需求变更需求明确、变化不大的项目政府IT项目,如工资系统开发,典型的案例是NASA的阿波罗计划
增量模型分阶段开发,每个阶段交付可工作的软件部分提高了灵活性,减少了风险需要良好的项目管理,可能增加总体开发时间需求变化较少,但需要逐步交付的项目银行系统的升级,每个增量都包含新功能但不影响现有服务
原型模型快速构建原型,然后根据用户反馈迭代快速验证概念,降低开发风险可能存在原型与最终产品不一致的风险需求不明确或需要快速验证概念的项目移动应用的早期开发,通过原型测试用户体验和界面设计
螺旋模型结合了瀑布模型和原型模型,通过迭代和增量逐步完善产品风险管理能力强,适应性强过程复杂,需要高水平的项目管理风险较高、需求变化可能的项目复杂的软件开发项目,如大型企业的ERP系统实施
敏捷开发强调迭代和增量,团队协作,快速响应变化提高了开发效率,更好地满足用户需求需要高度的团队协作和自我管理需求变化频繁,需要快速交付的项目互联网产品的开发,如Spotify的持续迭代以适应用户反馈

项目管理

  1. 4P原则:人员,产品,过程,项目(People,Product,Process,Project)
  2. 项目度
  • 面向规模的度量
千行代码(KLOC)生产率(PM)人月(Person-Month)每千行代码成本(CKL)代码出错率(EKRL)文档与代码比(DL)
L/E (千行/人月)项目参与人数*工作月数S/L (万元/千行)NE/L (行/千行)Pd/L ( 页/千行)
  • 面向功能的度量:FP=UFC × TCF
UFCTCF
未调整功能点计数技术复杂度因子
五类功能组件各自的计数*对应的复杂因子再求和十四个复杂性调节因素打分之和(DI)*0.01+0.65
  1. 项目估算(三点期望值法):(最大值+4*最可能值+最小值)/6【代码行或功能点】
  2. 任务网络图找关键路径:任务开始到结束的任意路径中,所有弧权重之和最大的那条路径
  3. 甘特图:是一种项目管理工具,它通过条形图的形式直观地表示项目的时间进度