软件开发的认识_第1页
软件开发的认识_第2页
软件开发的认识_第3页
软件开发的认识_第4页
软件开发的认识_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件开发的熟悉、如何开发一个成功的软件产品?要成功的开发一个软件产品,需要满足如下两个条件1、完美的开发团队2、开发过程合理限制2.1完美的开发团队软件产品不需要原料,软件团队是软件产品生产的最重要资源了. 如何成就 一个完美的开发团队,意见如下:1、具有软件开发必备角色,包括需求、系统分析、技术攻关、代码编写、 软件测试等.2、具有自己文档、代码标准标准,以便于维护集成.3、具有自己资源库.4、具有和谐的团队关系、正确的沟通方式5、具有英明的工程经理2.1.1 具有软件开发必备角色一个软件开发团队,必须具备软件工程中应有的角色,包括需求分析、系统 分析、技术攻关、代码编写、软件测试等,这里不

2、再赘述.2.1.2 具有自己文档、代码标准标准软件开发周期的各个阶段都应该有相应的文档,软件工程等相关学科都有很 大篇幅讲文档的重要性.软件开发团队对文档处理各有千秋,主要可分为如下 三种情况:1、 开发团队不重视文档,往往事后根据需要再追加文档,这类开发团队一般规模较小,属于作坊式的2、 开发团队迎合软件工程中文档教条,不联系自己实际情况写文档,文档格式形式化,这种开发团队一般是吃大锅饭的,文档在这种 团队被作为形象展示的工具3、 开发团队把文档作为产品的一局部,基于软件工程理论写文档,利用文档对工程进行限制跟踪,真正的发挥了文档的功用.但是一个优秀的开发团队除了按上面第三种方式处理文档外,

3、还应该具有自己的文档、代码标准标准,所有成员都要遵循这个标准编写文档或代码,而不 是各自按自己的习惯处理文档或者代码.我们知道程序编写人员都不愿意解读别人的代码,其实主要原因不是代码复 杂度问题,而是他们写代码的标准不一致,注释不标准或者不明确.所以团队如果有了自己的代码标准,所有成员都遵循这个标准,那么在程序对接、移交 以及维护等方面效率会很高.2.1.3 具有自己的资源库资源库是自己通俗的说法,它应该包括文档、技术文献、问题分析及解决方 案、源代码和控件等.这些资源应该用以一种方式治理比方以数据库的方式 存储,以资源平台的方式向团队所有成员开放,便于检索查询重用.一个技术团队,资源库是非常

4、重要的,它是团队所有成员在实践中经验的积 累、技术的总结,是团队成员技术共享的纽带.软件产品的本钱根本上只有人力资源,资源库的存在很大程度上节省了人力 资源,假设我们把一个新的开发工程的功能细化后,很多功能模块都可以从资 源库中直接调出来使用、当我们遇到一个很久以前花费很大精力解决的技术性 问题,我们可以直接从资源库中检索出该问题及解决方案,当程序员A需要写一个链表类时,可以通过资源库参考程序员B曾经编写的链表类 .这将是多么愉快的事情.2.1.4 具有和谐的团队关系、正确的沟通方式技术人员是软件公司的支柱,技术人员之间关系的和谐就显的非常重要.另 外由于软件产品的特性就是复杂度高,软件产品生

5、产过程就是一批技术人员沟 通、执行的过程.所以和谐的团队关系及正确的沟通方式都非常重要.关于如 何做好这一点,有如下看法:和谐的关系上,队员之间要作到理解、尊重、宽容,这不但是关系开展的前 提,也是关系健康向上开展的根底.有了和谐的关系,沟通就显得顺利多了,个人认为沟通主要做到如下三点:1、要有所准备:沟通就是由于有问题需要讨论,那么就有问题的提出方和 解决问题的一方,这就需要问题的提出方根据实际情况问题复杂性、重要性、 参与讨论的角色和专业方向做出充分的准备,比方如何描述问题才能让参与 讨论的不同角色的人在相对短时间内对问题有深刻的理解并给出好的建议.那 么对于技术性非常强的讨论或者讲座、就

6、需要参与讨论的成员事先至少对该技 术性的话题有一个宏观的熟悉,比方技术讲座,如果技术性很强,最好就是听 讲座的成员先对讲座的内容有一个了解,然后才能更好的在听讲过程中受益并 发挥.毕竟不是小学生上课,我们的技术讲座也不该是照本宣科,应该事先了 解、然后在听与讨论中掌握知识.2、要学会聆听,这不仅是对别人的尊重,也确实能使自己受益只要对方 不是虚无缥缈、话不中的、夸夸其谈的长篇大论,不要别人刚刚开口,咱就 来个,你不知道、你不懂,这是不对的,三人行、必有我师.相互的聆听是理 解问题的根底,是讨论问题得出正确方案的前提.3、要换位思考,工作中我们要学会换位思考、不要主观的臆断.特别是团 队协作的时

