再特别提醒!!!考试中的题目来自老师上课讲的,并无出入。如果考试内容不符 ,哥们也不知道说啥了。
写在前面:完整pdf版见Github Github-Trae1ounG
示例:
如果对你有用麻烦点赞收藏加关注,并给我的仓库点一个Star!
谢谢!
Github-Trae1ounG
软工考题:
阅读题5分 1-3章
阅读题5分 4-6章
阅读5分 7-9章
编程20 4-7章
三道简答5分
简答一:软件工程概述
简答二:软件过程
简答三:项目管理(18章)
五道分析题(10分)
分析题一:用例图
分析题二:活动图
分析题三:顺序图
分析题四:类图
分析题五:白盒/黑盒?
概念题:
软件的概念和特点
软件危机的概念和产生的原因
软件工程的定义、三要素、应用软件工程的原因
软件的概念和特点
软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。
项目超出预算
v 项目超过计划完成时间
v 软件运行效率很低
v 软件质量差
v 软件通常不符合要求
v 项目难以管理并且代码难以维护
v 软件不能交付
产生软件危机的原因
软件工程是一门指导计算机软件开发和维护的工程学科。软件工程是一门交叉性学科。
应用软件工程的原因:
软件工程可定义为三元组: <目标,原则,活动>
(1)给出了软件所涉及软件工程的工程要素
(2)给出了各要素之间的关系
(3)给出了软件工程学科所研究的主要内容
软件工程目标
目标:
生产具有正确性、可用性以及开销合宜的产品。
-正确性:
• 意指软件产品达到预期功能的程度。
-可用性:
• 意指软件基本结构、实现及文档为用户可用的程度。
-开销合宜:
• 指软件开发、运行的整个开销满足用户要求的程度
活动:-生产一个最终满足需求且达到工程目标的软件产品所需要的步骤。主要包括需求、设计、实现、确认和支持等活动
(a)需求:
定义问题,即建立系统模型
(b)设计:
-在需求分析的基础上,给出系统的软件设计方案。
-设计包括总体设计(也称为概要设计)和详细设计:
©实现:
把设计结果转换为可执行的程序代码
(d)确认
-确认活动贯穿于整个开发过程.
-实现完成后的确认,保证最终产品满足用户的需求。
(e)支持活动:
-支持活动包括修改和完善。
-它为系统的运行提供完善性维护、纠错性维护和适应性维护。
软件生命周期概念、软件过程概念、常见的几种软件过程模型:瀑布、增量、原型、螺旋、敏捷等,比较各自优缺点
软件产品或软件系统从设计、投入使用到被淘汰的全过程
包括问题定义、可行性研究、需求分析、总体设计、详细设计、编码、测试、维护
软件过程是在工作产品构建过程中,所需完成的工作活动、动作和任务的集合。
活动主要实现宽泛的目标,与应用领域、项目大小、结果复杂性或者实施软件工程的重要程度没有直接关系
动作包含了主要工作产品生产过程中的一系列任务。
任务关注小而明确的目标,能够产生实际产品
软件过程模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。
①瀑布模型
1、按照软件生命周期的各个阶段,依次向下,逐步求精的方式完成软件项目;
2、每一阶段都有每一阶段明确的任务,每一阶段的完成都有相应的文档生成,
3、为下一阶段提供依据。
优点: 能够逐步稳定的使项目向前发展。
缺点: 无法解决软件需求不明确或者变动的问题。
1、在项目生命周期的后期才能看到最终的成果,用户不能提前了解到软件产品的实际效果。
2、当需求发生变化时,整个软件项目需要从头再来,增加了软件的周期成本。
3、通过很多的强制完成日期和里程碑,来跟踪各个项目阶段,容易使软件项目质量收到影响。
②增量模型
通过对用户的需求,建立一个满足用户核心功能的产品,并投入使用,在使用的过程中,用户根据实际需求,提出新的需求(增量)。开发人员再将新的需求逐步增加到现有的系统中。
优点:
1、用户可以很快的体验到软件产品,并且投入使用创造价值。
2、可以针对实际的使用情况增加新的比较明确的需求,也减少了用户学习使用的时间
3、减少软件项目的开发风险。
缺点:
1、每个增量必须提供一些系统功能,这使得开发者很难根据客户需求给出大小适合的增量
2、软件必须具备开放式体系结构(困难)
3、 易退化成边做边改的方式,使软件过程控制失去整体性
3、 快速原型模型:
原型:一个部分开发的产品,使客户和开发人员能够对计划开发系统的相关方面进行检查
原型化的目的:
1、根据用户的需求快速建立一个原型系统,该原型能够满足用户的部分需求,用户根据原型,提出新的需求或者原需求的修改,一旦需求建立,原型系统将被丢弃。
优点:
1、通过快速 原型的建立,让用户试用,使用户的需求更加明确,降低了用户需求确定的难度。
2、通过原型,可以很快的让用户体验到产品的功能,并激发用户产生新的需求。
减少需求不明带来的风险
缺点:
1、注重需求的确定和功能的实现,而容易忽略产品的质量
2、一旦用户对原需求发生较大改变,需要产生新的模型
3、要求技术人员在短时间内制造原型模型,技术要求比较高
适用于目标客户不懂计算机
4 螺旋模型
把开发活动和风险管理结合起来控制风险
1、是快速原型模型和瀑布模型的结合,并且加入了风险分析;
适用于需求不明确或者需求可能发生变化的大型复杂的软件系统。
支持面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。
喷泉模型
考虑的焦点是集成,而非实现
构件/组件(Component)
统一过程模型
基于面向对象方法学
• 使用统一建模语言UML(Unified Modeling Language)
敏捷开发
项目管理四要素:人员、产品、项目、过程(概念)
软件度量有哪些方法
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动。
软件项目管理的4P要素
过程(Process)
根据项目特征选择合适的过程模型
根据过程模型进行项目分解
项目(Project)
软件项目管理的成熟化也需要度量与数字化,目的是持续改进软件过程,并用于项目估算、质量控制、生产率评估等。
软件项目度量的内容
▪ 生产率度量
▪ 质量度量
行业及组织的历史数据是软件项目度量的基础
▪ 通过对质量和(或)生产率的测量进行规范化而得到的,这些测
量是根据开发过的软件的规模得到的。
▪ 千行代码( KLOC ): 这些代码指的是源代码,通过源代码的
行数来直观度量一个软件程序有多大规模
▪ 生产率(PM):PM = L / E, L表示代码总量(单位:KLOC),E
表示软件工作量(单位:人月)
▪ 每千行代码的平均成本( CKL ):CKL = S / L,S为软件项目总
开销 , L表示代码总量(单位:KLOC)
▪ 代码出错率(EQRl):EQRl = Ne / L,Ne表示代码出错的行数,
L表示代码总量(单位:KLOC)
▪ 文档与代码比(Dl):Dl = Pd / L,Pd表示文档页数, L表示代
码总量(单位:KLOC)
▪ 优点
▪ 简单易行,自然直观
▪ 缺点
▪ 依赖于程序设计语言的表达能力和功能
▪ 软件开发初期很难估算出最终软件的代码行数
▪ 对精巧的软件项目不合适
▪ 用软件的功能表示软件的规模
▪ 应用最广泛的是功能点(Function Point, FP)法
▪ 项目开发初期就可估算出
▪ 优点
▪ 与程序设计语言无关, 在开发前就可以估算出软件项目的规模
▪ 不足
▪ 没有直接涉及算法的复杂度,不适合算法比较复杂的软件系统;
▪ 功能点计算主要靠经验公式,主观因素比较多
概念
项目启动之前,软件团队应该估算将要做的工作、所需要的资源、成
本、从开始到完成的时间,也即是对这些内容进行预测
策略
项目度量方法为项目估算提供了依据与有效输入
尽量把估算推迟到项目的后期进行
根据已经完成的项目进行估算
COCOMO经验估算模型——概述
定义:对项目进行任务划分,定义任务之间的依赖关系,并进行时间
估算和资源分配,确保以最佳的时间与成本输出满足质量要求的产品
关键路径(critical path) :
在任务网络图中,从项目开始到项目完成有许多条路径,路径上所有
弧权重之和最大的路径(路径最长)叫关键路径。
非关键路径(noncritical path):