`
dreamstone
  • 浏览: 283541 次
  • 来自: ...
文章分类
社区版块
存档分类
阅读更多

一天晚上睡不着觉,无聊,乱想,遂有如下文章:写完之后发现很多漏洞,呵呵。不过也有些可取之处
发上来留个纪念吧。
软件开发中,有一些方法被反复利用:抽象,泛型,折中。所以试着以这些方法来分析软件开发的过程。

人类的行为大部分可以抽象成这样:               
过程一、目标---实施--->成功
过程二、目标---实施--->失败
大部分人都希望走过程一这样的路,如何在软件开发中走好一这条路呢,下边开始分析。

软件公司的目标:
获取利润-->保住利润-->减少成本
软件公司的实施:
开发软件,卖出-->不退货赔款,增加回头客-->压缩成本。
软件公司的成功方法:
保证实施过程路线正确,并顺利进行。对应实施的过程,如下
软件符合需求-->Bug少,性能高-->开发成本少,维护成本少.

在开始长篇大论之前,插播一段:
记得不知道谁说过:"没有一定成功的方法,但可以通过了解失败的方法来提高成功率".我想这也是人们喜欢
排除法的原因吧。本文的很多思想来自这个标准.
--------------------------------------------------------------------------
一、开发出符合需求的软件:
1、开发出不符合需求软件的原因:
 (1)、需求挖掘不够      (前期需求挖掘不够)      
 (2)、人员流动         (大量骨干人才在项目进行期流失)
 (3)、实现力不够        (技术储备,人才储备不够)
 (4)、反馈不够          (有这样一种情况,客户的需求是现实中不可能实现的,要说服客户做一些放弃)
2、解决上边问题的一些方法:
 (1)、RUP 文档 沟通
 (2)、文档 企业文化 管理
 (3)、技术积累 人才储备
 (4)、沟通
总结:仔细分析下来,发现在这个过程中,技术人员占的比例很小,仔细考虑一下,这也是很多公司不重视技术
人员的原因,因为他们的要求是作出符合用户需求的软件,卖出去就好了。因为在这个环节技术人员不是主导,
只要招聘的到开发人员来做软件就好.(中国最不缺的就是人),这个话题还是不多说的好.
二、开发出Bug少、性能高的软件
1、Bug多、性能低下的原因:
 (1)、测试力度不够
 (2)、管理混乱
 (3)、开发人员责任心与技术不够
2、解决上边问题的方法:
 (1)、专门的测试小组,对测试的重视程度,测试完善程度(是否有单体、集成、压力等测试)
    (2)、有完善的质量管理体系和方法(例如bugtrace QA Junit等测试软件的使用 责任明确)
    (3)、企业文化、内部技术交流、引进人才
总结:在这个问题上,技术人员的主导作用在大幅提高,Bug的多少主要取决于测试的投入力度和规范化
性能的高低,主要取决于开发人员的素质,对开发语言,使用框架,数据库等的了解程度和追求高质量的心态.
三、减少成本,经验表明,减少软件成本的主要方法是减少维护成本.
1、增加维护成本的原因:
 (1)、软件总体设计混乱,结构不清晰
 (2)、代码编写的滥(命名不规范  注释不够  缩进混乱  逻辑不清晰)
 (3)、文档的保存和维护
2、解决方法:
 (1)、设计模式   管理方法(建议看看<<人月神话>>这本书)
 (2)、编码规范
 (3)、CMM ISO等
--------------------------------------------------------------------------------
大部分在学习一门语言的时候喜欢看一下Hello World,所以写个HelloWorld体现一下上边的过程
(只从某个角度)
一、demo版本Hello World

1 public   class  HelloWorld  {
2      public   static   void  main(String[] args)  {
3         System.out.println( " Hello World! " );
4     }

5 }
二、符合需求的Hello World
1,经过需求调研,客户需要频繁输出HelloWorld,而不是一次
1public class HelloWorldOne {
2    public static void main(String[] args) {
3        while(true){            
4            System.out.println("Hello World!");
5        }

6    }

7}
马上实现一个简单符合客户需求的原型,交给客户,让客户看一下。
2,客户反馈说不需要如此频繁的输出,只要一般速度就可以了
 1public class HelloWorldThree {
 2    public static void main(String[] args) {
 3        while(true){
 4            try{
 5                Date date = new Date();
 6                if (date.getSeconds()%3==0){
 7                    System.out.println("Hello World!");
 8                }

 9            }
catch(Exception e){
10            }

11        }

12    }

13}
改一下原型,给客户看
3,客户再次反馈说我们需要是上午快点,下午慢点的的Hello World
 1import java.util.Date;
 2public class HelloWorldTwo {
 3    public static void main(String[] args) {
 4        while(true){
 5            try{
 6                Date date = new Date();
 7                if(date.getHours()<12){
 8                    if(date.getSeconds()%2 ==0){
 9                        System.out.println("Hello World!");
10                    }

11                }
else{
12                    if(date.getSeconds()%10 ==0){
13                        System.out.println("Hello World!");
14                    }

15                }

16            }
catch(Exception e){
17            }

18        }

19    }

20}
4、......如此继续
5、客户提出要求,能不能开发出我想快就快,想慢就慢的程序
明确告诉他,这个是不可能的。
三、提高性能
 1import java.util.Date;
 2public class HelloWorld {
 3    public static void main(String[] args){
 4        while(true){
 5            try{
 6                System.out.println("Hello World!");
 7                Date date = new Date();
 8                int hour = date.getHours();
 9                if(hour>8 && hour<12){
10                    Thread.currentThread().sleep(2000);
11                }
else if(hour >13 && hour <17){
12                    Thread.currentThread().sleep(10000);
13                }
else{
14                    Thread.currentThread().sleep(1000*60*60);
15                }

16            }
catch(Exception e){
17            }

18        }

19    }

20}
四、增加可维护性
import java.util.Date;
public class HelloWorld {
    
    
public static void main(String[] args){
        run(
8,12,13,17);
    }

    /
///**
    *四个参数依次是  上午上班时间 ,上午下班时间,下午上班时间,下午下班时间
    
*/

    
public static void run(int start1,int end1,int start2,int end2){
        
while(true){
            
try{
                System.out.println(
"Hello World!");
                Date date 
= new Date();
                
int hour = date.getHours();
                
if(hour>start1 && hour<end1){
                    Thread.currentThread().sleep(
2000);
                }
else if(hour >=start2 && hour 
分享到:
评论
1 楼 suifeng 2009-01-17  


强!

一个hello world诠释了软件演化的全过程。

相关推荐

    胡思乱想成语.docx

    胡思乱想成语.docx

    胡思乱想.doc

    胡思乱想.doc

    -----:IT 技术 的 胡思乱想

    这样的啊,才知道=====为什么没有表格的 MarkDown 呢?IT 技术 的 胡思乱想

    brainscala:在 Scala 中胡思乱想!

    脑脊液 Brainfuck 在 Scala 中使用无限内存磁带! 使用sbt assembly构建 主要选项 -c将输入转换为文字字符串 -v打印详细输出(目前还没有) -e输出指针上的最后一个值作为退出代码。 引擎 interpret解释脚本而不...

    比丘龙QQ表情加强版

    从网络搜集了一些,QQ好友给了一些,整理了起来做成一个eif格式表情包。

    网络技术提问及答问的艺术

    本博几乎每天都会收到各种微博私信提问、坛友和QQ群的提问,我曾经细心琢磨过这事儿,看过多种多样的提问和答问,很早就想写个东西聊一聊这事儿,今天正好得空,把自己胡思乱想的玩意儿做个记录,也为后人提个小醒,...

    创客教师需要怎样的培训_谢作如1

    我们呼吁中小学开展创客教育,就是希望学生们在真实的情境下学习,拿起各种工具,以“造物”的形式学以致用,而不是天马行空地胡思乱想,想出一堆根本无法实现的“创意”。

    最佳实践 — Dubbo 服务化进程的一点思考

    改造的系统涉及到核心系统,并且改造的系统一多,难免会产生一点胡思乱想。下面我就分享一下我在项目改造过程中的一点胡乱的想法。需要对大家有帮助: 1、统一的打包方式 对于之前项目中使用 restful 进行交互,项目...

    刘一男 考研词汇 5500

    第一:刘一男老师针对2010年考生最新制作考研最强版词汇记忆课程。 第二:帮助学员快速掌握考研核心5500单词,最终做到无生词上考场。...第四:秉信科学,简单实用,不胡编乱造,不胡思乱想,不肤浅搞笑,不增加负担。

    RPA-Python:用于RPA(机器人流程自动化)的Python软件包

    适用于Python的RPA :snake: | | | 该工具以前称为Python的TagUI。 名称更改的向后兼容,因此...窗口-如果视觉自动化是胡思乱想,试试你的显示器缩放级别设置为推荐%或100% :red_apple: macOS- Catalina更新引入了更

    crankycoin:Cranky Coin是一个简单的区块链,加密货币,钱包实现

    胡思乱想的硬币 Cranky Coin是一个简单的区块链,加密货币,钱包实现 入门 # apt install python3-pip # pip3 install virtualenv # virtualenv -p python3 venv # . venv/bin/activate # pip install -r ...

    MissingTextures:追踪缺失纹理问题的根源

    如果您和我一样,一个好的代码示例值得花几屏胡思乱想的解释,并且可以非常快速地解释关键概念。 我还发现适应和调试已经有效的东西要容易得多,而不是必须从头开始综合一些东西并花费数小时试图发现我不知道的缺失...

    Cranky

    胡思乱想这是出于教育目的,它包含了我对常见编码挑战的解决方案。安装使用软件包管理器npm安装测试库。 npm install测试要运行测试,只需运行以下命令npm run test执照

    ufs-birdstories:乱七八糟的长页

    ufs-鸟类故事胡思乱想的长页、感人的鸟类迁徙故事的原型。安装并运行git clone https://github.com/unsworn/ufs-birdstories.gitcd ufs-birdstoriesnpm start 浏览到 。 Ctrl+c停止服务器。

    bewell:BeWell App回购

    还有一些时候,即使一切似乎都很好,我们也会感到胡思乱想。 让我们尝试发现日常生活中的一些趋势以及对我们福祉的影响。 介绍 应用程序可帮助您跟踪情绪,睡眠并保存便笺和图像,而不必担心数据会发送到服务器并...

    xiamuguizhi:个人简介

    ,晚期懒惰癌症,喜欢重拾存在感,缺乏爱心,怯ward和对事物的恐惧,胡思乱想,对生活的恐惧,社交恐惧症,对别人的偷偷说我的恐惧症状:系统多汗症患者,腰椎间盘突出症患者,轻度抑郁症患者爱好:喜欢看日本话剧...

    Backyard-Knight:一款受过往游戏启发的动作平台游戏

    这是一款动作平台游戏,其中您扮演的是一个有着难以置信的想象力和一个胡思乱想的邻居的男孩。 故事开始于你的邻居被你的狗的吠叫激怒,决定绑架它。 现在拯救他的朋友是男孩的责任! 在游戏过程中,主角将在塔的三...

    Xtra clipboard-crx插件

    我们只是来到了最重要的部分,我们所有人都倾向于胡思乱想,这当然就是“隐私”。 我们关心用户的隐私,不干涉它是我们的重中之重。 因此,我们特别注意确保数据存储在本地,并且不得在任何地方重定向或上传到任何第...

    本科毕业设计用网上的源码-eureka::writing_hand:我读,我写,我想,我做,我学习,我编码

    我是一个喜欢胡思乱想的人,平时也是个话痨,但是话太多,总归不是件好事。 如果都是有趣的话,倒还罢了,若是废话太多,也就很难谈得上有趣,反而说蠢话的概率变大了。 就像公开课中所说的,很多时候,我们总是急于...

    NotePad2官方简体中文版

    NotePad2官方简体中文版,这是免费软件中非常不错的一款,支持导入导出设置,大量的语法高亮方案,支持代码方式显示,支持丰富的自定义设置。可以用他替换系统的记事本。

Global site tag (gtag.js) - Google Analytics