前情提要
课程连接:
https://www.bilibili.com/video/BV1Lt411874E?p=2
课件内容:
就是下面的笔记了,没有其他的内容
什么是软件设计和软件工程
- 软件工程概念的提出将近40年,但是客观的讲软件工程与别的行业相比教还很不成熟,还处在一个摸索发展的阶段
- 软件工程的发展历史
- 20世纪50年代软件诞生了,那是软件的从业人员多数为数学家和电子工程师.
- 早期的软件都是由使用者自己编写的,往往带有很强的个人色彩.并没有一个系统的开发流程。
- 20世纪60~70年代,软件业进入了一个发展时期,出现了所谓的软件公司。随着软件规模的扩大,软件需求的复杂,软件维护的难度变得越来越大.出现了==>软件危机
- 这样人们就开始思考如何控制软件的开发,在1968年在德国召开的一次国际学术会议上第一次提出了==>软件工程的概念
软件的生命周期
1、问题的定义及规划: (可行性分析报告和软件开发计划)
此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
2、需求分析: (需求分析说明书和初步的用户手册)
在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。“唯一不变的是变化本身。”,同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。
3、软件设计: (概要设计、详细设计)
此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。
4、程序编码: (提交源程序及清单)
此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
5、软件测试: (提交软件维护测试报告)
在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试(白盒)、集成测试(黑盒,功能测试、强度性能测试)以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
6、运行维护:
软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。(提交软件维护报告)
常用的软件生命周期模型及选择
瀑布模型–最早出现的软件开发模型
增量和迭代模型
-
增量迭代是RUP (Rational Unified Process)统一过程常采用的软件开发生命周期模型。
-
增量和迭代有区别但两者又经常一起使用,所以这里要先解释下增量和迭代的概念。
- 假设现在要开发A、B、C、D四个大的业务功能,每个功能都需要开发两周的时间.
- 则对于增量方法而言可以将四个功能分为两次增量来完成
- 第一个增量完成A,B功能,第二次增量完成C,D功能。
- 而对于迭代开发来将则是分两次迭代来开发
- 第一次迭代完成A、B、C、D四个基本业务功能但不含复杂的业务逻辑
- 而第二个功能再逐渐细化补充完整相关的业务逻辑。
- 在第一个月过去后采用增量开始时候A、B全部开发完成,而C、D还一点都没有动,而采用迭代开发的时候A,B,C,D四个的基础功能都已经完成。
-
RUP强调的每次迭代都包含了需求、设计和开发、测试等各个过程,而且每次迭代完成后都是一个可以交付的原型。
- 迭代不是并行,在每次迭代过程中仍然要遵循需求->设计->开发的瀑布过程。
- 迭代周期的长度跟项目的周期和规模有很大的关系。
- 小型项目可以一周一次迭代,而对于大型项目则可以2-4周一次迭代,如果项目没有一个很好的架构师,很难规划出每次迭代的内容和要到达的目标,验证相关的交付和产出。
- 因此迭代模型虽然能够很好的满足与用户的交付和需求的变化,但确是一个很难真正用好的模型。