精华内容
下载资源
问答
  • 五化管理 标准化 规范化
    千次阅读
    2020-07-11 17:37:14

    规范化标准 学习笔记

    规范化标准

    为什么要有规范化标准

    • 软件开发需要多人协同
    • 不同开发者具有不同的编码习惯和喜好
    • 不同的喜好增加项目维护成本
    • 每个项目或者团队需要明确统一的标准

    哪里需要规范化标准

    • 代码、文档、甚至是提交日志
    • 开发过程中人为编写的成果图
    • 代码标准化规范最为重要

    实施规范化的方法

    • 编码前人为的标准约定
    • 通过工具实现Lint

    常见的规范化实现方式

    • ESLint 工具使用
    • 定制ESLint校验规则
    • ESLint对TypeScript的支持
    • ESLint结合自动化工具或者Webpack
    • 基于ESLint的衍生工具
    • StyleLint工具的使用

    一、ESLint

    1. ESLint介绍

    • 最为主流的JavaScript Lint工具,检测JS代码质量
    • ESLint很容易统一开发者的编码风格
    • ESLint可以帮助开发者提升编码能力

    2. ESLInt安装

    • 初始化项目: yarn init -y
    • 安装ESLint模块为开发依赖: yarn add eslint --dev
    • 通过CLI命令验证安装结果:yarn eslint -v

    3. ESLint 检查步骤

    • 编写“问题”代码
    • 使用eslint执行检测 : 执行yarn eslint 01-prepare.js,执行自动修复yarn eslint 01-prepare.js --fix
    • 完成eslint使用配置 : yarn eslint --init

    4. ESLint配置文件解析

    module.exports = {
      env: {
        // 运行的环境,决定了有哪些默认全局变量
        browser: true,
        es2020: true
      },
      // eslint 继承的共享配置
      extends: [
        'standard'
      ],
      // 设置语法解析器,控制是否允许使用某个版本的语法
      parserOptions: {
        ecmaVersion: 11
      },
      // 控制某个校验规则的开启和关闭
      rules: {
        'no-alert': 'error'
      },
      // 添加自定义的全局变量
      globals: {
        "$": 'readonly', 
      }
    }
    

    5. ESLint配置注释

    将配置写在代码的注释中,然后再对代码进行校验

    const str1 = "${name} is coder" // eslint-disable-line no-template-curly-in-string
    
    console.log(str1)
    

    6. ESLint 结合自动化工具

    • 集成之后,ESLint一定会工作
    • 与项目统一,管理更加方便

    7. ESLint结合Webpack

    eslint通过loader形式校验JavaScript代码

    前置工作:

    • git clone 仓库
    • 安装对应模块
    • 安装eslint模块
    • 安装eslint-loader模块
    • 初始化.eslintrc.js配置文件

    后续配置:

    reles: {
      'react/jsx-uses-react': 2
    },
      plugins: [
        'react'
      ]
    

    8 现代化项目集成ESLint

    9 ESLint检查TypeScript

    二、StyleLint

    1. StyleLint使用介绍

    • 提供默认的代码检查规则
    • 提供CLI工具,快速调用
    • 通过插件支持Sass、Less、PostCSS
    • 支持Gulp或者Webpack集成

    npm install stylelint --dev

    npx stylelint ./index.css

    npm install stylelint-config-sass-guidelines

    .stylelintrc.js

    module.exports = {
      extends: [
        "stylelint-config-standard",
        "stylelint-config-sass-guidelines"
      ]
    }
    

    运行:npx stylelint ./index.css

    三、Prettier 的使用

    近两年流行的前端代码通用型格式化工具,几乎可以完成各种代码的格式化。

    yarn add prettier --dev安装prettier到当前项目

    yarn prettier style.css将格式化的结果输出到命令行

    yarn prettier style.css --write 将格式化的结果覆盖原文件

    yarn prettier . --write对当前整个项目进行格式化

    四、Git Hooks 介绍

    代码提交至仓库之前为执行lint工作

    • Git Hook也称为Git钩子,每个钩子都对应一个任务
    • 通过shell脚本可以编写钩子任务出发时要具体执行的操作

    在一个Git仓库中,进入.git/hooks目录,然后看到很多sample文件,执行cp pre-commit.sample pre-commit,拷贝了一份pre-commit文件出来,把里面的内容先去掉,就写一句简单的echo看看Git钩子的效果(第一行是可执行文件必须要有的固定语法,不可以删除)

    #!/bin/sh
    echo "git hooks"
    

    然后回到仓库根目录,执行git add .,git commit -m"xx"

    就可以看到输出了git hooks,说明pre-commit这个钩子已经生效了

    五、ESLint结合Git Hooks

    很多前端开发者并不擅长使用shell,Husky可以实现Git Hooks的使用需求

    在已有了eslint的Git项目中,安装husky,实现在Git commit的时候,进行lint

    yarn add husky --dev

    package.json

    {
      "name": "GitHooks",
      "version": "1.0.0",
      "main": "index.js",
      "author": "jiailing <517486222@qq.com>",
      "license": "MIT",
      "scripts": {
        "test": "eslint ./index.js"
      },
      "devDependencies": {
        "eslint": "^7.3.1",
        "eslint-config-standard": "^14.1.1",
        "eslint-plugin-import": "^2.21.2",
        "eslint-plugin-node": "^11.1.0",
        "eslint-plugin-promise": "^4.2.1",
        "eslint-plugin-standard": "^4.0.1",
        "husky": "^4.2.5"
      },
      "husky": {
        "hooks": {
          "pre-commit": "yarn test"
        }
      }
    }
    
    

    然后执行

    echo node_modules > .gitignore

    git add .

    git commit -m "husky"

    可以看到我们的index.js的代码报错被输出到控制台了,并且Git commit失败了。

    说明husky已经完成了在代码提交前的lint工作。不过husky并不能对代码进行格式化,此时可以使用lint-stage

    yarn add lint-staged --dev

    package.json

    {
      "name": "GitHooks",
      "version": "1.0.0",
      "main": "index.js",
      "author": "jiailing <517486222@qq.com>",
      "license": "MIT",
      "scripts": {
        "test": "eslint ./index.js",
        "precommit": "lint-staged"
      },
      "devDependencies": {
        "eslint": "^7.3.1",
        "eslint-config-standard": "^14.1.1",
        "eslint-plugin-import": "^2.21.2",
        "eslint-plugin-node": "^11.1.0",
        "eslint-plugin-promise": "^4.2.1",
        "eslint-plugin-standard": "^4.0.1",
        "husky": "^4.2.5",
        "lint-staged": "^10.2.11"
      },
      "husky": {
        "hooks": {
          "pre-commit": "yarn precommit"
        }
      },
      "lint-staged": {
        "*.js": [
          "eslint",
          "git add"
        ]
      }
    }
    
    
    更多相关内容
  • 明确医院信息技术的 明确医院信息技术的 基础上, 基础上, 研究制定 研究制定 了《全国医院信息建 全国医院信息建 全国医院信息建 设标准规范标准规范标准规范 (试行 )》(以下 简称 ...
  • 《建设标准》针对目前医院信息建设现状,着眼未来 5-10 年全国医院信息应用发展要求,针对二级医院、三级乙等医院 和三级甲等医院的临床业务、医院管理等工作,覆盖医院信息 建设的主要业务和建设要求,从软...
  • 基于事故致因理论和我国高校管理体制,提出了高校实验室安全管理标准化程序,该标准化管理程序的构建包括设立安全管理机构、安全教育与培训、制定规章制度、应急管理以及建设实验室安全文化部分内容,这部分...
  • 为落实国家电网公司“三集 大” 体系对电力通信专业的新 要求, 提升电力企业通信管理的 信息化、规范化水平.通过开展通 信管理系统的标准化建设研究工
  • 工作流程标准化 前言 上篇文章我们讲了一下管理过程中提高效率的工具,这篇我们主要给大家说一下管理流程的标准化,那么具体体现在哪些方面呢? ————————————————————————————...

    文章目录

     一 什么是管理?我们为什么要管理?

    二 我们如何去管理?我们管理会碰到哪些问题?如何解决?

    三  如何打造一个高效的项目团队?

    四 管理中提高效率的工具有哪些

    五 工作流程标准化

    前言     

     上篇文章我们讲了一下管理过程中提高效率的工具,这篇我们主要给大家说一下管理流程的标准化,那么具体体现在哪些方面呢 ?

    ———————————————————————————————————————————————————

    在开始正文之前,我给大家先看一个截图

    上图是我2018年写的另一篇博文   一个合格的项目经理都需要做哪些事情?中的评论截图,当时有位项目经理(从名字看是)提出一个观点:项目经理的工作不是纯理论可以解决的,实际过程中事事皆学问,最终达到无招胜有招,见招拆招的境界。

    说实话 ,我做了几年的管理,能深深体会到他这句话的意思。的确在实际的工作当中会发生各种问题,我们不可能生搬硬套一套理论就可以让一个管理小白解决工作上碰到的所有问题。这很显然是不现实的,因为每家公司的环境和你所带领的团队都不可能完成是一样的。就像我们写代码一样,各种参数值甚至是参数值的范围都不确定,你想要一个明确的返回值是不可能的。

    但是上述的说法我认为是适合小团队,因为团队成员人数不多,一个项目经理可以处理所有团队成员反馈的问题。可以有时间,有精力去处理。但是如果一个团队慢慢壮大起来的话,人数越来越多,如果没有一套完整的标准化的工作流程工作及管理起来效率都会很低。

    1.为什么要标准化?

    有人说我们部门就几个人,做这个没必要。其实我个人实践下来,感觉团队成员越少,这个标准化越是容易推行,人多反而推行的不会很顺畅。团队人少的时候建立一套完成的标准化的流程,等团队成员壮大起来,再慢慢补充完善,就会方便很多。

    标准化的必要性从以下几个方面可以体现出来

    1)新员工培训

    很多时候公司都是新人来了几天,刚让老员工把业务以及相关的东西都介绍清楚,花了很大的时间人力成本,结果新人没待几天就走了,如果这时候我们有一套完成的标准化的培训流程,新人培训内容,培训人,培训时间,培训地点,以及对应的培训课件及资料都提前制定好,甚至可以录屏整个培训过程,那么我们后面来了新人 直接可以让他看之前培训的整个视频,这样是不是节省了我们很多成本?

    2)工作交接

    熟悉部门公司业务和技术的员工离职了、熟习该工作流程的员工不在了,于是事情不是停滞,就是要从头重新摸索,这代价实在是太大了。更严重的是因为这种状况随时都存在着。当工作流程的标准化完成之后,平时不只可以用来培训新入职人员,还可以用来培训其他人。所以不管有任何人异议动的状况发生,马上有人可以替补,这么一来,就不会产生危机的事件。就算代理人有部份工作流程并不太熟悉,也可以藉由标准化流程资料或视频的帮助迅速上手,不至于产生技术或能力的断层。

    3)工作流程优化

    在制作标准化流程的过程当中,因为要写成文字、拍成图片或录成视频,所以必需仔细的斟酌与推敲。于是多余、重复的会被删除;遗漏、疏失的地方会被增补;矛盾、冲突的地方会被调整与梳理。在这样的讨论、辩证、调整的状况下,流程就会越来越简洁有力,因此我们可以说,制作标准化的过程,本身也是一个工作流程优化的过程。

    4)任务分配

    流程标准化建立好了之后,管理者可以很清楚的看到每一个工作流程的难易程度,以及每个工作流程大约需要使用的时间。有了这个依据之后,在分配工作与任务的时候,就能够比较适性且公平的将工作分配下去。

    标准化是一门技术,可以将复杂的工作分解开来,以方便复制传承、方便培训教学、方便授权管理。

    2.如何做好工作流程管理呢?

    在小团队中,工作流程大家都心领神会,并不需要太多条条框框,但是当团队规模扩大了,却还没有进行工作流程建设,这就很危险了,流程混乱会浪费团队大量时间和精力。

    1)梳理日常工作,设计标准化的工作流程

    例如:将产品研发团队的日常工作,分成了需求管理、规划迭代、进度管理、缺陷管理、评审回顾等流程,流程清晰分工明确,研发效率大大提高;将部门招聘工作提前设定好各个岗位的招聘标准,招聘岗位、岗位职责、

    岗位要求标准、岗位薪资范围、岗位加分条件等 、各岗位面试参与面试人员 提前梳理好通知到大家,这样工作肯定是可以事半功倍,这个就不一一例举了。

    2)制度规范/公开透明

    设计好工作流程后,如何更好地执行下去呢?这还需要团队管理者制定明确的规范,并对全体成员公开透明。如达巴瓦拉严格遵守他们的工作流程,不送完餐盒他们自己绝对不能吃饭,出现重复错误就会被罚款 乃至被开除。

    3)培养团队文化/习惯

    团队工作习惯的培养,非一日之功,需要管理者潜移默化的影响和不断的培训。华为团队的高效率有目共睹,进入华为的每一位新员工都会进行相关培训,并要求员工一旦进入操作状态,就要严格按照项目中的作业流程来进行,提升员工的工作效率,确保工作的顺利完成。

    4)不断改进工作流程

    流程确定后并不是恒定不变的,随着团队和业务的发展,还需要不断打破原有的工作流程。比方说,团队的作业流程太繁冗复杂,不少员工在按照流程执行任务时,发现做了很多重复工作,工作的效率也开始变得低下,这种情况就要对原有流程进行精简。所以部门工作流程是一个持续的过程,一个不断改进完善的过程。

    如果帮助到大家了就帮忙点个关注 ,点赞评论支持一下,你们的支持是我持续更新的动力。谢谢大家!!

    同时也欢迎各位小伙伴加入我的qq群:开发一群:454430053 开发二群:537532956 开发三群:812695329 和大家一起沟通讨论交流,这里已经有很多小伙伴在等你了,快来加入我们吧!

    展开全文
  • 【信息系统项目管理师】第十六章 配置管理标准化

    第十五六章 配置管理和标准化

    第十五章 文档与配置管理

    1.文档的分类
    按重要性和质量要求:非正式文档和正式文档
    按项目周期角度:开发文档管理文档产品文档
    具体分为14类:可行性研究报告,项目开发计划,软件需求说明书,概要设计说明书,详细设计说明书,数据库设计说明书,用户手册,操作手册,模块开发卷宗,测试计划,测试分析报告,开发进度月报,项目开发总结报告。
    开发文档:描述开发过程本身。包括:可行性研究,项目任务书,需求,功能,设计的规格说明,开发计划,测试计划,质量保证计划,安全和测试信息。开发计划,质量保证计划属于开发文档,不是管理文档
    产品文档:包括培训手册,用户指南,软件支持手册,产品手册和信息广告。
    管理文档:记录项目管理的信息。包括开发阶段的进度和进度变更的记录,软件变更情况的记录,相对于开发的判定记录。职责定义。
    文档规范化管理主要体现在:文档书写规范,图表编号规则,文档目录编写标准,文档管理制度。
    软件文档的作用:管理依据,任务之间联系的凭证,质量保证培训与参考;软件维护支持,历史档案。
    文档归档的目的是便于查找和使用。软件文档应该在开发过程每个阶段结束后及时归档。文档归档应该满足的条件:
    1.归档的文档应该是经过鉴定或评审的;
    2.文档签署完整成套格式统一
    3.印刷本打印本以及各种报告应装订成册
    文档的核心目的:就是起沟通作用。
    文档评审分:需求评审和设计评审。
    需求评审:进一步确认开发者和设计者已了解用户要求什么,及用户从开发者一方了解某些限制和约束。它产生一个被认可的需求规格说明。
    设计评审:根据生产需求规格说明书设计的内容。
    有效文档策略的基本条件:
    1.文档需要覆盖整个软件生命周期
    2.文档应该是可管理的
    3.文档应该适合于它的读者
    4.文档效应贯穿始终
    5.文档标准应被标示和使用
    6.应该规定支持工具

    2.文档与配置管理的相关术语,如配置项,基线,配置状态报告,CCB配置控制委员会等。
    配置管理概述:
    配置管理指一套管理软件开发和软件维护以及各种中间软件产品的方法和规则。它的主要思想具体体现在版本控制,版本控制注意功能是追踪变更。软件配置管理是在贯穿整个生命周期中建立和维护项目产品的完整性。
    配置管理主要解决下面三个问题:多重维护的问题同时修改的问题丢失版本或未知版本
    配置管理的六个主要活动:制定配置管理计划,配置标识,配置控制,配置状态报告,配置审计,发布管理和交付。
    配置管理中变更的原因(6项):计划,定义有误;项目执行有偏差;外部环境的改变;客户新的需要;为了应对紧急的事件。

    配置管理计划:目的是为了便于CMO按计划开展配置管理工作,并保持配置管理工作的一致性。进行配置管理的第一步是:建立并维护配置管理的组织方针。配置管理计划由配置管理员制定,配置控制委员会负责审批。
    配置管理计划的主要内容:
    1.配置管理活动,包括配置标识,配置控制,配置状态报告,配置审计,发布管理与交付。
    2.实施这些活动的规范和流程
    3.实施这些活动的进度安排
    4.实施这些活动的人员或组织,以及它们与其他组织的关系。
    配置识别:配置管理的一项活动,是配置管理员的职能。它包括选择一个系统的配置项和在技术文档中记录配置项的功能和物理特征。
    配置项标识包括三项:识别配置项,建立配置管理系统,配置库。
    配置标识具体如下
    1.识别需要受控的配置项。
    2.为每个配置项指定唯一性的标识号
    3.定义每个配置项的重要特征
    4.确定每个配置项的所有者及其责任
    5.确认配置项进入配置管理的时间和条件。
    6.建立和控制基线
    7.维护文档和组件的修订与产品版本之间的关系。
    配置控制:就是配置项和基线的控制。包括:标识和记录变更申请,分析和评价变更,批准或否决申请,实现,验收和发布已经修改的配置项。
    发布管理和交付包括:存储,复制,打包,重建。


    基线:是软件生存期各开发阶段末尾的特定点,也称为里程碑。通过基线把各开发阶段的工作划分得更加明确,更加有利于检验和肯定阶段的工作成果。为开发工作提供一个定点和快照。并与随后发生的工作进行隔离。当基线不稳定或不可信的时候,基线为团队提供一种取消变更的方法。
    常见的基线有计划基线需求基线设计,编码基线测试基线
    GB/T 16680配置管理三种基线:
    功能基线:最初通过的功能配置。
    分配基线:最初通过的分配的配置。
    产品基线:最初通过的或有条件的通过的产品配置。
    基线的分类:交付给外部顾客的基线叫发行基线,内部开发使用的基线叫做构造基线。一个产品一般可以有多条基线,每个基线通常对应开发中的里程碑。
    对于每一个基线要定义的内容:建立基线的事件,受控的配置项,建立和变更基线的程序,批准变更基线所需的权限。
    基线的构成:一组拥有唯一标识号的需求,设计,源代码文卷,可执行代码,用户文档。
    基线的变更:只能采用正式的变更控制程序。
    基线的举例:产品的一个测试版本就是基线的例子。包括需求规格说明书,概要设计说明书,详细设计说明书,可执行程序代码,测试大纲,测试用例,使用手册。


    配置状态报告:配置状态说明与报告。记录报告管理配置所需要的信息,目的是及时准确地给出配置项的当前情况,供相关人员了解,以加强配置管理工作。
    配置状态报告的详细内容:
    1.每个受控配置项的标识和状态
    2.每个变更申请的状态和已批准修改的实施状态
    3.每个基线的当前和过去版本状态
    4.其他配置管理活动的记录


    CCB配置控制委员会:是配置项变更的监管组织。其任务是对配置项变更做出评价,审批,以及监督已经批准的变更的实施。CCB不必是常设机构。通常CCB不仅是控制配置变更,而是负有更多的配置管理任务。例如配置管理计划审批,基线设立审批,产品发布审批。


    配置项:作为配置管理对象的信息项。在开发,运行和维护过程中的阶段性成果,以及用到的多种工具软件或配置。配置项需要技术评审或领导审批以后才能发布。


    配置项的4个特征信息:名字,描述,一组资源,实现。
    配置项六种类:环境类,定义类,设计类,编码类,测试类,维护类。
    配置项分类:可以分为基线和非基线配置项。基线由一组配置项组成。基线中的配置项被冻结了,不能在被任何人随意的修改,对基线的变更必须遵循正式的变更流程。
    基线配置项:包含所有设计文档和源程序。它向开发人员开放读取的权限。
    非基线配置项:包括项目各类计划和报告等。向PM,CCB及相关人员开放权限。


    每个配置项主要属性:名称,标识符,文件状态,版本,作者,日期。
    配置项版本控制:创建配置项;修改处于草稿状态的配置项;技术评审或领导审批;正式发布变更。配置项权限的管理者是CMO。
    配置项状态有:草稿(配置项刚建立),正式(通过审批),修改(修改完毕审批后变正式)三种状态。

    配置项刚刚建立时,其状态为草稿。配置线通过评审后,其状态变为正式,此后若更改配置项,其状态变为修改。
    处于草稿状态的配置项的版本号格式为0.YZ。
    处于正式发布状态的配置项的版本号格式为X.Y。
    Z不为零则处于修改状态。
    只有当配置项版本升级幅度比较大时,才允许增大X值。

    3.配置库的定义及分类
    也称为配置库项,是配置管理的有力工具,采用配置库实现软件配置管理,就可以把软件开发过程的各种工作产品放入配置库中进行管理。


    分类:开发库(动态库)受控库(主库)产品库(静态库,发行库)
    开发库:供开发人员个人专用。库中的信息可以较为频繁的修改,无需对其作任何限制。
    受控库:某个阶段工作结束时使用,将工作产品存入或将有关信息存入。
    产品库:在开发的软件产品完成系统测试以后,作为最终产品存入库内。等待交付用户或现场安装。
    信息系统项目完成后,最终产品或项目成果应置于产品库内。当需要在此基础上进行后续开发时,应将其转移到受控库后进行。
    配置建库一般常用的有两种组织形式,按配置项类型分类建库按任务建库。可以用VSS,CVS,SVN等工具建立配置库。也可以通过手工方式进行建库。

    4.变更控制的流程。
    配置控制即配置项和基线的变更控制
    流程:变更控制,变更评估,通告评估结果,实施变更,变更验证与确认,变更发布,基于配置库的变更控制。

    5.配置审核,配置审计的定义和作用,配置审核的分类。
    配置审核又名配置审计。
    定义:用以验证当前配置项的一致性完整性
    分类:功能配置审核,物理配置审核。
    信息系统审计:安全审计是信息系统审计基本业务中的一个。信息系统审计的目的是评估并提供反馈,保证及建议。
    配置审计的作用:软件开发实践表明,尽管对配置项做了标识,实现了变更控制和版本控制,但如果不做检查仍然会比较混乱。确保配置管理有效性。
    配置审计的具体内容:
    1.防止向用户提交不适合的产品。如交付不正确的用户手册。
    2.发现不完善的实现。如未按变更流程实施变更。
    3.找出各配置项之间不匹配或不相容的地方。
    4.确认配置项已经在所要求的质量控制审核之后,纳入基线并入库保存。
    5.确认记录和文档保持着可追溯性。

    第十六章 法律法规与标准化

    法律法规与标准化涉及的知识点,法律法规条文标准化相当多,一个一个学习的话,花上一年也不为过。考试也不可能面面俱到,从所涉及的法律法规的角度来看,常考的有著作权法,计算机软件保护条例,商标法,专利法,合同法,招投标法,政府采购法等;从试题考点分布的角度来看,常从保护期限,知识产权人确定,侵犯判断,适用环境这些方面来设计考题。


    1.各种客体类型的保护期限规定,归属规定。
    著作权属于公民:署名权,修改权,保护作品完整性权的保护器没有任何时间限制,发表权,使用权和获得报酬权的保护期为终身及死亡后50年。作者死亡后,著作权依照继承法进行转移。著作权分为人身权和财产权。财产权有期限为50年,而署名权是人身权,人身权是没有期限且受到长期保护的。
    著作权属于单位:发表权,使用权和获得报酬权的保护期为50年,对50年内未发表的不予保护。
    专利权:发明专利权的期限为20年,使用新型专利权,外观设计权的期限为10年
    商标权:注册商标的有效期为10年
    招投标法:招标文件要进行必要澄清或者修改的,应当在招标文件要求提交投标文件截止时间至15日前,自招标文件开始发出日起至投标人提交截止之日止,最短不得少于20日。评标成员必须五人以上单数,其中专家不少于三分之二。签订合同在中标通知书发出30日内。
    政府采购法:自招标文件开始发出之日起至投标人提交投标文件截止之日,不得少于20天。谈判小组由三人以上单数组成,其中专家人数不得少于三分之二。


    2.知识产权人的确定
    著作权法:为完成单位工作任务所创作的作品称为职务作品。如果该职务作品是利用单位的物质技术条件进行创作,并由单位承担责任的,或者有合同规定,其著作权属于单位,作者仅享有署名权。如果在创作过程中有多人参与,那么该作品的著作权将由合作的作者共同享有。


    3.著作权法,招投标法,政府采购法,合同法等法律法规中的热点考点。
    著作权人的五项权利:发表权,署名权,修改权,保护作品完整性权,使用权使用许可权和获取报酬权转让权。
    专利权:专利人的主体(即专利权人)是指提出专利申请并取得权利权的人。包括四类人:发明人或设计人,发明人单位,合法受让人,外国人。
    专利权拥有的权力:独占实施权,转让权,实施许可权(实施专利并收取使用费)专利权人义务(缴纳年费),专利期限。
    商标权的内容有四项:使用权,禁止权,许可权,转让权。
    合同法:平等主体的自然人,法人,其他组织之间设立,变更,终止民事权利义务关系的协议。
    合同包括的条款:当事人的名称或者姓名和住所,标的数量质量,价款,履行期限,违约责任,解决争议的方法。
    质量要求不明确按照国家标准,行业标准;价款不明按照签订合同的履行地市场价格履行。
    怎么开始?要约,要约邀请,承诺,承诺生效。
    违约责任:当事人一方不履行合同义务或者履行合同义务不符合约定的,应当承担继续履行,采取补救措施或者赔偿损失等违约责任。
    招投标法:分为公开招标和邀请招标。
    公开招标:招标公告应当载明招标人的名称和地址,招标项目的性质,数量,实施地点和时间,以及获取招标文件的办法等事项。
    邀请招标:应当向三个以上具备承担招标能力的,资信良好的特定法人或者其他组织发出投标邀请书。
    招标代理机构是依法设立,从事招标代理业务并提供相关服务的社会中介组织。招标人有权自行选择招标代理机构,委托其办理招标事宜。招标人设有标底的必须保密。
    投标:两个以上法人或其他组织可以组成一个联合体,以一个投标人的身份共同投标。由同一专业的单位组成的联合体,按照资质等级较低的单位确定资质等级。投标人不得以低于成本的报价竞标。
    开标:提交招标文件截止时间的同一时间公开进行。中标人可以将中标项目的部分非主体工作转让他人完成。接受分包的人应当具备相应的资格条件,并不得再次分包。
    评标:与投标人有利害关系的人不得进入相关项目的评标委员会。评标准则:依据客观事实(客观),得分区分高低,严控自由裁量权(量化评分),评分应便于评审。
    政府采购法:
    采购的形式有五种,公开招标(主要采购方式),邀请招标(特殊供应商处采购),竞争性谈判,单一采购来源(只能从单一处采购),询价(货物规格统一,价格变化小)
    招标中响应的供应商不足三家的,应该予以废标。
    竞争性谈判的应用环境:没有合格标的,没投标者;技术复杂,不能确定详细规格;时间紧急;无法事先计算总价。
    公开招标采购费用的比例过大,则采用邀请招标。

    招标项目按照国家规定需要履行项目审批手续的,应当先履行审批手续,取得批准。
    任何单位和个人不得以任何方式为招标人指定招标代理机构。
    招标人收到投标文件后,应当签收保存,不得开启。投标人少于三个的,招标人应当依照本法重新招标。在招标文件要求提交投标文件的截止时间后,送达投标文件,招标人应当拒收。
    招标人收到标书以后应当签收不得开启。为了保护投标人的合法利益,招标人必须履行完备的签收,登记和备案手续。签收人要记录投标文件递交的日期和地点,以及密封情况,签收人签名后应将所有递交的投标文件放置在安全保密的地方,任何人不得开启投标文件。
    评标委员会是由具有高级职称或同等专业水平的技术,经济等相关领域的专家组成。评标委员会成员名单在评标结果公示前必须保密。
    投标人应当提供在开标日前三个月内由其开立基本账户的银行开具的银行资信证明的原件或复印件。对投标文件中含义不明确的内容,可要求投标人进行澄清,但不得改变投标文件中的实质性内容。
    招标人根据评标委员会提出的书面评标报告和推荐的中标候选人确定中标人。招标人也可以授权评标委员会直接确定中标人。
    中标人的投标应当符合下列两个条件之一:
    1.能最大限度的满足招标文件中规定的各项综合评价标准。
    2.能满足招标文件的实质性要求,并且经评审的投标价格最低,但是投标价格低于成本除外。
    中标人确定后,招标人应当向中标人发出中标通知书,并同时将中标结果通知所有未中标的投标人,中标通知书对招标人和中标人具有法律效力。
    招标人和中标人应当自中标通知书发出之日起30日内,签订书面合同。招标人应当自确定中标人之日起15天内,向有关行政监督部门提交招标投标情况的书面报告。

    4.标准的分类,以及与软件工程有关的国家标准
    标准分四类,国家标准(GB),行业标准(由汉语拼音大写字母组成)地方标准代号(由DB加上省级行政区划代码的前两位)企业标准代号(由Q加企业代号组成)
    国家标准中,强制性标准代号GB,推荐性标准代号GB/T,指导性标准代号GB/Z,实物标准代号GSB。
    与软件工程有关的国家标准常用的有四项:
    1)GB/T16260 软件工程产品质量
    软件质量分三类:内部质量,外部质量,使用质量。
    度量分两种:内部度量和外部度量。
    内部度量:用于测试软件产品的中间产品
    外部度量:运行观察可执行的软件或系统。它只能在测试阶段和任何运行阶段使用。
    质量模型框架:功能性,可靠性,易用性,效率,维护性,可移植性。
    2)GB/T16680 软件文档管理指南
    项目周期中的文档开发文档管理文档产品文档
    文档质量分级:最低限度文档,内部文档,工作文档,正式文档。
    最低限度文档(1级):适合开发工作量低于一个人月的开发者自用程序。
    内部文档(2级):精心研究后被认为似乎没有与其他用户共享资源的专用程序。
    工作文档(3级):同单位若干人联合开发的程序,或被其他单位使用的程序。
    正式文档(4级):适用于要正式发行功普遍使用的软件产品。
    3)GB/T12504-1990计算机软件质量保证计划规范
    验证:阶段产品是否达到需求
    确认:开发过程结束时评价是否和需求一致。
    测试:发现程序中设计和编码的错误。
    4)GB/T11457-2006 软件工程术语
    配置管理有三种基线:功能基线,分配基线,产品基线。
    需求规格说明书(SRS):由开发者和客户双方联合起草。是对要完成一定功能,性能的软件产品,程序或一组程序的说明。在SRS中嵌入了设计和项目要求。
    GB/T 17544 软件包质量要求包括三部分:产品描述要求,用户文档要求,软件包中的程序要求和数据要求。

    展开全文
  • 关系数据库设计:谈谈规范化技术

    千次阅读 多人点赞 2020-08-19 21:42:31
    通过实际案例介绍关系数据库设计中的规范化技术(Normalization),为什么需要规范化,常见的第一范式、第二范式和第三范式,反规范化应用的场景以及外键的取舍问题。

    在这里插入图片描述


    大家好,我是只谈技术不剪发的 Tony 老师。今天我们来聊聊关系数据库的规范化设计问题。本文不涉及数据库教材上晦涩难懂的各种公式,而是从实际应用出发,通过简单直白的方式介绍规范化的设计过程和常见范式。

    为什么需要规范化?

    很多教材和文章都是直接从第一范式开始介绍如何进行数据库设计,完全忽略了对事物前因后果的分析;从而导致我们看完之后,只知道要关系数据库要进行规范设计,但却不知道为什么要这么做。因此,我们首先来给大家介绍一下规范化之前发生了什么。

    假设我们需要为某公司设计一个数据库,用于管理员工、部门、职位等相关的信息。首先从直观上考虑,可以将员工信息、所在部门以及职位信息存储到一个表中,如下图所示:

    0nf
    每一行数据对应一个员工的信息,包括他/她所在的部门、职位等。如果真的这么设计,我们在实际应用中很快就会发现以下各种问题:

    • 数据冗余,同一个部门的信息存储了多份,这就需要占用更多的磁盘空间。另外,数据冗余有时候也可能是指在不同的表中存储了重复的信息;
    • 插入异常,假如现在需要成立一个新的部门,由于还没有增加新的员工,因此无法录入这个部门的信息;
    • 更新异常,如果需要修改某个部门信息,需要更新多行数据,效率低下;不小心忽略了某些记录的话,还会会导致数据不一致,尤其是当一个信息存储到多个表中时更容易出现这种情况。
    • 删除异常,如果某个部门的所有员工都被删除,将会导致这个部门的信息也将不复存在;

    关系数据库之父 Edgar F. Codd 显然意识到了这些问题,并且为此引入了规范化(Normalization)的设计过程。规范化使用范式(normal form)来定义和衡量,范式就是数据库设计时遵循的一种标准级别。Codd 最早提出了第一范式(1NF)、第二范式(2NF)以及第三范式(3NF),每个范式都基于前面的范式定义,例如第二范式需要先满足第一范式。

    📝更高级别的范式包括 BC 范式(BCNF)、第四范式(4NF)、基本元组范式(ETNF)、第五范式(5NF)、DK 范式(DKNF)以及第六范式(6NF);一般来说,满足第三范式的数据库就可以避免数据冗余和操作异常问题。

    通过以上介绍,我们知道了规范化是数据库设计过程中的一系列原理和技术,使用范式来定义和衡量,主要用于减少表中数据的冗余,消除异常,提高数据完整性和一致性

    下面我们基上面的非规范化数据库结构,逐步介绍第一范式到第三范式的实现过程。

    第一范式

    第一范式(First Normal Form)要求满足以下条件:

    • 表中的字段都是不可再分的单一属性;
    • 表需要定义主键(PRIMARY KEY)。

    简单来说,首先就是每个属性要有单独的字段。在上面的不规范设计中,员工的个人电话和工作电话存储在一个字段中,破坏了原子性。另外,还需要为表定义一个主键,用于唯一识别表中的每一行数据;假设每个部门中的员工不会同名,可以使用部门名称加员工姓名作为主键。

    将上面的示例修改成以下结构就可以满足第一范式:

    1nf
    第一范式要求表中的字段具有不可分割的原子特性;不过我们知道,原子是化学反应不可再分的基本微粒,但在物理状态中可以分割,它是由原子核和绕核运动的电子组成。因此,我们同样需要考虑字段不可分割到底是针对什么而言。

    例如,上面的“姓名”字段,实际上也可以拆分成两个字段:姓氏和名字。那么到达要不要拆分呢?显然这个取决于应用程序如何使用这些信息,一般我们将姓名作为一个字段存储;有些应用可能需要拆分,这样在给客户发送消息时可以方便地显示为“尊敬的刘先生/女生”。

    另一个类似的情况是地址信息,例如“XX省XX市XX区XX小区”,存储到一个字段还是拆分成多个字段?大部分情况下,应用程序可能需要统计不同地区的用户情况,拆分成多个字段便于分析。不过这时候需要注意的是如何确保数据的标准化,因为不同的用户虽然住在相同的小区,但会输入不一致的数据;所以最好提供一组标准的数据,提供下拉列表给用于进行选择。

    除了基本的数字、字符、日期等数据类型之外,SQL 还提供了一些复杂的类型,例如数组、XML、JSON 以及自定义类型等。假如我们使用一个 JSON 字段存储电话号码,数据如下所示:

    {
      "phoneNumbers": [
        {
          "type": "office",
          "number": "61238888"
        },
        {
          "type": "mobile",
          "number": "13612345678"
        }
      ]
    }
    

    那么这种设计算不算违反第一范式?从定义来说这显然不属于第一范式,因为这个字段中包含了多个可以分割的属性。

    但是,从 SQL 标准来说这些类型都属于原生类型,而且提供了对这种数据进行处理和查询的内置函数和方法;如果从应用程序的角度来看,例如电商平台中的产品信息、博客文章中的评论信息,可以将它们看作一个原子数据存储在 XML 或者 JSON 字段中,因为没有进行分割处理的需求。

    📝SQL 是关系数据库的标准语言,但 SQL 远远不只能够存储和处理关系模型,XML 或者 JSON 文档、多维数组、图形存储以及流数据处理已经成为了 SQL 标准中的一部分,具体可以参考这篇文章

    以上表结构满足第一范式,但仍然存在数据冗余(例如部门信息),可能导致插入异常、删除异常、修改异常等问题;所以我们还需要进一步规范化。

    第二范式

    第二范式(Second Normal Form)要求满足以下条件:

    • 满足第一范式;
    • 非主键字段必须完全依赖于主键或者候选键,不能只依赖于主键或者候选键的一部分。

    上面表结构中的“部门地址”取决于“部门名称”,也就是主键的一部分;这种依赖关系称为部分函数依赖(partial functional dependency)。显然,此时表中的部门信息存在冗余,可能导致各种操作异常。

    为此我们可以将部门信息单独存储到一张部门表中,并且在部门表和员工表之间维护一个一对多的关系。我们继续将表的结构修改如下:

    2nf
    我们将员工表拆成了 3 个表,员工表中的部门编号和职位编号是外键,分别引用了部门表的主键和职位表的主键。另外,我们为每个表增加了一个 id 主键字段(工号、部门编号、职位编号)。因为部门名称、职位名称等信息并不适合作为主键;如果使用部门名称作为主键,当需要修改某个部门的名称,员工表中可能需要相应修改多条记录。

    如果考虑到同一个部门中可能存在同名的员工,直接在员工表中增加一个 id 主键字段也可以满足第二范式的要求。

    2nf
    以上表结构满足第二范式,但仍然存在数据冗余(例如部门信息),可能导致插入异常、删除异常、修改异常等问题;所以我们还需要进一步规范化。

    第三范式

    第三范式要求满足以下条件:

    • 满足第二范式;
    • 属性不依赖于其它的非主属性,也就是非关键字段不依赖于其他非关键字段。

    当主键决定字段 A,字段 A 又决定字段 B 时,称为传递函数依赖(transitive functional dependency)。例如员工编号决定了部门编号,部门编号决定了部门名称;如果将部门信息和员工信息放在一张表中,就存在这种依赖。显然,在上一节中将员工表拆分成三个表之后就不存在这种问题,因此满足第三范式。

    最终,我们设计的公司数据库结构(ER 图)如下:

    erd
    其中,部门和员工的关系是一对多的关系;职位和员工的关系也是一对多的关系。

    现在我们来回顾一下非规范化设计时的几个问题:

    • 部门、员工以及职位信息分别存储一份,通过外键保持它们之间的联系。因此,不存在数据冗余的问题;
    • 如果想要成立一个新的部门,直接录入部门信息即可,解决了插入异常的问题;
    • 如果某个部门的所有员工都被删除,该部门的信息不会受到影响,不存在删除异常;
    • 如果需要修改部门信息,直接更新部门表即可,不会导致数据不一致。

    对于前三个范式而言,只需要将不同的实体/对象单独存储到一张表中,并且通过外键建立它们之间的联系即可满足。这也是大多数在线交易系统数据库理想的设计方法。

    反规范化

    简单来说,规范化就是将大表拆分成多个小表,并且通过外键建立它们之间的联系。但是,规范化可能导致连接查询(JOIN)过多。例如,为了查看员工所在的部门名称和职位名称,我们需要关联查询 3 个表:

    SELECT e.emp_name, e.hire_date, d.dept_name, j.job_title
    FROM employee e 
    JOIN department d ON (d.dept_id = e.dept_id)
    JOIN job j ON (j.job_id = e.job_id)
    WHERE e.emp_name = '孙尚香';
    
    emp_name|hire_date |dept_name|job_title|
    --------|----------|---------|---------|
    孙尚香   |2002-08-08|财务部    |财务经理  |
    

    如果表中的数据量很大,过多的表连接查询会增加数据库的 IO 操作,从而降低数据库的性能。因此,有时候为了提高某些查询或者应用的性能而故意降低规范反的程度,也就是反规范化(denormalization)。一般来说,数据仓库(Data Warehouse)和在线分析系统(OLAP)会使用到反规范化的技术,因为它们以复杂查询和报表分析为主。

    常用的反规范化方法包括增加冗余字段、增加计算列、将小表合成大表等。例如想要知道每个部门的员工数量的话,需要同时连接部门表和员工表;可以在部门表中增加一个字段(emp_numbers),查询时就不需要再连接员工表,但是每次增加或者删除员工时需要更新该字段。

    需要注意的是,反规范化会增加更新和修改数据的开销,导致数据存在冗余,可能带来数据完整性和一致性的问题;因此,通常我们应该先进行规范化设计,再根据实际情况考虑是否需要反规范化

    关于外键

    在数据库结构设计时,还有一个经常争论的问题就是需不需要使用外键(FOREIGN KEY)。外键是数据库用于实现参照完整型的约束,利用数据库的外键可以保证数据的完整性和一致性;外键的级联操作可以方便数据的自动处理,减少了程序出错的可能性。

    例如,员工属于部门,员工的部门字段上可以创建一个外键引用部门表的主键。此时,我们必须先创建部门,然后才能为该部门创建员工;不会出现员工属于一个不存在的部门的情况,保证了数据的完整性。同时,如果要删除一个部门的话,必须同时处理该部门下的员工;可以选择级联删除员工或者将员工的部门修改为其他部门等操作。

    既然外键拥有这么多好处,为什么我们还要讨论是否需要使用外键呢?主要是性能问题。因为任何事情都是有代价的,数据库为了维护外键需要牺牲一定的性能,尤其是在大数据量高并发的情况下。因此出现了另一种解决方案,就是将完整性检查放到应用层去实现,而应用程序相对比较容易扩展。

    不过,在应用端实现约束也可能导致一些问题。首先,无法百分之百保证不会出现问题,尤其是多个应用同时共享一个数据库时。缺失外键可能导致数据库的结构不明确,需要依赖相应的文档进行说明。

    总之,在系统的设计之初应该尽量使用外键确保完整性。如果随着业务增长出现性能问题,可以考虑在应用中实现约束。


    总结

    本文从非规范化数据库结构可能导致的问题出发,介绍了关系数据库为什么应该进行规范化设计以及常用的各种范式。同时,我们还讨论了特殊应用场景下的反规范化问题和外键的取舍。

    如果觉得文章对你有用,欢迎关注❤️、评论📝、点赞👍

    展开全文
  • 安全"五化"管理分为责任网格化、风险影像化、设施图纸化、定置标准化、作业可视化,其既有传统安全管理体系及风险预控管理体系上的深化,又有依托现代技术手段的载体应用。最大程度地做到:能用视频的不用图表,能用图表...
  • 通过内部控制流程化、业务核算规范化、工作机制创新化、岗位责任承诺化、管理过程精细化5个方面的介绍,论述了“五化”模式的内在联系,并对该模式的实践效果进行了分析。实践表明,通过不断促进、相互融合,实现...
  • {管理信息 OA 自动 }机械制造与自动专 业技能抽查标准 目录 一适用专业2 二抽查对象 2 三抽查目的 2 四抽查方式2 引用的技术标准规范 3 六抽查内容与要求 3 七评价标准 12 八实施条件 22 九附件 23 湖南省...
  • 华天谋5s管理专家概述:车间现场管理就是要对所有这些存在于车间的各个工作地所有要素的集合,其中包括人,物资,生产组织管理,工艺方法,各种信息要素之间相互作用的综合协调,使其运行达到精益生产最佳状态。...
  • 在数据就是资产的今天,财务业务规范化标准化是数字化的基础和目标
  • 数据治理标准化白皮书 (2021 年)附:数据标准明细表
  • 关系型数据库规范化的通俗理解

    千次阅读 多人点赞 2019-05-26 11:17:35
    最近参加数据库系统工程师的考试,结合自己的工程经验,终于对数据库规范化理论有了一知半解。 本文试图从工程化的角度,用大白话去解释数据库规范化的结论,如果有不严谨之处,敬请指正。我不会去详细介绍每个范式...
  • 什么是SQL Server中的数据库规范化

    千次阅读 2020-07-24 03:13:00
    In addition to specifically addressing database normalization in SQL Server, this article will also address ... 除了专门解决SQL Server中的数据库规范化问题之外,本文还将解决以下问题: Why is a data...
  • 2009年立白集团实施了SAP ERP项目,第一期完成了生产管理、销售...SAP的解决方案帮助立白集团实现了流程规划化、数据标准化、财务一体化、质量一体化,使立白的通路渠道精耕细作、供应链实时透明、企业决策科学准确。
  • 第1章 信息知识 1 1.1 信息与信息 1 1.1.1 信息 1 1.1.2 信息系统 5 1.1.3 信息 7 1.1.4 国家信息体系要素 8 1.1.5 信息技术发展及趋势 13 1.2 国家信息战略和规划 20 1.2.1 国家信息战略目标 20 1.2.2 ...
  • 互联网 智慧安监大数据一体化管理平台方案--互联网 安全生产监管监测大数据平台-安全生产信息化解决方案 智慧安监是通过物联网、云计算和大数据等信息技术手段,通过对安全生产元素的全面透彻的感知,对安全生产数据...
  • 模块化、标准化、预制化、定制化、智能化……每当看到这些名词堆在一起,就像回到了上学时代,对着书本上一个个名词解释,睁大眼睛努力辨别它们到底有什么不同。为此,我们特地向几...
  • 关系模式规范化(设计范式)

    千次阅读 多人点赞 2020-10-28 19:13:56
    就得设计为下表的形式: 但日常生活中仅用第一范式来规范表格是远远不够的,依然会存在数据冗余过大、删除异常、插入异常、修改异常的问题,此时就需要引入规范化概念,将其转化为更标准化的表格,减少数据依赖。...
  • 弱电技术常用方案及标准规范合集,共44份。 一、高速公路机电系统 高速公路机电工程通信 高速公路机电施工组织 高速公路机电系统讲解 高速公路机电系统介绍 二、高速公路监控系统 高速公路视频监控方案 高速公路...
  • 历经年多时间全力打造的XXX可视智慧校园综合信息管理平台,以学校教育管理在日常工作中碰到的实际问题为出发点,以计算机与网络技术为支撑和解决手段,以为教学、管理提供简捷、高效、安全的服务为目的,搭建了...
  • 规范化是一种可以帮助您避免数据异常和管理数据的其他问题的技术。 目的: 消除数据冗余(因此使用更少的空间) 使更改数据变得更容易,并且在这样做时避免出现异常 使参照完整性约束更易于实施 产生易于理解的结构...
  • 一、Trufun服务目标 规范软件开发过程 优化软件...倡导"实用、简洁"的产品理念,为企业实现产品开发与服务支持间的规范化应用平台,在管理软件研发全过程的同时,支持当前各种规范标准,实现企业的战略目标。 二、
  • 软考中级——系统集成项目管理工程师备考干货第一章:信息知识。
  • 谈谈需求分析规范化

    千次阅读 2017-01-01 22:40:55
    通过需求工程化来降低需求工程的复杂度,让需求分析人员有章可循,与用户形成共同语义环境,也就是需求分析的规范化
  • 一、市场痛点 行业之间资源整合困难,数据独立对接转换复杂 1、托育行业 专业师资力量薄弱 ...二、早幼托一体化管理系统解决方案 资源对接:连接儿童产业各方桥梁,省去中间繁杂的过程,快速高效。...
  • 很多时候,你会发现,有一些企业根本就管理不好。是他们没制度吗?不是,那为什么就管理不好呢?有制度没执行。你就拿迟到来说吧,这是一件非常小的事情,小的不能再小了,但是根本性的解决这个问题也不是那么容易的...
  • 5G NR标准 第2章 5G标准化

    千次阅读 2020-10-16 09:08:54
    5G NR标准 第2章 5G标准化 移动通信系统的研究,开发,实施和部署是由无线行业在国际协调一致的努力下完成的,通过该协议,人们共同商定了定义完整的移动通信系统的通用行业规范。 这项工作在很大程度上取决于全球...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 119,853
精华内容 47,941
热门标签
关键字:

五化管理 标准化 规范化

友情链接: IIRLvbo.zip