zoukankan      html  css  js  c++  java
  • 理顺软件开发各个环节-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;
    • 提交代码至配置库。
  • 相关阅读:
    【WPF/WAF】使用System.Windows.Interactivity交互事件
    【Linux/CentOS】Boolean ftp_home_dir is not defined
    【笔记】使用Token做验证
    【笔记】什么是跨域请求/访问?
    MongoDB优化与一些需要注意的细节
    MongoDB中聚合工具Aggregate等的介绍与使用
    MongoDB中MapReduce介绍与使用
    Centos下MongoDB的安装与配置
    PHP使用header方式实现文件下载
    关于redis中SDS简单动态字符串
  • 原文地址:https://www.cnblogs.com/alabo1999/p/13024455.html
Copyright © 2011-2022 走看看