什么是软件设计?
的有关信息介绍如下:什么是软件设计 ?就笔者的观点来看:软件设计是采用编程或脚本语言优雅地表达并解决现实需求的一门科学和艺术。优雅地表达想传递的意思是,所设计出来的软件应当能容易被人理解、方便扩展和维护。从这一定义可以看出软件设计首先是一门科学,是一门解决用户需求的软件科学。既然是科学,不可避免的要掌握相关的科学知识,比如数据结构、计算机组成原理、编程语言等等,而这些内容也正是大学计算机相关专业所传授的知识。科学知识或许更加容易被量化,拿数据结构为例,一种算法比另一种算法是否更优可以从算法的时间冗余度和空间冗余度进行衡量。除了科学的部分,软件设计还涉及艺术的范畴。既然是一门艺术,那就一定存在欣赏的问题,也就意味并不是每个从业人员都能欣赏这种艺术,而只有达到了一定的层次且形成了自己的思想后才能欣赏它。由于设计中艺术的非直观性,造成其在现实中不容易被量化,因此难以形成相应的评估准则,进而造成在软件行业容易被忽视。试想想,大学课程有多少内容是在教我们将软件设计当作艺术进行欣赏并追求?好的软件设计能相对方便(甚至是很方便)地实现新的需求问题。需求分析是告诉我们做什么,其显然非常的重要,而设计更多地涉及怎么做更好。既然对于设计的好坏不能完全通过量化的方式进行衡量,那如何去评价一个软件设计的好坏呢?或者在进行软件设计时,如何去思考以做出一个好的设计呢?这可以通过对一些软件设计原则的把握来做到。设计原则可能有很多,但并不是每一个项目都要同时满足所有的设计原则,另外,不同的项目其特性有可能使得有些设计原则并不适用。另外,设计原则也不是一成不变的,可能因项目的特点又可以抽取出另外的设计原则。笔者将在后续的文章中阐述日常工作中所遵守的软件设计原则。软件设计是一个不断提炼和抽象的过程。说它是一个提炼的过程,是因为在设计之初会想到很多需要考虑的因素,这些因素在设计工作没有深入之前,并不能发现它们有些是重叠的,或者有些根本就不需要考虑。随着设计的深入,会从众多的因素中得到其中的关键因素并将这些因素付之于实践。设计也是一个抽象过程,需要从众多的表象中找到它们的共性,通过表达共性从而最终描述每个个性,而不应当局限于直接去描述每一个个性。设计的深入过程并不只是一味地思考,除非设计者以前有过类似的设计经验,否则设计过程通常需要进行一定的代码编写工作,以辅助思考,这一点对于开发软件架构师(系统架构师不包括在内)也应当是一样的。软件设计是一个创造模型的过程。通过对需求的理解和抽象,好的设计将最终构造出一个模型,而且这个模型与现实世界的某样东西可能是相类似的。这个模型除了实现了用户的需求,还向他人展示了她自己是什么模样以及可能会如何行事。打个比方,如果有人发明了一种新的交通工具,他如何最为有效地表达这一新的交通工具到底是什么样的呢?是直接拿一张图纸给他人并说你看看图纸就知道了好呢?还是打一个大家都耳熟能详的比方好呢?显然,后者更好。如果他说这个新的交通工具与现在的轿车很像,只不过,如此一来,听众马上就会想,这个新的交通工具有四个轮子、也有方向盘等等。显然,后者能很快地让听众利用其生活经验快速的接收信息,而好的软件设计也应当做到这一点。软件设计时的模型创造过程,其实就是赋予软件代码生命的过程,由此看来一个好的设计应当是 有生命的。软件设计是一个做选择的过程。人有时没有选择反而轻松。一个刚毕业的大学生如果只拿到了一个offer,他可能没有选择单位的烦恼,不论单位好坏都去报道就是了。但是,如果他拿了两个offer,选择的烦恼也就有了 是去A单位好呢?还是B单位好?不幸的是,软件的设计过程往往存在......余下全文>>问题二:计算机软件设计这个属于什么专业? 计算机软件设计属于 IT(Internet Technology)专业。户件设计是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案。软件设计是把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。将问题或事物分解并模块化使得解决问题变得容易,分解的越细模块数量也就越多,它的副作用就是使得设计者考虑更多的模块之间耦合度的情况。问题三:软件设计工程师主要是做什么的 软件设计师能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档;户织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程师的实际工作能力和业务水平。