zoukankan      html  css  js  c++  java
  • 《构建之法》阅读笔记(3)

    《构建之法》阅读笔记(3)

    两人合作、团队和流程

    代码风格的原则:简洁,易读,无二义性

    代码复审的目的不只在于指出代码的错误,还在于发现逻辑错误、算法错误、潜在的错误和回归性错误——当前的修改导致以前修复的缺陷又重新出现、可能需要改进的地方,还可以互相传授经验、让更多的成员熟悉项目各部分的代码、同时熟悉和应用领域相关的实际知识。

    二人合作的阶段分为:萌芽阶段、磨合阶段、规范阶段、创造阶段、解体阶段。在二人合作阶段,每个人都有自己的看法与观点,会有很多问题出现,要知道,问题早出现比晚出现要好得多,需要理性思考来获取合适地方法。

    从瀑布模型开始的各种模型都有一个共同点:重计划重事先设计重文档表达。这一类的方法中集大成者要算Rational统一流程(Rational UnifiedProcess,RUP)。RUP把软件开发的各个阶段整合在一个统一的框架里

    要完成一个复杂的软件项目,团队的各种成员要在不同阶段做不同的事情,这些不同类型的工作在RUP中叫做规程(Discipline)或者工作流(Workflow)。简介如下

    业务建模

    用户提供软件,就要理解目前用户的业务流程,但是精通计算机语言细节的工程师并不能马上理解对用户活动和期望值的各种自然语言描述。为了解决这个问题,业务建模(Business Modeling)工作流用精确的语言(通常是UML)把用户的活动描述出来。这个词有时也翻译为“商业建模”,但并不是只有存在金钱交易的商业活动才能符合建模的要求,任何和客户的正常工作相关的业务活动(例如政府为居民提供网上服务,学生到图书馆借书)都是建模的对象。这个工作流的结果通常是用例(Use Case)


    需求

    有了用例之后,开发人员和用户(或者用户代表)要分析并确认软件系统得提供什么样的功能来满足用户的需求,功能有什么约束条件,如何验证功能满足了用户需求。这就是需求(Requirement)工作流的作用


    分析和设计

    分析和设计(Analysis & Design)工作流将需求转化成系统的设计。这一步结束之后,团队成员就能知道系统有哪些子系统、模块,它们之间的关系是怎样的


    实现

    在实现(Implementation)工作流中,工程师按照计划实现上一步产出的设计,将开发出的组件(Module),连同验证模块(例如:单元测试)提交到系统中。同时,工程师们集成由单个开发者(或小组)所产生的结果,通过手工或自动化的手段,把可执行的系统搭建出来


    测试

    测试(Test)工作流要验证现阶段交付的所有组件的正确性、组件之间交互的正确性,以及检验所有的需求已被正确地实现。在这个过程中,发现、报告、会诊、修复各种缺陷,在软件部署之前保证质量达到预期要求


    部署

    部署(Deployment)工作流的目的是生成最终版本并将软件分发给最终用户。具体过程可以参考“典型用户和场景”一章


    配置和变更管理

    配置和变更管理工作流(Configuration andChange Management)负责管理RUP各个阶段产生的各种工作结果(例如源代码控制系统管理和备份各种源文件),要记录修改人员、修改原因、修改时间等属性,有些团队还可以考虑并行开发、分布式开发等


    项目管理

    软件项目管理工作流(Project Management)平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功地在各个阶段交付达到要求的产品


    环境

    环境(Environment)工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。RUP把软件开发分成几个阶段,一个大阶段的结束称为一个里程碑(Milestone),每个阶段内可以有几个迭代,以比较灵活的形式实现本阶段的任务。从这一点来说,RUP在大尺度上像瀑布模型,在每个阶段内像迭代模型


    下面是RUP四个阶段的介绍:

    初始阶段——此阶段的目标是分析软件系统大概的构成,系统与外部系统的边界在哪里(我们的系统究竟和什么别的外部实体打交道),大致的成本和预算是多少,系统的风险主要来自哪里。成功度过初始阶段的项目会达到生命周期目标(LifecycleObjective)里程碑

    细化阶段——它的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,按优先级处理项目中的风险。团队要确定项目的具体范围、主要功能、性能、安全性、可扩展性等非功能需求。同时为项目建立支持环境,包括创建开发案例、创建模板并准备工具。细化阶段结束时,项目到达了第二个重要的里程碑:生命周期结构(Lifecycle Archi-tecture)里程碑

    构造阶段——在这一阶段,团队开发出所有的功能集,并有秩序地把功能集成为经过各种测试验证过的产品。构造阶段结束时是第三个重要的里程碑:初始功能(Initial Operational)里程碑。此时的产品版本也常被称为“beta”版

    交付阶段——这时候,团队工作的重点是确保软件能满足最终用户的实际需求。交付阶段可以有迭代(beta1,beta2等),基于用户的反馈,团队利用这些迭代对系统进行修改、调整。除了对功能的调整,团队还要注意处理用户设置、安装和可用性等问题。在交付阶段的终点是第四个里程碑:产品发布(Product Release)里程碑

    1.就以前来讲,不是特别懂得合作,每次都是闷头敲代码,敲不出来就会生闷气,不懂得请教别人或者说不知道如何请教别人,更不知道如何和别人一起分配任务来完成;此外,代码的规范性以前不是特别注意,只是认为运行出来就好,并没有认真去注意代码的排列,简洁程度或者二义性方面的问题,所以导致程序运行不顺利。                                                           

    2.显然之前的做法是不正确的,这样做不仅降低了效率,而且代码的美观性也不高,以后编程时遵循PSP,这样可以更规范,程序错误更少。               

    3.要想达到代码规范的效果,必须从当下做起,开始养成规范代码的习惯,也希望通过今后的课程的学习,来拥有一个两人合作的机会,慢慢培养自己的两人合作的意识,能够实现程序的完善化。

  • 相关阅读:
    软件需求与建模 复习笔记
    Autoware 笔记No.9,SSD车辆、行人(障碍物)识别(ssd vision detect)
    Autoware 笔记No.8 ENet 障碍物识别(vision segment ENet detect)
    Autoware 1.14 完整安装
    Autoware 笔记No.7, CNN障碍物检测(CNN LiDAR Baidu Object Segmenter)
    iOS 使用局部block处理接口依次调用需求
    阿里一面凉经
    Codeforces round #717 D.Cut(m询问求区间[L,R]能被至少分成多少个区间让每个小区间各数的乘积==各数的LCM)
    2018-2020 国家集训队论文选读
    GDOI 2021 游记
  • 原文地址:https://www.cnblogs.com/zhangjiabei/p/6390039.html
Copyright © 2011-2022 走看看