软件工程概述
https://www.bilibili.com/video/BV1hg411V7Bm/?p=74
1)软件生存周期
软件:包含程序、数据及相关文档
软件工程:涉及到软件开发、维护、管理等多方面的原理、工具与环境。最终的目的是开发高质量的软件。
目的:提高软件生产率、提高软件质量、降低软件成本。
问题定义:要解决的问题是什么
可行性分析:研究问题的范围,是否值得去解,是否有可行的解决办法
需求分析:确定软件系统必须做什么,确定功能、性能、数据和界面要求,确定逻辑模型
总体设计:概括地说,如何解决这个问题?指定推荐系统的详细计划并设计软件的结构
详细设计:怎样具体实现这个系统?对模块完成的功能进行具体描述
编码和单元测试:写成某种特定程序设计语言表示的源程序清单及测试每一个模块
综合测试:通过各类型的测试使软件达到预定的要求
维护:通过各种必要的维护活动使系统持久满足用户的需要
文档的作用:
- 提高软件开发过程的能见度;
- 提高开发效率,便于发现错误和不一致性;
- 作为开发人员在一定阶段的工作成果和结束标志;
- 记录开发过程中的有关信息,便于协调以后的软件、开发、使用和维护;
- 提供对软件的运行、维护和培训的有关信息,便于相关人员和用户之间的协作、交流和了解;
- 便于潜在用户了解软件的功能、性能等各项指标,为他们选购符合自己需要的软件提供依据。
2)软件生存周期模型
https://www.bilibili.com/video/BV1hg411V7Bm/?p=75
类型 | 特点 |
---|---|
瀑布模型
Waterfall Model |
将软件生存周期各个活动规定为依线性顺序连接起来的若干阶段的模型。
适合需求明确的模型,但缺乏灵活性,客户需完整表示需求 |
演化模型
Evolutionary Model |
适合对需求缺乏准确认识的情况,根据用户使用过程中提出的意见和建议
对原型不断重复改进,缺点是要对用户要求加以控制 |
增量模型
Incremental Model |
每一个线性序列产生软件的可发布的“增量”,但需对变更进行规划,
否则会造成后来增量的不稳定,部分增量可能需重新开发 |
螺旋模型
Spiral Model |
结合瀑布模型和演化模型的特点,并加入了风险分析,适合用户需求的
动态变化,适合庞大、复杂并且具有高风险的系统 |
喷泉模型
Fountain Model |
以用户需求为基础,适合面向对象开发,开发过程具有迭代性和无间隙性,
开发要重复多次,且开发活动不存在明显边界 |
统一过程
Unified Process |
用例和风险驱动,以架构为中心,迭代的增量开发过程,将开发项目划分
为小的“袖珍项目”,其每个都包含所有元素 |
敏捷方法
Agile Development |
通过“尽可能早地、持续地对有价值的软件的交付”使客户满意。
包括极限编程XP、水晶法、并列争求法和自适应软件开发ASD |
瀑布模型非常依赖文档,每一个环节都会产出一个阶段的文档;
因为非常依赖明确的需求分析,每一个环节都依赖前置环境的正确,所以越靠前的环节出现问题,对整个项目的影响就越大,尤其是需求分析阶段。
开发一次。
每一个环是一个小的原型模型周期,在每一个周期中都加入了风险分析阶段,开发重复迭代多次,周期非常长。
喷泉模型强调:阶段与阶段之间几乎是无间隙的,如果一个阶段需要改变,那么之前的阶段就都要进行响应的调整、改变,开发也要重复迭代多次。
敏捷方法:强调参与人员少,快速交付,无文档(没有时间),周期短,可能一周就要出一版。
3)软件开发方法
软件开发方法:结构化方法、Jackson方法、原型化方法、面向对象开发方法。
类别 | 特点 |
---|---|
结构化方法 | 自顶而下、逐层分解。原则是分解与抽象,开发周期长,
不适用于大规模、复杂的项目以及变化的需求 |
Jackson方法 | 面向结构的开发方法。主要包括JSP(Jackson Structured Programming)和JSD(Jackson System Development) |
原型化方法 | 适合用户需求不清晰、业务理论不确定、且需求经常变化的情况适合小规模的项目 |
面向对象开发方法 | 包括面向对象分析、设计与实现,适合比较复杂的项目模型 |
考点1:软件声明周期
In general, a typical () model is composed of several phases, such as requirements analysis phase, general/detailed design phase, implementation phase, system acceptance testing phase.
A、Waterfall √
B、Incremental
C、Spiral
D、Prototyping
解析:
requirements analysis phase:需求分析阶段
general/detailed design phase:概要/详细设计阶段
implementation phase:开发阶段/实现阶段
system acceptance testing phase:系统验收、测试阶段
考点2:开发方法
以下关于结构化方法的叙述中,不正确的是()。
A、指导思想是自顶向下、逐层分解
B、基本原则是功能的分解与抽象
C、适合解决数据处理领域的问题
D、特别适合解决规模大的、特别复杂的项目 √
解析:
面向对象开发方法才适合解决规模大、特别复杂的项目