本章综述:
第一节为软件构造的流程,主要讲了传统的开发流程模型(两类,线性和迭代),包括瀑布模型,增量模型,V-model,原型模型(迭代),螺旋模型(迭代,重风险评估);随后讲了现在应用的敏捷开发(快速迭代,每次迭代增加一部分内容,注重人的交互)。由于讲授内容只是对模型有一个大体的介绍,大家可以在CSDN或其他博客平台找更多的资料来深入了解。因此对第一节就不再赘述了。
第二节则更多的是每个过程相对具体的说明以及常用技术、构造工具(如Eclipse),同时也会讲述狭义的“构造”(biuld)的子过程、biuld常用工具(如Ant、Maven)。
下面主要写一写第二节
注意:本节仍然主要是对软件构造过程的一个相对抽象的了解,仅仅是对相关内容做一个介绍说明,至于深入的技术细节等会在下面数章的课程中讲到,因此我只会列出一些个人觉得需要积累的知识点以及学习总结。
一.软件构造的总体过程:Design -> Programming/refactoring -> Testing and Debugging -> Dynamic code analysis -> Code review and static code analysis -> Biuld -> Release
1.programming (大体概述,没有总结性知识)
a.语言:从用途划分(编程建模配置构建) 从形态划分(基于语言学(常用)、数学、图形)
b.工具(IDE)内含文本编辑器、文件管理、编译器、biuld等
c.提到了建模语言(UML):以一套规则的定义来讲系统知识、信息等可视化,便于分析。(注意:在这里老师给出并介绍了class diagram(表述类间的关系)、sequence diagram(说明哪个对象依次调用了哪个方法)、component diagram(系统各个组成部分比如插件等的联结关系)后续课程会用到)
d.配置语言(如XML)用于配制程序的参数和初始设置,也就是配置环境等。一般来说使用哪种配置工具决定使用哪种配置语言。
2.static / dynamic code analysis
Static:利用工具进行静态代码评审、走查、正式会议审查等,发现代码中的错误(对java语言的理解错误、(潜在的)bug、对设计理解的错误等)
Dynamic:需要运行程序来发现错误,主要用于分析时间空间复杂度、发现代码潜在问题等。
3.关于test和debug
先有test 发现程序错误 debug找出错误的根源
debug建立在“成功”的测试基础上(所谓“成功”就是确实发现了程序的错误,除非程序没有错误)
debug和test不能提高软件的质量,只能找出代码存在的问题并解决
4.关于重构
为了使结构简洁性能优良 需要重构
重构不等于重写代码,重构并不改变代码的功能,(仍然要符合规格说明),在功能不变的前提下,哟话代码的内部结构。从而提升代码质量,提高效率
方法:去掉冗余(提取函数)等
工具:Eclipse为例,比如统一rename变量名(图片引自课程讲义):
二.Biuld各子过程:编译、打包、测试、验证等
仅写一些个人觉得需要注意的内容:
compile 阶段, 解释型语言检查后直接放在发行包中,(无需像编译型语言需要先编译为目标文件再打包)进入机器运行。而web-based应用往往混合着两种语言以及配置和数据文件,因此部分文件(编译型语言的源代码)需要转为目标文件再打包,其余的直接打包。
另外,JavaScript 以及static HTML文件可以直接被扔到发行包中,在用户那编译运行,而JSP、PHP pages还有java源码等就需要自己编译执行。
biuld通常有以下几种形式:developer biuld(开发者在个人的workspace中biuld),release biuld(最终发布的版本的biuld),以及sanity biuld(实现一小部分内容就biuld测试,一般在开发过程中持续多次,持续集成)
持续集成 :不团提交不断测试 不断继承
Biuld tool :make(老了),Ant (也有点老了),Maven,Gradle,Eclipse
Ant相对于make来说,使得配置文件更加简洁,结构化清晰,方便实用,随后的maven则支持许多库的配置的导入,使得配置更加方便。