软件设计
软件设计的定义 重点
设计的定义为:对某事形成计划或者模式,运用思维整理或考量某事,以便于后面的执行。软件设计是关于软件对象的设计,是一种设计活动,自然具有设计的普遍特性。软件设计既指软件对象实现的设计规格说明,也指产生这个规格说明的过程。
软件设计的特点
软件设计的特点在于以下方面:
兼具工程设计和艺术设计。软件设计既要从工程师的视角出发,利用科学的、系统化的方法来构建软件的内部结构;又要从艺术家的视角出发,强调设计所带来的愉悦和所要传达的意境。
具有理性主义和经验主义的双重设计观点。理性主义强调设计应当以科学化的知识作为基础;经验主义则认为要给软件设计过程框架添加一些灵活性来应对设计中人的因素。
具有演化性。真实的软件设计不可能一次成型,而是不断演化和迭代的。
具有决策性。软件设计是问题求解和决策的过程,而决策是需要跳跃性和创造性的设计师思维的。此外,软件设计的问题求解与决策是困难的,一方面因为大部分软件设计面对的问题都是不规则的,包含许多不充分的前提和不确定的场景;另一方面就是因为设计师需要具有极强的洞察力——许多决策往往在很长时间之后才能被验证,且前面的决策可能会影响后面的决策。
具有多样性。在相同的约束下,可能有多种多样的软件设计方案。
软件设计的核心思想 重点
软件设计的核心思想是抽象和分解。下面是分解和抽象的示意图。
软件设计的分层 重点
软件设计按照抽象程度的不同,可以分为高层设计、中层设计和低层设计。各层次的主要思想如下:
高层设计:基于反映软件高层抽象的构件层次,描述系统的的高层结构、关注点和设计决策;
中层设计:更加关注组成构件的模块的划分、导人/ 导出、过程之间调用关系或者类之间的协作;
低层设计:深入模块和类的内部,关注具体的数据结构、算法、类型、语向和控制结构等。
下面是软件设计各层次的示意图
在设计过程中,同样也是按照自顶向下的方式来进行。