软件设计是一个过程,通过这个过程,一个代理创建一个软件工件的规范,目的是实现目标,使用一组原始组件并受到约束。[1]软件设计可以指“所有涉及概念化、框架化、实现、调试的活动,最终修改复杂系统“或”遵循需求规范和编程之前的活动,如。。。一个程式化的软件工程过程
软件设计通常涉及解决问题和规划软件解决方案。这包括底层组件和算法设计以及高层架构设计。
概述
软件设计是为一组或多组问题设想和定义软件解决方案的过程。软件设计的主要组成部分之一是软件需求分析(SRA)。SRA是软件开发过程的一部分,它列出了软件工程中使用的规范。如果软件是“半自动化”或以用户为中心的,软件设计可能会涉及到用户体验设计,从而产生一个故事板来帮助确定这些规范。如果软件是完全自动化的(意味着没有用户或用户界面),那么软件设计可以像描述计划的事件序列的流程图或文本一样简单。还有一些半标准的方法,如统一建模语言和基本建模概念。在这两种情况下,计划的某些文档通常是设计的产物。此外,软件设计可以独立于平台或特定于平台,这取决于用于设计的技术的可用性。
软件分析和设计的主要区别在于,软件分析的输出包含要解决的较小问题。此外,在不同的团队成员或小组中,分析的设计不应该有很大的不同。相比之下,设计的重点是能力,因此同一问题的多个设计可以也将存在。根据环境的不同,设计通常会有所不同,无论是从可靠的框架创建的,还是使用合适的设计模式实现的。设计实例包括操作系统、网页、移动设备甚至新的云计算模式。
软件设计既是一个过程又是一个模型。设计过程是一系列的步骤,使设计者能够描述软件的各个方面。创造性的技能,过去的经验,对“好”软件的理解,以及对质量的全面承诺,都是成功设计的关键因素。然而,需要注意的是,设计过程并不总是一个简单的过程;设计模型可以与建筑师的房屋规划相比较。它首先表现出要建造的东西的整体性(例如,房子的三维效果图);慢慢地,这个东西被提炼出来,为建造每个细节(例如,管道铺设)提供指导。同样,为软件创建的设计模型提供了计算机软件的各种不同视图。基本设计原则使软件工程师能够在设计过程中导航。