【软件构造】课件精译(四)软件构造过程与工具

一、本章概述

1、软件构造的一般过程:设计→编程/重构→Debug→测试→构建→发布

编程/重构
审查和静态代码分析
Debug和测试
动态代码分析/剖析

2、软件构造的狭义过程(构建):验证→编译→链接→测试→打包→安装→部署

构建系统:组件和进程
构建变量和构建语言
构建工具:Make, Ant, Maven, Gradle, Eclipse

3、总结

二、本章目标

了解软件构造的一般过程(设计、编程、调试、生成、发布)。
使用Eclipse IDE作为Java构建环境和工具。
了解典型的评审工具和静态分析、调试(dumping、日志记录)和测试,以及动态分析/剖析。
学习狭义软件构建过程(构建):验证,编译,链接测试,打包,安装,部署。
使用一个构建工具(Make,Ant,Maven,Gradle,Eclipse IDE)来构建自己的Java项目。

三、正文

1、软件构造的一般过程

在这里插入图片描述

(1)编程

构造语言
编程语言(例如:C,C++,Java,Python)
模型语言(例如:UML)
配置语言(例如:XML)
基于语言学的
基于数学的(正式的)
基于图形的(可视化的)

编程语言

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编程工具
集成开发环境(IDE):为程序员提供软件开发的综合设施。
IDE通常包括:
带有智能代码完成、代码重构工具的源代码编辑器,文件管理工具,图书馆管理工具,类浏览器、对象浏览器、面向对象的类层次结构图,图形用户界面(GUI)生成器,编译器、解释器,构建自动化工具,版本控制系统
另外,IDE应该能够被更多第三方工具扩展。
举例:Eclipse
在这里插入图片描述
在这里插入图片描述

建模语言和工具

建模语言是一种人工语言,用于表达信息、知识或系统,以一套一致的 规则定义来可视化、推理、验证和交流系统的设计。
UML:统一建模语言
在这里插入图片描述

用例图在这里插入图片描述

类图
在这里插入图片描述

时序图
在这里插入图片描述

组件图
在这里插入图片描述

配置语言

用来配置程序的参数和初始设置,应用应提供工具支持配置文件的维护。
举例:
Key-Value texts (.ini, .properties, .rc, etc)
XML, YAML, JSON

(2)审查和静态代码分析

代码审查是对源代码的系统性检查,正式评审会, 逐行审查代码,轻量级代码审查要求相对第一点。

(3)动态代码分析/剖析

运行程序以分析代码;程序需要经过充分的测试;利用测试度量技术(如覆盖率)确保代码的可能功能均被充分测试到;用来测量程序的时空复杂度,特定指令或函数的调用频率或持续时间。

(4)Debug和测试

测试为软件的利益相关者提供有关被测产品或服务质量的信息。
调试是识别错误的根本原因并对其进行纠正的过程;调试往往是成功测试的后续环节,成功测试不意味着没有发现错误, 反而相反。
测试和调试不会提升软件质量,而是发现缺陷的主要手段。 软件质量应通过认真的分析需求、良好的设计、高质量的编码来确保;调试是最后的手段。

(5)重构

重构是在不改变代码外部行为的前提下,改善其内部结构。
在这里插入图片描述

2、软件构造的狭义过程
(1)构建系统

典型的构建情况:编译代码;打包和测试解释型语言;编译和打包Web应用程序;执行单元测试;进行静态分析,得到bug报告;输入不同格式的输入文件,得到人可读的文档。
编译语言:编译后得到目标文件, 后续被链接入类库或者可执行程序中;最终得到可部署到目标机器的发布包。
涉及到版本控制工具、源树和目标树、编译工具、构建机器、发布包和目标机器等概念。
在这里插入图片描述
解释型语言
解释的源代码不会编译成目标代码,因此不需要目标树。源文件本身被收集到一个发布包中,准备安装在目标计算机上。
编译工具专注于转换源文件并将其存储在发布包中。
编译成机器代码不在构建时执行,它可能在运行时执行。
在这里插入图片描述
Web应用
基于Web的应用程序的构建系统是编译代码、解释代码和配置或数据文件的混合体。一些文件(例如HTML文件)直接从源树复制到发行包,而其他文件(例如Java源文件)首先被编译成目标代码。
在这里插入图片描述
(很多东西都是大家知道的东西,后面的对于这种内容就直接不放上来了
单元测试,静态分析等
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)编译系统组件

涉及到以下概念:版本控制工具、源树、目标树、编译工具、构建工具、构建机器、发布包和目标机器、包的类型。

(3)构建过程和构建描述

构建过程
在这里插入图片描述
构建描述
构建工具需要构建描述信息,基于文本的格式编写,例如Make与Makefile文件。
如何使用构建系统
开发者构建:开发人员已从VCS中签出源代码,并正在一个专用工作区中构建软件。生成的发布包将用于开发人员的私有开发。
发布构建:提供完整的软件包供测试组验证。当测试人员确信软件具有足够高的质量时,客户就可以使用相同的软件包。用于版本生成的源树只编译一次,并且源树从不被修改。
健全性构建:类似于发布版本,只是软件包不是为客户准备的。相反,构建过程确定当前源代码是否没有错误,并通过一组基本的健全性测试。这种类型的构建每天可以发生很多次,并且往往是完全自动化的。

(4)Java的编译工具

运行环境:JVM
编译工具:The Java Development Kit (JDK) 、GNU Java Compiler、Eclipse Java Compiler (ECJ)等
目标文件:与机器无关的字节代码,用于描述程序流,而不是直接编译为本地机器代码。
Java 语言是动态进行类的加载,在运行时根据需要,类会被加载入内存。 另外,Java程序的执行需要包含main函数的类和class路径。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于动态加载的特性,可以随时替换和升级JAR文件(需要确保兼容性)。

(5)子目标和构建变量

构建的方式
可以存在任意数量的构建方式,每个方式都使用稍微 修改的构建过程并创建一个稍微不同的发布包。
三种不同的构建方式
构建子目标:也称为局部构建,避免耗时的完全构建,限制构建涉及的某块数量
构建不同的软件版本:如家庭版、专业版、企业版等
面向不同目标架构的构建:不同的CPU指令集、不同的操作系统等

(6)构建工具

Make
# make new 生成子目录
# make build 在bin中编译并产生class文件
# make clean 清理编译结果
# make rebuild 相当于clean+build
# make run 检验编译结果
# make jar 产生可执行jar文件
Apache Ant
ant compile: 把所有java文件编译成class
ant jar: 将class文件打包成一个jar文件
ant package: 产生一个发布版本并有版本号
ant clean:删除所有生成的文件
ant javadoc:通过Javadoc tool产生文档
ant: 用于执行默认目标,该目标很可能与包目标相同
构建文件:build.xml
在这里插入图片描述
Maven
(这个我用过,不过是IDEA下的图形界面,在我的认识里就是一个引用库的管理工具,很多引用通过在pom.xml进行设置就可以将包下载并加载到程序里
在这里插入图片描述
Gradle

百度百科
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。

通过Eclipse构建Java工程

3、总结

软件构造的一般过程:设计、编程、调试、生成、发布
编程/重构
评审和静态代码分析
Debug(dumping和日志记录)和测试
动态代码分析/剖析
狭义软件构建过程(构建):验证,编译,链接测试,打包,安装,部署
构建系统:组件和进程
构建变量和构建语言
构建工具:Make,Ant,Maven,Gradle,Eclipse IDE

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值