zoukankan      html  css  js  c++  java
  • 《Software Design X-Rays》读书笔记一

      个人感受部分:

      之前写程序都是,拿到老师给的题目直接就开始做,没有先在脑子中打好程序框架,以至于最后一团糟。

      书中所讲:做任何事情都需要前期准备,在软件开发中更是如此,尽管如此,还是有很多程序员接到任务后就是想着尽快编码,很多老板不重视软件开发的前期准备。要想保证一个软件的质量,在前期准备,需求分析,架构设计,编码,测试,维护等每一个环节都要重视质量。

      解决办法:以后再写程序前线分析好功能,打好框架在开始着手搭建工程。

      读书笔记:

    第一章 三思而后行:前期准备
      做任何事情都需要前期准备,在软件开发中更是如此,尽管如此,还是有很多程序员接到任务后就是想着尽快编码,很多老板不重视软件开发的前期准备。要想保证一个软件的质量,在前期准备,需求分析,架构设计,编码,测试,维护等每一个环节都要重视质量。具体程序员接到任务的时候要检查一下在你之前的那些软件活动有没有准备好,如果需求中有好多没有说明的地方,架构设计也不明确,你不知道需要和其它模块之间如何通信,基础组件啥也没有,这种情况下进行详细设计和编码会很受罪。
      和同事老板达成前期准备重要性的共识之后,就是如何做前期准备以及如何判断前期准备已经做好的技巧,这些是更实用的地方。如何做前期准备基本上是需求分析人员,产品经理和架构师的关心的问题,而判断前期准备是否已准备好则是具体程序员也需要具备的能力。首先要判断你做的软件的类型和规模,如果你做的是一个长期的项目,一期一期的做,就更适合敏捷开发和迭代式开发,做一些基本的前期准备就可以开工了,先把最核心的功能实现,每隔一段时间把一些新需求加入设计和编码中来,设计和编码可以结合起来,需求也不用一下子就写的特别全面,先写出最基本的需求。如果你要做一个性命攸关的系统,如航天软件,医疗软件等,前期准备就应该更严格,需求规格说明书要尽量详细,设计也要花很长时间来做,尽量防止以后改动。根据你的项目的性质来选择更迭代化还是更瀑布式的开发。
      问题定义应该是前期准备的第一个环节,用短短的几句话来说明你做的软件解决什么问题?商业意义是什么?如果这个都不明确,那你做这个软件干啥?
      明确的需求在前期准备也很重要,需求要明确,全面,至少在接下来的一次开发迭代中需要的信息都要明确,而且不矛盾。没有明确的需求,测试人员就没法写测试用例,客户也没法理解如何使用系统,程序员也不知道如何设计编码。需求是不可能完全不变的,所以要针对需求变化制定一系列措施,比如每隔两周响应一次客户提出的需求变化,而不是无规律的频繁的接受用户需求变更;做一套需求管理系统;让老板,客户每个人都了解到频繁需求变化带来的后果;尽早的识别出可能的需求变化,以在架构设计的时候就提前考虑进去等。书中有一个检查需求质量的check list,写的很具体,很有指导作用,这本书的信息量很大,很难压缩在几篇读书笔记里,具体大家看书吧。

  • 相关阅读:
    奇异值分解(SVD)详解
    深度学习中常用的优化方法
    一年了,走了一些弯路,是时候回归了,介绍下深度学习中常见的降低过拟合的方法
    softmax与logistic关系
    Java [Leetcode 387]First Unique Character in a String
    Java [Leetcode 384]Shuffle an Array
    Java [Leetcode 167]Two Sum II
    用stack实现min stack
    bootstrap, boosting, bagging 几种方法的联系
    一道常被人轻视的前端JS面试题
  • 原文地址:https://www.cnblogs.com/hang-hang/p/14176077.html
Copyright © 2011-2022 走看看