zoukankan      html  css  js  c++  java
  • 胡思乱想软件开发

     

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

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

    软件公司的目标:
    获取利润-->保住利润-->减少成本
    软件公司的实施:
    开发软件,卖出-->不退货赔款,增加回头客-->压缩成本。
    软件公司的成功方法:
    保证实施过程路线正确,并顺利进行。对应实施的过程,如下
    软件符合需求-->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 <end2){
                        Thread.currentThread().sleep(
    10000);
                    }
    else{
                        Thread.currentThread().sleep(
    1000*60*60);
                    }

                }
    catch(Exception e){
                }

            }

        }

    }

  • 相关阅读:
    shell 命令参数
    Windows系统配置Python环境,python2和python3共存
    jmeter面试题及答案
    接口测试
    python语法基础
    pycharm环境安装及注册
    Win10下python 2.7与python 3.6双环境安装图文教程
    eclipse中导入maven项目时pom文件报错
    ssm-crud项目--总结
    ssm-crud项目——分页查询
  • 原文地址:https://www.cnblogs.com/hannover/p/1340510.html
Copyright © 2011-2022 走看看