第五章 公安信息化与大数据应用 软件技术基础


1,软件工程概述

软件是软件工程的研究对象,也是软件工程的产品形态与客观存在。

工程是将理论和知识应用于实践的科学,其目的是经济有效地解决实际问题

软件工程是为了解决开发成本效益和软件质量的问题而产生的,倡导以工程的原理,原则和方法进行软件的开发,用系统的,可控的,有效的方式构建高质量的软件产品

1.1软件的定义

软件=程序+数据+文档

程序:计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能

数据:使得程序能够适当地操作信息的数据结构

文档:描述程序的研制过程,方法和使用的图文资料。

1.2软件的本质特性

软件具有复杂性,一致性,可变性和不可见性等固有的内在特性,这是造成软件开发困难的根本原因。

复杂性

 

一致性

可变性

  人们总是认为软件是容易修改的,但忽视了修改带来的副作用

  不断的修改最终导致软件的退化,总而结束其生命周期

不可见性

 

1.3软件工程的产生和发展

软件工程诞生

1969年,北大西洋公约组织(NATO)召开国际会议,提出’软件工程‘概念和术语

 1.4

#工程的含义

工程是将理论和知识应用于实践的科学,以便经济有效地解决问题

*大规模地设计与建造

*复杂问题与目标分解

*团队协作与过程控制

#软件工程的基本概念

软件工程是将系统性的,规范化的,可定量的方法应用于软件的开发,运行和维护,即工程化应用到软件上,并对其中所属的方法进行研究。

软甲工程的目标——创造’足够好‘的软件

*较低的开发成本

*按时完成开发任务并及时交付

*实现客户要求的功能

*具有良好性能,可靠性,可扩展性,可移植性等

*软件维护费用低

#软件工程的基本元素

过程:支持软件开发各个环节的控制和管理

方法:完成软件开发任务的技术手段

工具:为软件开发方法提供自动的或半自动的软件支撑环境

目标

 

 2.编写高质量代码

2.1编程过程与规范

 软件编码规范是与特定语言相关的描写如何编写代码的规则结合。

目的

-提高编码质量,避免不必要的程序错误

-增强程序代码的可读性,可重用性和可移植性

现实

-软件全生命周期的70%成本是维护

-软件在其生命周期中很少由原编写人员进行维护

 Python编程规范:程序模板

 

 学会只编写够用的注释,过犹不及,重视质量而不是数量

-好的注释解释为什么,而不是怎么样

-不要在注释中重复描述代码

-当自己在编写密密麻麻的注释来解释代码,需要停下来看是否存在更大的问题

-想一想在注释中写什么,不要不懂脑筋就输入

-写完注释之后要在代码的上下文回顾一下,它们是否包含正确的信息?

-当修改代码时,维护代码周围的所有注释

 

 Python编程规范:命名

好的名字一目了然,不需要读者去猜,甚至不需要注释

-Python库的命名约定有点混乱,因此很难使之变得完全一致,不过还是有公认的命名规范。

-新的模块和包(包括第三方的框架)必须符合这些标准,但对已有的库存在不同风格的,保持内部的一致性是首选的。

不需要编写需要外部文档支持的代码,这样的代码是脆弱的,要确保你的代码本身读起来就很清晰。

编写自文档化的代码

-唯一能完整并正确地描述代码地文档是代码本身

-编写可以阅读的代码,其本身简单易懂

 

 3.1单元测试概述

单元测试是对软件中的最小可测试单元进行检查和验证。

单元测试原则

快速的-单元测试应能快速运行,如果运行缓慢,就不会愿意频繁运行它

 

 黑盒测试(Black Box Testing)

 白盒测试(White Box Testing)

 

4.软件开发过程

瀑布模型-将基本的开发活动看成是一系列界限分明的独立阶段,这是一种计划驱动的软件过程,有利于规范软件开发活动

原型化模型-原型是一个部分开发的产品,用于加强对系统的理解,有助于明确需求和选择可行的设计策略

迭代式开发-将描述,开发和验证等不同活动交织在一起,在开发过程中建立一系列版本,将系统一部分一部分地逐步交付

可转换模型-利用自动化的手段,通过一系列转换将需求规格说明转化为一个可交付使用的系统

 

5.程序设计语言

 1.程序设计语言的分类

(1)机器语言(面向机器)

  机器语言是一种用二进制‘0’和‘1’表示计算机各种操作的程序设计语言。一条机器指令能够控制计算机执行一种操作

  计算机能够直接理解和执行使用机器语言编写的程序,执行速度快,占用内存少;但难于记忆,编程困难,可读性差,容易出错,可移植性差

(2)汇编语言(面向机器)

  为了克服机器语言的缺点,人们采用与代码指令实际含义相近的英文缩写词,字母和数字等符号来取代指令代码,于是产生了汇编语言。

  汇编语言是一种用助记符来表示各个基本操作的程序设计语言。如用ADD表示加法操作,SUB表示减法操作等。

  汇编语言的出现,大大减少了程序编写,阅读,修改,维护等方面的工作量,但汇编语言也是一种面向机器的语言,计算机不能直接执行,通用性和可移植性差,必须经过汇编程序翻译成机器语言后才能在计算机上执行,需要程序元对计算机内部非常了解。

 (3)高级语言(面向用户)

  高级语言是向用户的,基本上独立于计算机种类和结构的语言。

  其最大的优点是:形式上接近于算术语言和自然语言,概念上接近于人们通常使用的概念。高级语言的一个命令可以代替几条,几十条甚至几百条汇编语言的指令。因此,高级语言易学易用,通用性强,应用广泛。

 

相关