7、候,要站到我们伙伴的角度去看问题、思考问题,理解你的伙伴、 尊重你的伙伴,才能得到正确的讨论结果或解决方案.2.1.5 具有英明的工程经理不讨论工程经理职业、心理、知识、经验等条款化的素质.也不讨论决策、 沟通等工程经理应该必备的水平,只从自己角度,谈下自己的几点看法.1、 要有一定的权利,从实出发对待问题.很多软件公司会出现项目经理责任高、权利小的现象.也很多工程经理由于某些缘故,在方 案决策处理方面不能从实对待问题, 这种现象往往出现在工程经理的 上级领导对工程过多干预的情况下.2、 中肯,谦虚,尊重队员.能认真听取所有成员的技术观点、意见.这点很重要,俗话说“三个臭皮匠,顶个诸葛亮,技术

8、的追求 是无止境的,工程经理不可能掌握全部技术的新动向.3、 有亲和力和一定的人格魅力,能站到所有团队成员的角度思考问题.化解技术合作或者日常生活上不和谐的情绪. 工程经理毕竟不 是技术骨干,只是懂得决策、懂得技术是不行的.2.2开发过程合理限制软件产品工程化之后,软件开发周期就被划分为很多阶段,如制订方案、需 求分析和定义、软件设计、程序编写、软件测试、运行和维护等,还提出了很 多软件开发模型作为这些阶段行为参考.关于这方面的资料非常多,这里不理 论教条化的对这些内容讨论,只是结合工作经验,从软件定义、软件开发和软 件维护三个角度简短的谈些自己的看法.2.2.1 软件定义这个阶段主要就是通过

9、需求分析来确定最终做出怎么样的一个软件产品,是至关重要的.工程组应该做到:1、全员参与,不仅仅是工程经理和需求分析人员,包括编码、测试人员等 都要参与进来.比方需求分析人员由于技术专业不理想,根据用户需求 设计的软件定义没有考虑到某个技术障碍,导致编码人员在开发过程中 不可逾越,临时调整方案不但极大降低质量、 还严重的影响了工程进度.2、给该阶段预留更多的时间,不厌其烦的与客户沟通.隔行如隔山,用户 与开发人员之间的交流很难.有时候用户很难明确的提出他的需求,这 时候就需要工程分析人员理解并牵引. 有时候用某些需求用户也提不出, 直道编码甚至维护阶段才提出来,分析人员应该做出足够的思考,以便

10、软件定义时候预留相应的接口.2.2.2 软件开发这个阶段主要完成概要设计、详细设计、编码及测试.最重要的莫过于概要 设计时合理的划分功能模块了.划分模块原那么如下:1、 高内聚、低耦合.这样模块的独立性很强,在代码开发阶段给每个模块编写者很大的空间,使编写目的非常明确,可以独立开发, 互不影响进度.2、 模块接口明确.这样开发者在开发过程中预留接口就可以了,不用频繁的整合或移植代码进行接口联调.另外就是工程经理要了解自己的设计人员各自的技术特长,分配相应的 模块给程序设计人员,会很大程度上缩短开发周期.2.2.3软件维护软件维护是一项长期而繁琐的任务, 长时间的跨度可能会牵扯到文档、 代码 更

11、新,人员更换等.所以有关软件的文档一定要写好、保存好.另外前面提到 的开发团队要有自己的文档代码标准标准等,也是做好软件维护的前提条件.在当我们学会了一门语言的时候 也就是说,记 住了该语言的语法,词法,还有一些常用的函 数,就意味着已经掌握了编写程序的根本工具.无论用的是社么语言,都差不多.只是工具之间 有长有短.比方说delphi,VB 之类做 windows 环境的应用程序很方便;用JAVA开发基于网络 的程序很轻松.假设我们用 C C+写一个记 事本软件,估计要写数百行代码才能完成,而且 不能保证没有大错误,而用 delphi,或VC等可 视化工具来做,就只要鼠标点点控件,几下就完 成

