当前位置:2018刘伯温心水图库 > 软件复用 >

软件开发工作感想

  例如 ,这里的 老大 都很猛,加班 加到 BT...我 听说 有 试过 凌晨 4点才 回家...

  而且 平时 那态度 实在 太牛了..看 上去 就 好像 一点 都不辛苦...展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  你自己工作时有的想法及感受学出来就可以了,另外就是把你的目标和对未来的想法说出来,就是你的工作感想了。加油吧,还需要你自己去写,只给你见议

  展开全部对任何系统来说:无非是做好3件事:IPO。也就是Input,Process,Output。

  对需求分析来说: 最重要的是搞明白,用户的需求。也就是搞清用户的输入(Input)和输出(Output)是什么,它的要求达到的功能(Process)是什么。明白以后,就可以写一些用户需求说明书,描述用例,输入输出处理异常什么的,或者做一个简单的Demo系统,拿去给用户看,看看这个界面是不是用户喜欢的,这个流程是不是用户所需要的等等。

  然后就是系统分析: 首先,需要对用户的需求分模块,每个模块的IPO是什么,他们应采用什么架构,需要和那些模块交互,互相之间的接口是怎样的,需要使用什么技术。每个模块的运行环境是什么样子的,对效率,安全或者容错等特性是否要着重考虑。

  接着就是系统设计:每个模块的数据库要怎么设计,所用技术和架构决定后,要确定不同层次有哪些接口,比如说表现层,业务逻辑层,数据库访问层,相互之间怎么调用,定好框架和开发模式和格式,剩下的就是编码了。

  编码部分:首先团队要有一个良好的编码规范。并且对每个人提交的代码要review,我发现程序编多了,自己就成了一台计算,看到程序就会知道会出现什么结果,根本都不用跑起来。

  测试: 单元测试是否编写测试用例,Junit是个好工具。每个人都要保证好自己的代码没有问题。 整体测试就要整个流程的跑一下,看看需求实现的对不对,还有没有什么其他纰漏。

  风险管理:这一点很重要,要时刻知道自己的项目有什么风险,无论是人员的,技术的,时间的,还是协调上面的。都要心里有数,按时按周向领导汇报。

  也许写的简单了一点,不过觉得真的是如此,面试的时候,经常会有人问,有没有做过一些复杂的业务逻辑,其实说实话,我还真不知道怎么回答这个问题,我一直都觉得,,把IPO搞明白,多复杂的业务逻辑都会简化成一个一个小的步骤,处理完输入的数据后,就进行数据库更新或保存,然后就返回给用户处理后的反馈信息。复杂点的最多就是涉及到多数据库或者嵌套事务的处理,只要把握好事务的生命周期,是否互相影响,处理好提交和回滚也就OK了。如果是涉及到工作流的,就要记录和管理好它的位置,上下流程的关系状态什么的。 还有什么复杂的业务逻辑形式?

  也许大型的数据量的访问和处理就需要一些技巧了。典型的就是把经常访问的变化不经常的动态页面,转换成静态的html分配给apache处理,注意更新。或者使用集群Cluster来缓解压力。这又会涉及到怎样追踪用户的问题了,一个最简单的方式就是对用户取模来进行分配。如果对数据库的存取量太大,一般可以使用缓存,多弄几台数据库,搞成集群形式,一台主的多台辅的。如果后台表数据量太大的话,就是用分表方式。

  在一个软件项目从规划、论证到设计、实现的整个过程中,需要众多不同技能的人员参与,为了便于任务分工和人尽其才,在项目小组中应当设定许多角色,小组成员都拥有相应的角色,每种角色都必须具备相应的技能,同时从事相应的工作。

  在整个软件工程过程中,一般可划分下面几类角色(可根据公司的规模和项目规模调整):系统研发工程师、项目经理、系统分析员、系统设计工程师、软件编码工程师、软件测试工程师、系统支持工程师等。系统研发工程师(也叫产品经理)负责软件产品的功能设计,他对市场有敏锐的洞察力和感悟力,同时对软件技术内涵有深刻的理解(不一定对语言本身非常熟悉),能够把握市场需要什么,知道什么样的需求可以通过软件实现,实现的成本有多大,他熟悉同类产品或相关产品的优势和不足。项目经理负责人员安排和项目分工,保证按期完成任务,对项目的各个阶段进行验收,对项目参与人员的工作进行考核,管理项目开发过程中的各种文档,直接对公司领导层负责,他既能处理好与客户之间的关系,又能协调好项目小组成员之间的关系。系统设计工程师负责软件产品的系统设计,包括需求分析、概要设计和详细设计(最好详细到对象的每个函数接口),他非常熟悉软件工程理论,熟悉常规的软件设计思想(例如结构化设计思想、面向对象OOP设计思想)和常用技术,包括语言、服务和组件技术(例如CORBA、COM、DCOM、JavaRMI、JAVABEAN、EJB等),能熟练使用一种CASE工具进行设计并能用规范化的文档清晰地描述出来,同时他能准确的理解软件产品的功能和知道如何实现,而且对相关语言非常熟悉,能面向特定语言完成系统的详细设计。软件编码工程师负责软件模块的编码实现,他非常熟悉相关的语言细节,熟悉软件基础理论和常用算法,熟悉常规的软件编码标准。软件测试工程师负责软件测试工作,尽量发现软件设计和编码中的缺陷,他熟悉常用的软件测试方法,能设计测试用例,能够细心地做软件测试工作。系统支持工程师负责帮助用户顺利实施软件系统,他能够编写软件使用手册、对用户进行培训,熟悉相关的软件运行环境。

  在以上几种角色中,系统研发工程师、系统设计工程师和项目经理是最重要的三个角色,他们的能力和经验是项目成功的根本保证,是公司最宝贵的技术财富。

  根据项目的规模不同,角色划分和设置也不仅相同,对于较大规模的项目,可能由多人担任一个角色,对于小规模的项目可能一人就担任多个角色,但是与角色相关的职能划分是不可少的。

  角色划分是为了适应任务的分解和合理分工,是为了安排合适的人做合适的事,相应角色的人员必须作好相应角色的事,不能因为自己可以做另一个角色的事,就忘记了自己的主要任务。

  软件技术是在日新月异地发展的,任何人要想熟悉所有的软件技术是不现实的,软件技术涉及到不同的层次和不同的领域,不同层次有不同层次的协议和功能,上一层次的技术是建立在下一层次的基础之上的,任何人要学习软件技术,必须明确相应的层次,要把注意力集中在本层次的功能和协议上,不要深究下一层怎么实现,这是最关键的。

  不要一味的追逐新技术,软件只是一种工具,最重要的是用这个工具做什么有价值的东西,要学会以不变应万变,因为万变不离其宗。

  一个好的软件工作者,最重要的是有悟性和创造力,对市场的感悟、对软件技术的感悟,把二者进行有机结合形成软件产品的创造力。

  软件开发人员应该在一条技术主线上深入学习和研究,在一条主线的前提下,再研究常用的规范和技术。对于初学者,在掌握好一条主线的相关知识的基础上就可以迅速设计软件产品,而不应把面开的太广。譬如,掌握一点基础理论、一门数据库系统、一门开发工具就可以开发常用的信息管理系统。切记在同一层面上涉猎太多,学了PB,又研究VB,是毫无意义的重复。对一个公司来说,也应有一个技术主线,以及与之相关的一只开发队伍,这样才能实现软件复用和人才复用。

  在一个公司中,不应鼓励技术人员都去努力学习新技术,要给每位员工一个角色定位,要求他做好相应角色的工作,为了作好工作必须拥有相应角色的技术。对于大多数人来讲,自己可能不知道该学什么好,需要公司帮他定位。任何人在不影响本角色工作的基础上可以有自己的学习计划,但不应作为公司的计划。公司根据员工人能力的变化可以及时调整其角色。

  对于一个公司来说,应下大力气培养系统研发工程师和系统设计工程师,好的系统研发工程师(或称为产品经理)能保证一个软件项目甚至一个公司沿着一个正确的方向走,好的系统设计工程师能保证软件实现预定的功能。纲张则目举,有了纲,目就容易定了。有了好的系统设计,软件编码工作就很容易,单纯的软件编码工程师也容易找。如果有大量的软件高手,但是谁也做不了系统设计,这些人在一块做项目,沟通和合作都成问题,做出的软件就可想而知了。

  软件是一种服务工具,它辅助人类实现管理和服务。人类工作的任何一个领域,软件都可以进入。软件应用领域非常广阔。

  与其说研究软件产品如何定位,不如说是研究人类在管理和服务上的需求,哪些需求可以用软件实现、该需求的市场有多大、客户能支付的费用有多大等,都是必须研究的范围。

  常规的需求,基本已经实现了,没有实现的不是因为技术达不到就是因为经费和市场的问题。因此必须去挖掘潜在的需求和把握将要扩大的需求,就是要创新。

  降低软件开发成本就变相的提高了公司的利润,因此在开发软件项目的时候要仅可能的利用已有的组件和代码,构建新的产品,实现代码级复用,如果能开发通用化的软件产品,实现软件级的复用就更好了。开发大范围的通用软件比较困难,开发某个行业的通用软件相对容易些。

  好的软件产品并不一定非得使用了多高深的技术,关键是在适当的时刻推出适当的产品。能把各种不同的技术融合在一起也是一个很好的卖点。

  总之,对一个软件公司来说,技术、产品、管理(包括公司管理和技术管理)和市场是最重要的四个要素,作为公司的管理层要时时刻刻确保这四项要素能得到很好的管理和控制。

http://kingkaiju.com/ruanjianfuyong/778.html
点击次数:??更新时间2019-07-30??【打印此页】??【关闭
  • Copyright © 2002-2017 DEDECMS. 织梦科技 版权所有  
  • 点击这里给我发消息
在线交流 
客服咨询
【我们的专业】
【效果的保证】
【百度百科】
【因为有我】
【所以精彩】