我现在看到这个话题,自己也感到吃惊。我也不知道当时我在制定编写计划的时候是如何考虑的。这个话题实在是太大了,如果要写好的话,不亚于写个设计师工作大全了。但是我是一个很机械的人,定了就写吧。说真的,做了几十年的软件设计我从来没有定下心来考虑这个话题,那今天就试着写写吧。各位读者可以先不看我写的东西,自己试着考虑这些问题。看看两者有什么相同和不同之处,这样大家可能对这个问题有更全面的了解。
这里的软件设计师是指软件公司以及企业单位从事软件开发的IT人员。他们所要开发的软件是指外部用户和企业内部用户两个方面。下面将不再特别区分这两种情况。
这段时间我一直在观察我周围的各种各样的软件设计师,也和他们进行了各种沟通,也谈过项目的总体构架,也谈过功能的具体实现。我不断地在观察他们所说所做的背后的原因,让我有更多的感慨。他们大都关注具体问题的如何解决,根本不注意问题的解决方法,不去注意自己的方法和别人的方法的不同之处,就事论事。就像很多中学生只关心试题的答案一样,不去深入掌握解决问题的方法,结果就造成做过的题会做,没做过的题不会做的状况,这样的学生如何能够获得稳定的好成绩呀。
感慨这么多,还是回到本次话题吧。我还是想换个思路,这次不是把软件设计师要思考的问题都罗列出来,而是要把如何写好这个话题的思路展示给大家,这个思路就一种解决问题的方法。掌握了这个方法我们就可以将这个话题写得更好。
1、 软件设计师要思考那些问题的范围
软件设计师要思考那些问题首先要确定思考的范围。这个思考范围是要对设计师是有用的,有重要作用的。那些无关紧要的内容,可以舍弃,我们必须突出重点。
从这个角度出发,我认为从软件制作周期内每个环节来讨论软件设计要思考的问题是比较合理和科学的。这里我强调了软件制作、周期、环节这三个重要的要点。很多人在考虑软件设计师要考虑问题时,立即会想到采用什么技术,某个功能怎么能具体实现这样的具体问题。如果,你要问他为啥这样想,他就会反问拿到这些问题不重要吗?不需要考虑吗?如果你回答不重要,他立即会讲出很多重要的理由,你回答重要,缺附和了他那种凌乱和具体的思维方式。
一个好的软件设计师应该闭上眼睛就能把他要思考的问题一个不漏的讲出来。这就说明了他掌握了那种职业的方法。如果他讲不出来,或者今天这样讲或明天那样讲说明他根本没有对这个问题有系统性的认知。对于这种软件设计师,你都可以闭上眼睛就可以知道他是如何走一步看一步的进行自己的设计的。
1) 软件制作
从软件制作这个方面来思考,表明了软件设计师的职业所然,是有明显的职业针对性的。如果我们从工资收入、人际关系等方面来思考问题,那就不仅仅是软件设计师了,其他的诸如项目经理、管理者、文秘等等都可能思考这些问题的。
2) 周期
软件制作是一个过程,也可以看作一个周期(相对于下一个项目)。软件设计师是这个过程的参与者,是全过程的参与者。因此,我们要站在软件制作的整个周期来思考些问题。而不是在这个过程中某一点来思考一些问题。很多设计师并没有软件制作的周期意识,只有别人问到他的时候,他才说这个他知道。其实他真的不知道。因为知道了,别人也不会问他了,知道了,也不会把思考点只集中诸如需求分析、方案设计上面了。
3) 环节
软件制作是一个周期,而且它是一个可以划分的。因此,软件制作就可以有各种各样的环节。无论这个环节怎么去划分,但是这些环节一定包含了软件制作的全过程。所以,环节和全部环节是我们必须要表达的。很多软件设计师并不在意软件制作的环节和全部的环节。还是那种自然主义思想,做到那边算那边。
我把软件制作分成10个环节: 1、需求 2、需求分析、3、软件构架设计 4、软件详细设计及文档 5、开发阶段 6、测试阶段 7、上线阶段 8、投产运行 9、用户反馈、10、日常维护。
面对这些环节,程序员都是有很多很多思考问题的。
2、 如何编写思考的问题
当我们明确了程序员思考的范围之后,我们就可以在这个范围内进行进一步的思考。比如我们面对需求这个环节,我们要去如何思考,我们面对软件设详细设计,我们要去如何思考。当我们掌握了这种思考方法后,我们就可以对其他环节进行更加有效的思考了。
一般的软件设计师并不关心思考方法,面对需求可能直观地想到了需求书、想到了功能;面对软件设计可能立即想到语言选择、采用什么技术、基本的算法。如果你去问他为啥要这样想,他又会同样的找出他说所讲的重要性。这种随想随说的思维方式和需要极强的逻辑性的软件设计师的职业特点是完全不符合的。
对于一个问题的思考每个人有每个思考方法,但是,这并不意味每种思考方法都是对的。判断对错的一个标准,就是思考的结果能够更好更快更科学地解决问题。这个“更”一般人都是和原来的自己比,也就是说通过思考自己比原来想的更好了。这样的“更”含金量价值不高。这个“更”应该和你周围的同伴相比,应该和你认为的高手相比。这样思考的结果才更有说服力。对于软件设计师来说这种思考的结果是必须的,不采用最好的思考结果,就不可能产生最好的软件。
对于软件设计师如何在某个环节的思考方法问题,我认为首先要明确这个环节的思考得目的,也就是说搞清楚为啥在这个环节要思考,不思考行吗?第二步把这个环节的有关思考的对象罗列出来,对象的颗粒度越细,思考的问题就越深入。第三步将思考的对象之间的关系以及程度罗列出来,第四步对这些对象和关系相互之间进行组合思考,第五步对每个思考加入自己的经验和其他人经验进行有效地验证,或进行有效的推论。第六步,对所有思考进行归纳得出思考的结论。
其中第一步是很重要的,它是你思考的基础和范围,如果你的对象在这个范围内收集的比较全,这样你的思考的全面性就得到了保证。在全面性基础上,我们才可以去考虑内容的合理性。
我们以需求这个环节为例,看看我们所要思考的问题。
首先我们要把需求环节思考的目标给明确起来:那就是软件设计师要对需求本身和需求环境有一个充分的了解,尤其是对需求的了解渠道和了解结果有一个充分了解了。只有对需求这个环节充分了解之后,我们才可能进入需求分析环节。否则,到了需求分析环节,你可能还要回到需求这个环节再次思考。
第二,将所有思考对象尽可能的罗列出来。例如,需求提出者、本人、其他需要掌握需求者、需求书、需求环境、时间要求。这些大类的对象还可以细分成很多小的对象,对象的颗粒度越细,思考的问题就越深入。例如,需求提出者的属性,提出者是单位,还是个人,提出者所在的企业、提出者所在的行业等。
第三、将对象之间的关系和关系程度进行罗列。例如,将需求书与本人之间对象的获取、阅读、理解、掌握罗列出来,对这些关系程度如:获取:没有问题、困难、暂时无法获取;阅读:完全阅读、不能全部阅读、无法阅读;理解:完全理解、部分理解、不理解;掌握:完全掌握、不完全掌握、不掌握等也罗列起来。
第四、第五、第六因篇幅问题我就不在举例了。
我就需求环节可以举出数以百计的问题来,我在这里随意地提出几个思考问题,并把思考这些问题的目的也进行了说明。
1、 提出项目的用户是什么企业事业单位?属于何种行业?其在行业中的地位如何?
问题的目的是要明确项目的分类,评估项目建成后项目的行业地位。强调行业是从行业的角度上来看待这个项目,以便这个项目可以归属到某个行业项目之中。或从某个行业项目之中获取相关需求经验。
2、 提出需求的用户是企业中的什么部门,是属于企业哪一类部门,生产业务部门?管理部门?办公部门?
问题的目的是明确项目的应用分类,是属于业务系统、MIS系统、办公系统。通过分类可以利用不同类型系统的规律对项目进行分析。
3、提出需求是软件公司自身吗?软件公司提出开发软件的原型需求的企业和部门是什么?
问题的目的是了解需求来源的渠道,如果是自身软件软件,渠道相对容易畅通,如果其他企业则要考虑渠道是否畅通问题。
4、用户提出需求的原因是什么?是因为企业产品业务发展的要求?是企业内部管理的要求?还是外部监管要求?是企业上级部门的要求,还是企业下级部门的要求?
其问题的目的是进一步了解需求的来源、了解需求的重要程度和紧迫程度,这对下面的各个环节都是十分重要的。
5、提出需求要解决什么问题?业务的流程的计算机化?产品生产的计算机化,减轻原来的手工操作、提高工作效率?满足上下级管理的要求?实现管理手段的信息化?原来的系统地升级改造?实现软件的商品化?
其问题的目的是进一步对项目进行分类,通过分类归属,可以按照所属归类进行不同的处理和分析。
6、需求是提出急迫吗?项目要求完成时间急迫吗?
其问题的目的是了解项目的紧迫性程度,不同的时间要求,可能决定不同的设计方案。
7、需求有完整的需求说明书吗?如果是外部强制要求,外部有相关文件和需求说明吗?
其问题的目的是了解项目需求书的是否存在,是否完整,相关外部需求能否获取。如果存在问题,则要考虑如何去解决这些问题。
8、当需求不完整的时候,用户能指定需求解释人员吗?
其问题的目的是能否建立面对面的沟通渠道,这个渠道能否满足对需求了解的要求。实践中指定的解释人员可能也不是能够解释通需求的。
9、根据以往经验初步判断,这个项目或软件是属于大项目?中项目?小项目?根据以往经验和开发队伍初步判断这个项目或软件是否有技术难点、这个难点能否克服、大概需要多长时间能够完成。
其目的对项目进行分类利用原有的开发经验对其作出初步的判断。
10、与之交流的用户属于什么类型?外向?内向?需求是否熟悉?表达是否清晰?是否有充足的时间?当无法与之交流的时候,是否可以请求换人或增加需求人员?
其问题是为项目的需求沟通做好各种准备工作,因为不同沟通对象会产生不同的沟通效果和效率,因此,要为有效的沟通进行充分的准备。
我可能在本文中过分强调软件设计师的思考方式了,这也是我感到无奈的地方。本文的题目可以改成“软件设计师应该如何思考问题”。软件设计师可以将数以百计的思考对象和数以十计的对象关系进行排列组合,那是怎么样的无穷无尽的思考话题呀。要思考的问题可以无穷无尽,而思考问题的方法却十分有限,我们真的可能要关注方法了,先方法后问题,也许我们可
[/size][size=small][size=medium][/size]
[/color][color=darkred]能收获更多。如果读者有兴趣按照软件制作十个环节,逐一地去思考每个环节中的目的、对象、关系、程度、组合、经验、结果,你就会发现软件设计的职业的思考范围之广之深之无限。可以这样说软件设计师的之间的差距首先是思考方式上的差距,然后是思考范围上的差距和思考内容上的差距。
分享到:
相关推荐
《2004年上半年中级软件设计师考试试题与解析》是一份专为准备参加软件设计师资格认证考试的人员设计的学习资料。这份压缩包包含了两部分重要内容:中级软件设计师2004上半年上午试题.doc和中级软件设计师2004上半年...
### 软件设计师知识点详解 ...总之,成为一名优秀的软件设计师需要不断学习和积累经验,同时也要具备良好的职业道德和个人素质。通过参加软考等认证考试,不仅可以检验自己的专业水平,还能为职业发展打开更多可能性。
《软考中级软件设计师真题集锦:历年试题解析与备考指南》 软考中级软件设计师,作为国内计算机技术与软件专业技术资格(水平)考试的重要组成部分,旨在考察考生在软件设计领域的理论知识与实践能力。这份集合了...
《软考中级软件设计师历年真题.zip》是一个包含软件设计师考试历年真题的压缩文件,时间跨度从2008年至2018年,总计十年的考试资料。这个资源对于正在备考软件设计师资格认证的考生来说是极其宝贵的,因为它提供了...
总而言之,这份“软件设计师试题集”是准备考试的利器,通过它,考生可以深入理解和掌握软件设计的关键知识点,提高自己在实际工作中解决复杂问题的能力,为成为合格的软件设计师打下坚实的基础。
《软件设计师真题模拟题》是一份集合了2004年至2017年间历年软件设计师考试的真实试题,以及20套精心编纂的模拟题的宝贵资料。这份资源对于正在备考软件设计师资格认证的考生来说,无疑是极具价值的学习材料。 首先...
历年软件设计师考试真题。 勇气通往天堂,怯懦通往地狱。——塞内加 有时候读书是一种巧妙地避开思考的方法。——赫尔普斯
【软考软件设计师试题】是针对国家计算机技术与软件专业技术资格(水平)考试中的软件设计师这一级别的考试资源。这个资源通常包含历年的考试试题,旨在帮助考生熟悉考试格式,掌握必要的知识点,提升备考效率。 ...
这个压缩包是为那些准备参加软件设计师资格认证考试的人量身定制的,它包含了过去二十年的试题,帮助考生了解考试的模式、重点和难度趋势。这份资料的价值在于,它不仅提供了大量的实践题目,而且通过对比不同年份的...
《思考软件,创新设计——A段架构师的思考技术》介绍当今全球正蔚为风潮的设计思考(Design Thinking)技术,陪伴你从目前的编程或设计岗位进入架构设计(A段和B段),踏上灿烂的软件(程序)生涯的新旅程。...
《软件设计师习题集》是针对中级软件设计师考试的一份详尽复习资料,它涵盖了考试所需的各个重要知识点,旨在帮助考生全面理解和掌握软件设计的基本原理和技术。这份习题集精心组织了十四个章节,每个章节都对应着...
总之,"软件设计师.zip"是软件设计专业人士不可多得的学习宝库,它涵盖了广泛而深入的软件设计知识,是提升专业素养,迎战软考,乃至日常工作中解决问题的有力工具。通过深入研读和实践,每一位致力于软件设计领域的...
在准备软件设计师考试的过程中,考生应充分利用这份资料,不仅要完成每一道题目,还要深入理解每一个答案背后的理论依据。同时,结合其他教材、教程和实践项目,全方位提升自己的软件设计水平。通过不断的练习和学习...
《近5年软件设计师中级真题和答案》 在信息技术领域,软件设计师是一个至关重要的角色,他们负责设计、开发和维护软件系统,确保其高效、可靠且用户友好。为了成为这个领域的专业人士,许多人选择参加软件设计师...
【2017下半年软件设计师上午试题解析】 2017年下半年的软件设计师考试是针对计算机软件专业人员的一项资格认证,旨在考核考生在软件设计、分析、项目管理等多个方面的综合能力。上午试题主要涵盖计算机基础知识、...
《软件设计师2005-2018历年真题详解》是一份极其珍贵的复习资料,涵盖了近十五年的考试真题与解析,对于备考软件设计师这一专业资格认证的考生来说,具有极高的参考价值。这份资料包含了两个版本,分别是Word和PDF...
中级软件设计师考试是中国计算机技术职业资格认证的一部分,旨在评估和认证候选人在软件设计与开发方面的专业知识和技能。这个压缩包文件“2009年5月至2016年5月(中级软件设计师真题及答案解析)”显然是为准备2016...
总的来说,这份资源对于希望在软件设计领域深造的人来说,是宝贵的自我提升工具,通过反复练习历年真题,不仅可以巩固理论知识,更能培养出解决实际问题的能力,为成为一名合格的软件设计师奠定坚实基础。
- **普通设计师**通常掌握了一定的设计软件和技术,但在高级工具的应用和新技术的学习上可能不如优秀设计师深入。 - **优秀设计师**具备扎实的技术基础,并且持续学习最新的设计趋势和技术,能够灵活运用各种工具来...
《软件设计师2017-2018年度考试复习指南》 软件设计师,作为信息技术领域中的重要角色,其专业素养直接影响着软件产品的质量和用户体验。本资料集合了2017年和2018年两年的软件设计师下午题试卷及对应答案,旨在为...