zoukankan      html  css  js  c++  java
  • 软件功能是不是越多越好

    软件业流传有这么一句话:

    有两种方式构建软件设计:一种是把软件做得很简单以至于明显找不到缺陷;另一种是把它做得很复杂以至于找不到明显的缺陷。

    最近接手一个项目。软件是一个开发工具,类似VS那种的可视化开发。
    原来的软件使用了Interop.SourceSafeTypeLib.dll用VSS进行版本控制,后来众多因素,版本控制的功能也就去掉了,增加一个FTP功能。
    中间接手的项目肯定会有各种各样的问题,但是FTP这个功能基本是一个全新的且独立的(自主性非常高,完全可以废弃曾经做的),不存在阅读他人代码的问题。
    需求给的很简单:

    FTP上传,下载功能要求实现服务器文件和本地文件的同步,上传是将本地文件同步到服务器(Commit),下载是将服务器上文件同步到本地(Update),上传和下载时需要进行判断,当前两面文件是否一致,初步计划以文件大小或者更新时间为依据。

    开发时遇到的一些问题


    页面布局简直信手拈来:

    但是做了两天,发现需求无法确定软件功能,而软件功能究竟要做多少才是够用
    由于受Total Commander的影响,对于这种左边一个目录,右边一个目录感觉很“顺眼。但是做起来却是问题多多。
    比如ListView的排序问题,从外部给当前目录增加文件、删除文件后的刷新问题,Unix文件格式和Windows文件格式问题,下载、上传时文件重名的覆盖、跳过、重命名问题……

    尤其在做重命名时,发现远远没有自己想的那么简单。
    这些功能,要说都是很基本的一些,文件操作天天都在用,但是做起来远远没有自己想的那么容易。

    功能到底要做多少


    一个FTP的上传、下载功能而已,有那么难么?

    是的,不难。
    先不说类库中专门有针对FTP的封装,相信即使直接使用FTP命令做到“能上传”、“能下载”都很简单。但一个软件光做到“能”还是远远不够的。
    我在软件开发时,不止一次的想:

    这个功能做不做?
    
    FTP代理(防火墙)做不做?  
    FTP保持连接(发送虚包)做不做?  
    文件差异高亮显示功能做不做?  
    支持不支持上传下载目录?  
    ……

    某人曾经说我:你这是自己给自己找需求。
    试想在需求如此空泛的情况下,我能不自己给自己找需求么?

    本来软件做了一个FTP的上传功能,对于当前编辑的文件,选择菜单中的上传,自动上传当前文件到设置的默认FTP服务器,如果服务器上已经有同名文件,进行提示。
    要说这个功能也就够了,能满足所谓的“需求”。

    功能是不是越多越好


    把这个功能做上,即使用不到先放在那里。  
    这个是锦上添花的功能,做了更好。  
    时间充足的情况下,这个功能还是做上。  
    ……

    正如本文开始所说,软件越复杂,缺陷、问题越多。
    功能不是越多越好,功能不是想到了用不到加上无所谓。
    每增加一个功能,要考虑对这个影响不影响,对那个影响不影响,要进行多少测试才可以,怎能是随便就能增加?
    要说功能应该在软件设计前期确定下来,但我经历的几个公司,只有粗略的计划,而没有详细的设计,只是说这个软件“能干什么干什么”,完全一副行外人的感觉。就好比我告诉你QQ能聊天,IE能浏览网页……
    当然,我总是在批评,但是真正让我开始做还是一样。
    大概去年,我完全负责一个小软件开发,我一直告诉自己,设计、设计,但是还是软件开始没三天就开始进行编码……

    写在后面


    软件开发真所谓一个复杂而漫长的学习旅途。
    我越来越觉得曾经在小公司市老板做法很对:
    项目还没确定下来,就让我们先做出一个软件出来,投标的时候,其他功能介绍自己的软件有什么什么功能,能达到什么什么目的,而我们直接给客户演示。

    客户本来是没有需求的,但是当你给他软件的时候他就有需求了。

    我的博客原文地址:软件功能是不是越多越好

    欢迎来我的博客:nanqi.info

  • 相关阅读:
    JAVA向上转型和向下转型
    LeetCode记录之9——Palindrome Number
    LeetCode记录之7——Reverse Integer
    JAVA数据结构--插入排序
    JAVA数据结构--选择排序
    JAVA数据结构--冒泡排序
    HTTP协议04-返回状态码
    HTTP协议03-http特点及请求方式
    HTTP协议02-请求和响应的报文构成
    HTTP笔记01-http相关的基础知识
  • 原文地址:https://www.cnblogs.com/nanqi/p/features.html
Copyright © 2011-2022 走看看