• 理顺软件开发各个环节-14(开发管理-编程实现)


    5.7编程实现

      软件开发,最后终归要编写程序代码来实现。

    5.7.1关于程序语言

      程序语言,即计算机语言,与自然语言的语种一样,也是五花八门,就我自己用过的语言就有:汇编、BASIC、FORTRAN、VB、C、C++、C#、PASCAL、PHP、JAVA、PYTHON、R等,还有脚本语言如:JavaScript/jQuery、HTML、XML、JSON、Shell、EL、SQL等。还有一些未曾使用但稍稍了解的语言,如ADA、COBOL、EPL、Erlang、F#、Go、LISP...等等,不一而足。

      只要有配套的解释器或编译器,就可以有一种计算机语言。实际上,通过语法分析、词法分析,结合编译原理,就可以自己设计语言。

      选择何种计算机语言,在总体设计时需要考虑,与软件依赖的软硬件环境有关,也与需要实现的需求有关,再结合计算机语言对开发实现带来的便利性。

      在C++时代,不同的编译器有自己的类库,如Turbo C++、Borland C++、C++ Builder、Visual C++、GCC等,一旦选择,更换的成本非常高。

      C++作为OOP的主力语言,高性能是优点,但内存管理给开发人员带来很大挑战,因此GC机制的引入,使得很多应用放弃了C++,而使用C#或Java。

      Python近年来,持续火热,一方面因其支持函数式编程,另一方面与其支持大量机器学习算法包有很大关系。但由于其GIL,很难做到真正的多线程,并发能力是瓶颈。

      在Windows平台,VC++和C#.Net是主流的选择;在Linux平台,主流选择是Java。其它如C、Python、PHP、Node.js等视需求选择。

      Java作为跨平台语言,是如今B/S架构的主流语言,框架从早期的SSM到如今的SpringBoot,插件也非常丰富。因此,如有机会,就应尽量了解、熟悉和使用Java语言。

    5.7.2关于编程规范

      程序代码不仅输入给编译器或解析器,同时也是呈现给开发人员的。计算机语言,是表达思想的一种方式,这就需要开发人员有良好的表达能力。这个表达能力,不仅是符合计算机语言的语法和业务的逻辑结构,还应遵循约定的编程规范,从而使得开发团队成员阅读代码变得轻松,提高团队成员流动的便利性,降低代码的维护成本。

      编程规范一般涉及如下部分:

    • 代码注释规范(我倾向于使用母语注释,这样更容易准确表达和被理解,除非是跨国团队协作);
    • 命名规范;
    • 代码书写规范;
    • UI规范(视需要)。

      编程规范的执行情况,可以结合工具检查和人工代码审查来实行。工具如CodeStyle,Pylint等。

    5.7.3关于接口先行

      在代码开发之前,先确定接口,包括入参和出参,接口代码可以先不实现,用固定的值返回(即所谓的假接口)。

      如Java开发,可以使用Swagger或YApi来开发接口,结合Mock构造数据,然后就可以部署,调试接口。

      接口先行,好处多多。可以很容易发现参数是否缺失,数据类型是否合理等等,甚至可以检测出接口是否需要增加等情况。

      由于代码尚未实际开发,所有调整的代价都是很低的;一旦代码已经编程实现,调整起来容易伤筋动骨。


    5.7.4关于单元测试

      Java开发,使用JUnit,实现单元测试,是提高代码质量的有效手段。

      当然,单元测试的有效性,更重要的是测试用例的有效性;但使用单元测试框架,可以大大提高回归测试的效率。且单元测试可以单独部署,也便于测试验证。

      因此,应尽量使用单元测试框架。


    5.7.5关于持续构建

      Jenkins使得代码的持续构建成为现实。

      代码持续构建,方便获取可验证程序软件,便于及早发现问题,对于提高团队开发效率,帮助很大。当然,还需要与配置管理结合起来。

    5.7.6编程实现阶段的关键信息

      责任人:开发项目组长。

      执行人:开发人员(软件工程师)。

      关键行为:编码实现和自测。

      输入

    • 软件需求规格书(SRS);
    • 数据字典(DD);
    • UI&UE交互设计原型(如果有);
    • 用户故事;
    • 总体设计文档(视需要);
    • 概要设计文档;
    • 详细设计文档(如果有);
    • 接口设计文档;
    • Checklist;
    • 开发约定。

      输出

    • 程序代码,使用代码配置管理,一般用dev分支或相应的开发分支;
    • 单元测试及checklist,各check项都自测通过。

      职责要求

    • 分析软件需求;
    • 理解设计思想;
    • 必要的详细设计;
    • 编写程序代码;
    • 实现软件需求;
    • 单元测试;
    • 代码review;
    • 提交代码至配置库。
  • 相关阅读:
    第一节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表、验证码表、轮播图表
    Tensorflow 错误:Unknown command line flag 'f'
    Python 多线程总结
    Git 强制拉取覆盖本地所有文件
    Hive常用函数 傻瓜学习笔记 附完整示例
    Linux 删除指定大小(范围)的文件
    Python 操作 HBase —— Trift Trift2 Happybase 安装使用
    梯度消失 梯度爆炸 梯度偏置 梯度饱和 梯度死亡 文献收藏
    Embedding 文献收藏
    深度学习在CTR预估中的应用 文献收藏
  • 原文地址:https://www.cnblogs.com/alabo1999/p/13024455.html
Copyright © 2020-2023  润新知