软件工程为什么要设计
⑴ 总体设计对软件工程的作用
答:
设计过程
设计供选择的方案:数据流图是总体设计极好的出发点
选取合理的方案
准备的4份资料:
系统流程图
组成系统的物理元素清单
成本/效益分析
实现这个系统的进度计划
推荐最佳方案
功能分解:首先进行结构设计,然后进行过程设计
设计软件结构:一个模块完成一个适当的子功能,组织成良好的层次系统
设计数据库
制定测试计划
书写文档:系统说明-用户手册-测试计划-详细的实现计划-数据库的设计结果
审查和复审
宏观到微观,逐步求精的原则,定性定量相结合、分解与协调相结合和模型化方法
设计原理
模块化
每个模块完成一个特定子功能,所有模块按某种方法组成一个整体,完成整个系统所要求的功能。
模块:构成程序的基本构件
模块化:复杂软件划分为功能相独立且易于处理的模块的过程
最小成本区域
优点:使软件结构更清晰-更容易测试和调试-提高软件的可靠性-提高可修改性-有助于软件工程的组织管理
抽象:认识复杂事务和现象时,提取事物本质暂时不考虑细节。
高层次抽象-低层次抽象
逐步求精:与抽象互补,从高层次开始仔细推敲,进行细化给出下层细节
信息隐藏和局部化
信息化隐藏:使得一个模块内包含的信息对于不需要这些信息的不能访问
局部化:把一些关系密切的软件元素物理地放得彼此靠近
模块独立:
耦合:对一个软件结构内不同模块之间互联程度的度量
无直接耦合、数据耦合(系统中必须存在这种耦合、低等程度)、控制耦合(中等程度)、特征/标记耦合、公共环境耦合、内容耦合(最不好的耦合形式)
原则:尽量使用数据耦合,少用控制耦合和特征耦合、限制公共环境耦合,不用内容耦合
⑵ 软件工程为什么要进行代码设计
软件工程的一部分,当然要进行了。。
软件这些东西都是外延很大的。。需要学习的范围很广。。。
⑶ 软件工程师要学什么要不要设计动画,游戏,编程是什么有哪些类别的软件要设计
楼主你好,软件工程师是一个大类。动画,游戏,编程都是包括在其中的。具体的要根据你选择的方向来决定。举个例子帮你说明一下。
对于一个游戏程序员来说,通常需要经过以下几个学习阶段:
1、基础语言阶段:常用的编程语言有,C,C++,JAVA,其中最广泛被使用的就是C++,C++语言是一切游戏程序的基础,换而言之,一个优秀的游戏程序员,必须非常熟练掌握并应用C++.
2、数据结构:在掌握C++之后,需要进行数据结构的学习,形象的讲,就是那么一大堆数据,如何去有序的排列其结构。通过对数据结构的学习,便能够开始阅读他人编写的代码,尝试 开发简单的程序,可以实现一些编程者自己的构想,是每个程序员必须掌握的技巧。
3、“库”的学习及应用:最常用的有MFC(微软公司类库),GUI(图形界面库),当然“库”的知识及功能非常庞大,通常来说,熟练掌握一部分经常涉及的知识即可。
通过以上三点的学习,c++基础语言,数据结构,库的使用。你基本已经可以自己独立制作一个小游戏了,比如贪吃蛇,俄罗斯方块等等。
然后,将进入的高阶阶段,也将是直接涉及到游戏程序相关知识。
4、游戏程序对于硬件的操纵。比如,内存,CPU,显卡,这将会涉及到一些数学知识,比如立体几何,线性代数等,但是也不用惊慌,并不是非常困难。通过对硬件的熟练操纵,才能将游戏的画面,流畅度等等充分给予表达。
5、对于相关知识的学习。包括物理,脚本,美术等等。不需要深入了解,但相关知识的丰富对于你将来做游戏程序会有直接帮助。
6、对于游戏引擎的熟悉及使用。游戏引擎一般包括渲染器,内存管理器,组织管理几部分。对游戏的画面做出渲染,高效使用内存以及如何控制动画播放等功能。熟悉引擎的使用,也将对于游戏程序员有直观的帮助。
希望我的回答对你有帮助,有什么问题可以留言给我。
⑷ 软件工程 为什么采用模块化设计和编程
模块化设计和编程有以下几点好处:
1、便于设计与编程
2、便于分工合作
对于较大的项目这种方式的好处最为明显。
3、便于调试
可先对每个小模块进行单独调试,发现问题快,解决也快。在每个小模块都检测通过后,整体调试出现问题只要检查各模块相关联的部分(如参数地址、参数类型)是否统一即可。
4、便于移植
其他项目中如果有相同的应用,可以直接复制。如果只是近似应用,也只需做局部小改动即可。可省去大量的不必要的重复工作。
5、便于改进
⑸ 软件工程的意义和作用
提高软件开发的效率和质量。使软件开发标准化,工业化。
⑹ 软件工程总体设计阶段的主要目的是什么
1、划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等。
2、设计系统的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。
总体设计时必修遵守原理:
1、模块化:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。
2、抽象:在实践中认识到,在现实世界中一定事物、状态和过程之间从存在某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。或者说抽象就是考虑事物间被关注的特性而不考虑它们其他的细节。
(6)软件工程为什么要设计扩展阅读:
总体设计阶段的工作步骤:
1、寻找实现系统的各种不同的解决方案,参照需求分析阶段得到的数据流程图来做。
2、分析员从这些供选择的方案中选出若干个合理的方案进行分析,为每个方案都准备一份系统流程图,列出组成系统的所有物理元素,进行成本效益分析,并且制定这个方案的进度计划。
3、分析员综合分析比较这些合理的方案,从中选择一个最佳方案向用户和使用部门负责人推荐。
4、对最终确定的解决方案进行优化和改进,从而得到更合理的结构,进行必要的数据库设计,确定测试要求并且制定测试计划。
⑺ 为什么要提出软件工程
1.软件
要知道什么是软件工程,当然得先知道什么是软件.软件就是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据和相关文档的完整组合.注意:软件不仅包括程序,还包括文档.所以做软件也不仅仅是编程序,还需要写文档,后者应该提到与前者并重的地位。
2.软件危机
从50年代到60年代,人们曾经把程序设计看作是一种任人发挥创造才能的技术领域,只要程序能得到正确的结果,程序的写法可以不受任何约束.人们认为好的程序应该是运用了许多与众不同的技巧和窍门的程序.这种观点好象把编程序当成了一种艺术,因为艺术总是宣扬个性,喜欢与众不同.(实际上,编程序的确可以看做是一种艺术,不过这种艺术是在遵循一定范式和准则这个前提下的艺术,个人观点) 然而,随着软件的规模越来越大,人们在实践中发现随心所欲编写的程序给维护,修改带来了很大的麻烦.程序晦涩难懂,不同程序员,不同时期编写的模块难以接口.因此,软件开发遇到了很大的困难.往往投入很大,收获甚微.做的软件漏洞百出,或无人使用.这就是软件危机.
于是,人们在茫然中,渐渐的抛弃了原先的观点,开始探索一种新的软件开发的思想.这就导致了软件工程的产生.程序也从按个人意图创造的"艺术品"转化为一种工程化的产品。
3.软件工程的定义
软件工程的定义很多,如:“软件工程是开发,运行,维护和修复软件的系统方法”;“建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法”等等。
定义是抽象的,掌握精髓才是关键。对软件工程的最好理解就是“只可意会,不可言传”,试问各位看官,您们都学过化学,但化学的定义是什么呢?
但是,为了更快的意会,有必要在此废话几句。软件工程可以看作是一种方法,一种思想,就是指导大家如何更好地开发软件的方法和原则。软工也可看作是一种工具,就是帮助大家分析,设计软件的工具,如:流程图,数据字典,以及一些辅助软件等。软工还可以看做是一种过程,就是软件开发的过程。实际上,方法,工具,过程三者是软件工程的三要素.
我是大一软件工程专业的新生呢,上面的我从网上找来的,觉得挺好的,再者,说简略一点就是,我认为是在做软件开发的过程中加入了工程化的思想,使软件开发,管理得更好,质量更高。
⑻ 为什么用软件工程的方法和理论进行系统的设计和开发
原因如下:
软件工程一直以来都缺乏一个统一的定义,运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。
在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究。
建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。
《计算机科学技术网络全书》:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
ISO 9000对软件工程过程的定义是:软件工程过程是输入转化为输出的一组彼此相关的资源和活动。
其它定义:1.运行时,能够提供所要求功能和性能的指令或计算机程序集合。2.程序能够满意地处理信息的数据结构。3.描述程序功能需求以及程序如何操作和使用所要求的文档。以开发语言作为描述语言,可以认为:软件=程序+数据+文档。
⑼ 软件工程专业学生学网页设计有必要吗
网页设计一般在学校软件工程专业只是学习皮毛,我当时学的是学网络工程的,之后的网站开发都是自学的。在学校也只是学习了web开发,数据库,java之类的,计算机专业的学习C++,网站制作学到的还没有人家管理学院电子商务专业学的多,asp和jsp都是比较简单的语言,asp很快就可以入门,而jsp只要java学得好没问题的,我建议你在学校还是尽量多学点以后走入社会到公司里面人家真正需要的技术,java、.net、struct之类的而且一定要学精了,在学习的基础上自己做点拿得出来的东西。
还有,不要人家干吗你就干嘛,多和软件行业的在职人员聊聊,比如你的学长他们,一定要做好自己的计划,踏踏实实地学习,不要荒废了大学啊。
⑽ 解释为什么不同应用程序需要专门的软件工程技术来支持设计和开发
我不是专业的。。。。。但是学过一点编程, 但是我的解释就是,最开始开发的时候那个工程技术软件比较合适,后来出其他软件改起来比较麻烦,时段不同,软件就不同,再就是跟内部结构有关系。