`
zwchen
  • 浏览: 793904 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

软件开发的一点感想

阅读更多
这两天,遇到工作中的两个小问题,加深了我以前对软件开发的看法。

一个是关于Firefox崩溃问题的处理。
本来我一直用得好好的Firefox2.0突然打不开了,现象是只出现任务栏的button(见我重现问题的截图),或是要求我输入上网代理账号(公司内部不是匿名上网),但那个“确认”按钮怎么点击都无效。几个月前我遇到过一次,最后是被迫重装,但我喜欢的一堆plugin都得重新寻找、下载,包括收藏、使用偏好等,花的时间不亚于装个OS。现在咋办?虽然我尝试去研究firefox在“Documents and Settings”下的preference,并且google “firefox startup bug”等,但最后还是失败而返。
其实,现在最难的就是:问题发生在哪里?根据现象,我觉得问题应该是发生在Firefox初始化时,需要连接到网络,譬如检测firefox最新版。在定位问题后,我用firefox的安全模式(firefox.exe –safe-mode)登录,进入后去掉了代理设置。重启,ok,然后在“选项”里面重新启用代理,可以正常google了。但退出firefox后,重新启动,问题依然。

怎么解决?也就是不用每次启动firefox时确认那个代理对话框。找个匿名代理不就ok了吗?我想到曾经用过CCProxy的二级代理功能,于是我在本机安装一个它的共享版(仅支持三用户),在CCProxy里面设置我的上网代理IP,账号、密码。再把firefox的上网代理设置成CCProxy的IP、端口,但用的是匿名上网(CCProxy每次随系统启动)。
问题搞定!

另外一件事情是关于表格对齐的问题。
一位同事用Word做表格排版时,一表格cell居中对齐,弄了半天都没好(见截图示例),其它都是以前别人弄好的,不知道为什么丢下这个:怎么让那个橘红色的文本上下对齐格式和其它几个一致?大家都知道,Word的工具、菜单项都好几百,还有很多在菜单没显示,需要“自定义”的,一个个漫无目的尝试挺费劲的。现在我们怎么去定位这个问题?我们一般会在“格式”菜单里面去找(抛开无分类的快捷键),但怎么试都不行。其实,仔细想想,让文字在table的cell里面定位,是调节文字本身,还是调节cell属性?如果是调节文字的话,我们就应该选择文字吧?大家也可以想想,Word工具条上的那个“居中”功能,是归属哪个菜单(当然,对于纯文字居中,和table的cell居中,功能是不一样的,类似于OO的多态)。
问题在我定位后,轻易就解决了。

从上面两个示例,大家想到了一些共通点吗?我觉得有两个:
1、怎么去定位问题。
2、怎么去解决问题。这比定位问题容易。

其实,在软件开发工程中,我觉得我花时间最多的,往往不是解决问题,而且寻找、定位问题,也就是常说的debug能力。大家觉得上面两个问题和软件开发关系大吗?其实,我觉得,软件开发、设计,和它们解决的是同类问题。

软件开发,我觉得最重要的一种能力,就是抽象思维:寻找问题的共通点、规律,发现现象背后的本质。大家认同吗?
我又想,哪个学科不是这样呢?只是软件开发更突出点。

  • 描述: Firefox2.0突然打不开了,现象是只出现任务栏的button
  • 大小: 9.6 KB
  • 描述: 怎么让那个橘红色的文本上下对齐格式和其它几个一致?
  • 大小: 2.6 KB
分享到:
评论
12 楼 q631951221 2011-12-06  
i_love_sc 写道
同样说一下。
上班时候有的人很多时间都是在写代码,而有的人更多时候在看网页和其他同事聊天什么的。
其实很多时候,解决问题的,都是后者。

呵呵,对的,
11 楼 zwchen 2007-07-10  
抛出异常的爱 写道
TDD的作法是把有可能出的问题列出来
在写的时候就不出问题。

第二个问题是不可定的。
由于是MS 作的软件=>什么样的可能性都有
你有没有用过 2007 ?
很多很强大的功能竟然找不到了。
都必须放在面板上才能用。
我不知道是进步还是倒退
2007没用过,不过也有体会,MS的那个Word2003,能够把一些button随便放到哪个菜单,虽然是灵活,但会让用户无所适从。一个大众型软件,如果一般人使用都觉得很别扭,我觉得就是失败。大家看过《Don't Make Me Think》这本书吗?很有趣。

我觉得,在菜单下多做些二级菜单,譬如10×10,就可以容纳100个item了。eclipse的workbench我觉得比MS的VS顺手多了,譬如那种tab,难道只是我的使用习惯?Dreamweaver的菜单项也很多,但我就是觉得用的舒服,flash MX也够复杂吧,但都好用。
10 楼 抛出异常的爱 2007-07-09  
TDD的作法是把有可能出的问题列出来
在写的时候就不出问题。

第二个问题是不可定的。
由于是MS 作的软件=>什么样的可能性都有
你有没有用过 2007 ?
很多很强大的功能竟然找不到了。
都必须放在面板上才能用。
我不知道是进步还是倒退
9 楼 Godlikeme 2007-07-09  
问题分解,说回来还是算法。

为什么全世界都喜欢用 三
因为规模适中。
规模大了,递归,回溯都很困难。


最近开始研究魔方,受到点启发。
8 楼 axgle 2007-07-09  
"怎么去定位问题... debug能力"
一般我使用"隔离法",例如把一段代码注释掉,然后看问题是否依然.如果依然有问题,说明问题不在注释的代码里.这样就缩小了范围.
第二中隔离的方式,是把自己认为可能有问题的代码单独抽离出来,看看十否有问题.
7 楼 zwchen 2007-07-02  
推荐wikidepia上关于Design patterns的极其详细的描述:
http://www.answers.com/topic/design-patterns
http://www.answers.com/topic/design-pattern
6 楼 zhangzhaofeng 2007-07-01  
i_love_sc 写道
同样说一下。
上班时候有的人很多时间都是在写代码,而有的人更多时候在看网页和其他同事聊天什么的。
其实很多时候,解决问题的,都是后者。


?
什么意思
5 楼 winterwolf 2007-06-30  
好像所有问题都是这样的
4 楼 zwchen 2007-06-30  
第一个问题解决方式,是通过Adapter模式,将一种接口转换成Firefox期望的接口。
特此更正: 我原来在这儿是说中介者模式,经过思考,我觉得它是不适合的,因为我设置的那个本机代理服务器并不是作为一种调停者的角色,使Firefox和目标website解耦。
另外,Decorator模式,我认为也不适合,因为Decorator模式有个要求:给原对象添加职责,但不改变原对象接口。
而且,我之所以没有说Proxy模式,因为它并不能解决问题,本来就是proxy服务器嘛,我解决问题的方式,只是重新构造了一个不需要输入上网账号的代理。

第二个问题,是有关职责分配。

有人说,所有的软件问题,都可以通过添加一个中间层解决,不过直到现在我的理解也不是非常深刻。但我认为,软件的发展,都是以解耦和职责分配为其核心思想,其实,它们两个是同一个问题(解耦是目标,职责分配是其实现方式)。GOF模式和Core J2EE模式,几乎都是解决这个问题。
Factory模式:将对象创建的职责分离出来。
Builder模式:将一个复杂对象的呈现和其构造过程分离出来(譬如Spring容器提供xml配置,如果我们再给它提供一种DataBase配置的方式,Seasar framework就是用XmlS2ContainerBuilder来构造IoC容器)
Bridge模式:将抽象和其实现分离(jdbc驱动设计思想,譬如mysql的jdbc和odbc等)
Tempate模式:将可变的部分分离到子类(Template模式的callback是所有framework设计的核心思想之一)。
...........太多了,每种模式都涉及到职责分离...........

Craig Larman那本著名书籍《Applying UML and Patterns An Introduction to Object-Oriented Analysis》,里面最核心的模式GRASP,也就是解决职责分配和解耦的。
就是最常见的Web Framework,如Webwork,除了解决了重用的问题,但一个核心思想,也就是解耦(MVC)。
Spring的IoC和AOP也就是解决同一问题。
IoC:将对象的创建和对象的使用分离,降低耦合。(其实现方式DI,Dependency Injection,我认为Provider Injection更适合。)
AoP:将通用的功能分离出来,单独形成一个横切面。

另外,象工作流系统的产生,也主要是为了将业务逻辑和业务流程分离开来,譬如媒体行业,如新闻的采、编、发;电子政务、金融行业的审批;电子商务的预定处理流程(amazon卖书的整个过程)....,工作流都是其核心。

哪种framework,哪种architecture,莫不如此。
3 楼 i_love_sc 2007-06-30  
同样说一下。
上班时候有的人很多时间都是在写代码,而有的人更多时候在看网页和其他同事聊天什么的。
其实很多时候,解决问题的,都是后者。
2 楼 garyt 2007-06-29  
有点道理,还能再多说点什么吗?很想听~~~~~
1 楼 longking 2007-06-29  
认同你的观点
非常有感触

相关推荐

    软件测试培训感想

    【软件测试培训感想】 软件测试,作为软件开发过程中的关键环节,对于保证软件质量具有不可忽视的作用。通过中国软件评测中心的培训,我对软件测试的理论和技术有了更深入的理解。这次培训不仅梳理了软件测试的基本...

    软件学院软件工程实践感想

    在软件学院进行的软件工程实践中,我们深入地探讨了软件开发的全过程,从需求分析到设计、编码、测试,直至最终的维护与升级。这个过程中,我积累了丰富的知识和实践经验,以下是我对软件工程的一些核心理解和感悟。...

    软件测试课程感想

    软件测试课程感想 软件测试是软件开发过程中的一个非常重要的步骤,它可以确保软件的质量和可靠性。本文将对软件测试的基本概念、测试方法、测试流程和代码审查等方面进行详细的阐述。 一、软件测试的基本概念 ...

    关于安全生产的一点感想.docx

    关于安全生产的一点感想.docx

    一个月行测高分秘诀(过来人的一点感想)

    一个月行测高分秘诀(过来人的一点感想) 一个月行测高分秘诀(过来人的一点感想)

    关于管理者廉洁自律的一点感想.doc

    关于管理者廉洁自律的一点感想.doc

    虚拟化云计算交流—高校实施一点感想.pptx

    虚拟化云计算交流—高校实施一点感想.pptx

    提升个人所得税起征点的一点感想 .docx

    提升个人所得税起征点的一点感想 .docx

    软件工程感想软件工程感想

    软件工程的兴起,是计算机科学领域的一次革新,它将工程化的思维方式引入到软件开发中,强调以系统化、量化的方法来管理和控制软件开发的全过程。作为软件工程师,既要具备宏观视角,能够把握软件开发的整体脉络,又...

    入路感想铁路入职感想.rar

    【标题】:“入路感想铁路入职感想.rar”是一个压缩包文件,主要包含了作者对进入铁路行业后的个人感受和体验。从标题来看,我们可以推测这可能是一份新入职铁路行业的人员所写的个人心得体会,涵盖了他或她在铁路...

    GCT数学复习之感想

    GCT数学复习之感想GCT数学复习之感想GCT数学复习之感想GCT数学复习之感想GCT数学复习之感想

    ArcEngine开发感想

    标题与描述均提到了“ArcEngine开发感想”,这表明文章将围绕ArcEngine这一地理信息系统(GIS)软件的开发体验展开。ArcEngine是ESRI公司旗下ArcGIS平台的一部分,主要面向开发者提供地理信息系统的定制与扩展功能。接...

    软件开发工作总结.doc

    这篇工作总结涵盖了软件开发人员在2013年的回顾、工作情况、来年计划、工作感想以及今后的打算。作者强调了在软件开发过程中的团队合作、沟通、氛围以及工作态度的重要性。 在工作情况部分,提到了两个主要的客户...

    新项目中的小感想

    “工具”标签则可能意味着在项目中使用了特定的开发工具或软件,如版本控制工具、集成开发环境(IDE)、自动化构建工具等。 在实际项目开发中,源码的质量和管理是关键。良好的源码结构可以提高代码的可读性和可...

    软件开发工作总结.pdf

    【软件开发工作总结】 这篇工作总结涵盖了两个主要部分,分别是一位软件开发人员在2013年的年度总结和另一位在公司实习2个月的软件开发者的年终总结。以下是对这两部分的详细解读: 1. **2013年软件开发人员年终...

    接触力软敏捷开发框架三年,我的一点感想.zip_cavefl5_创业_力软_快速开发平台_敏捷开发框架

    接触这个框架有三年的时间了,初次接触b/s型开发项目时,是在指导人员的帮助下完成的,技术上确实也学到了一些东西,但个人觉得最大的收获是在开发软件项目的过程中,自己意识上的提升,如做项目是考虑其合理性安全...

    软件测试感想

    这篇关于“软件测试感想”的文章,主要探讨了作者在学习嵌入式软件测试过程中的一些体会和认识。 首先,文章指出在接触嵌入式软件测试之前,大多数人的理解仅限于对基础编程语言(如C语言、C++)的简单调试,缺乏对...

Global site tag (gtag.js) - Google Analytics