软件基础学习

一、软件基础

1.1、软件概念

​ 是交给客户一整套的方案,包含计算机程序以及其他文档

  • 软件=程序+文档(功能需求、软件设计、项目计划、项目报告、用户手册)

  • 文档:通过文档可以让人清楚知道软件结构、程序设计思想、系统运行环境、软件操作方法,让人们对软件更方便的使用和维护。

1.2、软件分类

应用程序:满足人们对软件的使用

操作系统:管理硬件和软件的一整套操作系统

驱动程序:连接操作系统与硬件系统。

其他程序:编译语言(编辑器把高级语言程序转变成等价的机器语言格式)、数据库(按照数 据结构来组织存储和管理数据的仓库,用户可以对数据的增删改查)

1.2.1、语言分类

机器语言:机器识别的语言,二进制语言,指挥识别0、1

汇编语言:对机器语言的封装,直接和硬件交互,操作硬件。

高级语言:面向人的角度,用人的字符去编写程序,让机器对人的字符进行翻译执行

高级语言拓展:高级语言分编译语言(程序需要进行编译,将高级语言翻译成机器语言目标程序如等C、Java,效率快)和解释语言(边翻边遍执行如python、js、php等)

1.3、软件架构

​ 软件架构有两种:

C/S:client/server 客户端/服务器

img

B/S:browser/server 浏览器/服务器

img

区别:bs没有客户端,cs有客户端。cs更新客户端,bs不跟新客户端。bs使用HTTP/HTTPS协议,cs公司自己的协议,cs模型安全性高(自己公司的协议)

1.4、软件研发

1.4.1、基本概念和流程

基本概念:根据客户需求建造出软件系统或者系统中软件部分的过程,简单讲就是我们要做一个什么东西

大致流程

需求澄清(学习需求,确定系统的运行环境,确定软件的功能和性能需求)-版本计划(给整个软件研发做个计划)-需求分析-软件设计-UI设计(界面设计)-测试计划-编码-调试-测试-软件交付一系列过程称为软件研发。

1.4.2、软件开发模型

瀑布模型
img

计划-需求分析-设计-编码-测试-运行维护

特点:上一阶段的结果是下一段的输入,相邻的两个阶段有因果关系,中间一个环节出现问题,返回重做。

优点:

  • 有利于大型软件开发过程中人员的组织与管理
  • 有利于开发工具和方法的使用
  • 提高软件质量和效率

缺点:

  • 初始化阶段指出全部需求
  • 中间环节出现问题,重新返回重做
敏捷研发模型

一种以人为核心、迭代循序渐进的开发思想,在软件的研发被切分多个阶段,各阶段都具备独立运行,以及独立交付的特征。

img

​ 迭代 sprint:在进行较大的项目任务时,将研发的过程分为若干轮次,每一个轮次称为一个迭代,迭代要经历从项目计划、设计、实现、报告完毕整个过程

​ 软件公司的术语:站立会(早会15分钟左右一群人站在一起),看板(黑板,任务分配,计划),燃尽图(项目进度图表示图)

1.5、软件开发

基本概念:软件开发不只是软件开发,包括

需求分析(需求来源用户,BA及产品经理对用户需求整理)-

软件设计(概要设计+详细设计)-

编码(简单讲就是为了解决某个问题,用人的思维将程序语言,编写成代码的过程)-

调试过程称为软件开发。

1.5.1、软件开发设计

软件设计就是将用户需求变成程序系统的重要环节,分两块概要设计和详细设计

概要设计:总体划分各个模块,定义各个功能模块之间的接口

详细设计:定义各个模块之间接口的详细内容和具体的实现算法

1.6、软件环境

环境概念:软件所依赖的硬件、服务、网络等的总称

环境分类:开发环境,测试环境,生产环境(线上)

1.7、软件部署

​ 将软件部署到网络、硬件、服务上去的过程。

1.8、软件接口

接口:一个已经编译可以直接调用的函数库

接口分类:内部接口(供软件内部测试的接口)和外部接口(HDML接口、USB接口,第三方)

1.9、软件生命周期,人员架构

生命周期:

需求-设计-编码-测试-上线-维护-升级-废弃

人员架构:

项目经理-产品经理-架构师-需求师-UI+开发+测试-实施-运维

posted @ 2022-03-09 12:41  枯树老鸭  阅读(250)  评论(0编辑  收藏  举报