12、了,可谓方便.这就是说工具各有特点,各个 方面都有各个方面的最适合的工具.不过工具只 是工具,光靠工具是写不出好的程序的.就好比 我要写一篇文章出来,首先确定用社么语言来写汉,英,俄还是其他?很显然,如果我是写给 中国人看,自然用中文,写给美国人看,当然用 英文.那么确定了语言之后呢?我就能写文章 了吗?文章结构如何设计?写文章的方法技巧 和考前须知是什么?这些我都不知道,自然写不 出好文章.可见,要写一篇好文章,会语言是远 远不够的.同样,要写出好的程序程序运行结 果正确,时间,空间效率高,健壮性好,可读性 强等等,光会一门语言也是远远不够的.而编 程的具体方法的学习才是我们的重点.计算机教

13、育普遍都是先从教授一门语言开 始一般是C语言,然后,就开始安排对数据 结构和算法的学习.数据结构和算法设计分析是 整个编程方法的根底,重中之重.以前流行过一 句话:数据结构+算法=程序.这是不无道理的. 计算机是用来处理和存储数据的.数据在计算机 中的表示和存储不是无组织的, 是有规律,有结 构的.因此,当我们对这些根据一定规律组织的 数据进行操作的时候,理论上存在一种或几种与 某结构相比配的最优或近式最优算法,以次 来保证操作数据的时空效率.打个比方,现有一 排数据:a,b,c,d,e,如果经常要对其进行查找操 作,顺序排列存储该数列能降低操作的时间. 同 样如果经常要对其进行插入或删除操作

14、,采用链 接存储那么能降低该操作的时间复杂度.由此可 见,合理的数据结构,高效的算法对程序质量有 着多么重要的影响!又比方,我们要编写程序能 对中国所有公民的身份证号进行排序. 这是极其 庞大的一组数据,如此多数据采取什么结构来表 示和存储,以及应用什么算法来对其排序,使该 程序在排序时尽量的快,占用的空间尽量的少. 这都是学问,编程的学问!所以,可以讲,程序 员对数据结构和算法的领悟程度直接决定了他 的编程水平的上下.那么如何提升自己的水平 呢?我们可以学习研究像 CC+函数库API 里的函数,或JFC JAVA类库中的函数实现, 这些函数实现都是非常有经验的程序员编写的, 有着很好的运行效

15、率.再者,就是数学的重要, 我认为数学对程序的重要性表达在对算法的支 持上.比方说微积分思想,为计算机数值计算提 供了理论指导;而数据结构和算法来源与离散数 学,线性代数和概率统计中的思想和方法.另外, 像计算机密码学,计算机图形学,计算机多媒体 都离不开数学.好的算法需要数学工具来理论验 证,也需要数学来改良,来完善!那么,面向对象又扮演什么角色呢?说到 底,我觉得面向对象思想的宗旨就是代码重用. 面向对象里的三大概念:封装,继承,多态都是 为了代码重用.重用质量高的代码,不但可以节 省人力,而且极大提升了本身原程序的质量. 比 如,我要编写一多功能计算器,我依据自己喜好 设计了界面,在具体

16、功能实现上我继承了别人已 经写好的正确功能类,不但省去了自己写的麻 烦,而且也保证了该计算器的逻辑正确性, 一举 两得.在编程时运用面向对象思想,类的设计是 最为关键得第一步,包括对类结构的设计和内部 功能实现.其次就是对类进行准确合理的继承和 多态化.显然,不正确的进行继承和多态会给整 个软件带来巨大的错误隐患.面向对象思想在写 小程序时或许表达不出优越,但在中大型软件开 发时,它的用处便会极大表达出来.面向对象方 法在解决软件危机里起到了举足轻重的作用. 但 在这里,我还是要强调一点,面向对象思想是极 好的思想,极好的编程方法.但是如果没有质量 好的代码可以值得被重用,面向对象方法就没有

17、用武之地!可见,拥有良好数据结构和算法的功 能代码块是保证整个程序质量的奠基石.软件尤其是中大型软件质量好坏还有一 个很重要的因素:软件体系结构.打个比方,我 要建房子.软件体系结构就好比房子的结构, 采 用哪种样式欧式?中式?决定了房子的结构, 软件体系结构的规划设计也就决定了软件本身 的结构软件的环境,功能模块的安排,位置, 互相联系关系等等.那么,房子的结构设计好 了,就要解决建筑材料的问题.在这里,牢固的 砖头和横梁是房子牢固的根本保证.同样,拥有 良好数据结构和算法的功能函数或函数块也是 整个软件质量的根本保证!有了质量过硬的砖头 和横梁,只要结构合理,房子的寿命是完全可以 保证的.一样道理,我们手头有了大批信的过的 功能函数或函数块,在编程的时候严格根据软件 工程标准,合理运用面向对象方法,根据科学的 体系结构要求,就能在经济的条件下,开发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论