软件设计是把许多事物和问题抽象起来,
设计软件使用 |
设计原则编辑本段回目录
一、设计对于分析模型应该是可跟踪的:软件的模块可能被映射到多个需求上。
leap设计软件 |
二、设计结构应该尽可能的模拟实际问题。
三、设计应该表现出一致性。
四、不要把设计当成编写代码。
五、在创建设计时就应该能够评估质量。
六、评审设计以减少语义性的错误。
设计要素编辑本段回目录
软件设计包括软件的结构设计,数据设计,接口设计和过程设计。
钢结构设计软件 |
结构设计是指:定义软件系统各主要部件之间的关系。
数据设计是指:将模型转换成数据结构的定义。
接口设计是指:软件内部,软件和操作系统间以及软件和人之间如何通信。
过程设计是指:系统结构部件转换成软件的过程描述。
应用领域编辑本段回目录
在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件嵌入式系统,人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,
kd橱柜设计软件 |
软件设计存在于各种应用中,存在于软件开发的各个方面。而程序设计通常包含了程序设计和编码的反复迭代的过程,它是软件开发的一个阶段。
软件工程力图对软件项目的各个方面作出指导,从软件的可行性分析直到软件完成以后的维护工作。软件工程认为软件开发与各种市场活动密切相关。比如软件的销售,用户培训,与之相关的软件和硬件安装等。软件工程的方法学认为一个独立的程序员不应当脱离团队而进行开发,同时程序的编写不能够脱离软件的需求,设计,以及客户的利益。
软件工程的发展是计算机程序设计工业化的体现。
存在危机编辑本段回目录
软件设计的兴起要根源于20世纪60,70和80年代的软件危机。在那个时代,很多的软件最后都得到了一个悲惨的结局。很多的软件项目开发时间大大超出了规划的时间表。一些项目导致了财产的流失,甚至某些软件导致了人员伤亡。同时软件开发人员也发现软件开发的难度越来越大。
3d整形设计软件 |
OS360操作系统被认为是一个典型的案例。到现在为止,它仍然被使用在IBM360系列主机中。这个经历了数十年,极度复杂的软件项目甚至产生了一套不包括在原始设计方案之中的工作系统。OS360是第一个超大型的软件项目,它使用了1000人左右的程序员。FredBrooks在随后他的大作《人月神话》(TheMythicalMan-Month)中曾经承认,在他管理这个项目的时候,他犯了一个价值数百万美元的错误。
财产的损失:软件的错误可能导致巨大的财产损失。欧洲阿里亚娜火箭的爆炸就是一个最为惨痛的教训。
人员伤亡:由于计算机软件被广泛应用于包括医院等与生命息息相关的行业。这也使得软件的错误导致人员伤亡成为了可能。
顶级世界级建筑设计软件 |
在软件工程界被大量引用的案例是Therac-25的意外.在1985年六月到1987年一月之间,六个已知的医疗事故来自于Therac-25错误地超过剂量,导致患者死亡或严重辐射灼伤。
在工业上,某些嵌入式系统导致机器的不正常运转,从而将一些人推入了险境。
开发过程编辑本段回目录
软件开发过程是随着开发技术的演化而随之改进的。从早期的瀑布式(Waterfall)的开发模型到后来出现的螺旋式的迭代(Spiral)开发,以致最近开始兴起的敏捷开发方法(Agile),他们展示出了在不同的时代软件产业对于开发过程的不同的认识,以及对于不同类型项目的理解方法。
注意区分软件开发过程和软件过程改进之间的重要区别。诸如像ISO15504,ISO9000,CMM,CMMI这样的名词阐述的是一些软件过程改进框架,他们提供了一系列的标准和策略来指导软件组织如何提升软件开发过程的质量、软件组织的能力,而不是给出具体的开发过程的定义。
发展方向编辑本段回目录
“敏捷开发”(AgileDevelopment)是软件工程的一个重要的发展。它强调软件开发应当是能够对未来可能出现的变化和不确定性作出全面反应的。
发型设计软件 |
敏捷开发被认为是一种“轻量级”的方法。在轻量级方法中最负盛名的应该是“极限编程”(ExtremeProgramming),简称为XP)。而与轻量级方法相对应的是“重量级方法”的存在。重量级方法强调以开发过程为中心,而不是以人为中心。重量级方法的例子比如CMM、PSP、TSP。
面向侧面的程序设计(AspectOrientedProgramming),简称(AOP)被认为是近年来软件工程的另外一个重要发展。这里的方面指的是完成一个功能的对象和函数的集合。在这一方面相关的内容有泛型编程(GenericProgramming)和模板。