• 软件工程与计算总结(八)软件设计基础


    一.设计思想的发展

    • 1958:软件这个名词第一次在公开刊物上使用~
    • 60年代中后期and70年代前中期:结构化编程、逐步求精、自顶向下理念是程序设计主要方法
    • 70年代中后期and90年代:结构化设计方法、抽象数据类型、信息隐藏、封装、继承、多态等思想~
    • 20世纪90年代之后:大规模软件设计年代、面向对象设计方法形成和发展~

    二.设计的核心思想

    软件开发的最大挑战:软件的复杂性,控制系统复杂度是软件设计方法的核心问题~

    • 分解:是横向上将系统分割为几个相对简单的子系统
    • 抽象:纵向上聚焦子系统的接口
    • 接口:各子系统之间交流的契约

     

    三.理解软件设计

    1.设计与软件设计

    设计的定义是一个对象的规格说明,亦或理解为一个环境中创建对象的规格说明。软件设计是关于对象的设计,是一种设计活动,自然具有设计的普遍特性,软件设计既指软件对象实现的规格说明,也指产生这个规格说明的过程~

    2.工程设计与艺术设计

    对于软件设计来说,工程设计和艺术设计都很重要:一方面软件设计要从工程师的视角出发,使用系统化方法构建软件的内部结构,进行这种的设计决策,生产队用户有用的产品;另一方面,软件设计也要从艺术人员的视角出发,注重效率与优雅,强调设计所带来的愉悦和所要传达的意境。

    3.理性主义和经验主义

    理性主义更看重设计的工程性,希望一科学化知识为基础,利用模型语言、建模方法、工具支持,将软件设计过程组织成系统、规律的模型建立过程;经验主义者则在重视工程性的同时,也强调艺术性,要求给软件设计过程框架添加一些灵活性以应对设计中人的因素~

    4.软件设计的演化性

    真实的设计过程是演化和迭代的,而不是一次完成的,需求分配质量反思之间不断循环~

    5.软件设计的决策性

    软件设计是问题求解和决策的过程,问题空间是用户需求和项目约束,解空间是软件设计方案,从问题空间到解空间的转换是一个跳跃性的过程,需要发挥设计师的创造性,设计师跳跃性地建立解决方案的过程被称为决策~

    6.软件设计的约束满足和多样性

    设计问题往往具有多种解决方案,即能够实现某一功效的解决方案往往有很多种,这成为软件设计的多样性,而约束可以帮助设计师暂时验证解空间中多样设计方案的合理性

    质量是主要的设计约束~

    四.软件设计的分层

    根据抽象程度的不同,软件设计可以分为高层设计、中层设计和低层设计~

    • 高层设计:基于反映软件高层抽象的软件层次,描述关注点和设计决策
    • 中层设计:关注与组成构建的模块的划分、导入
    • 低层设计:深入模块和类的内部,关注具体的数据结构、算法等

    五.软件设计的主要活动

    在设计过程中,返工的现象很常见

    六.软件设计的方法和模型

    1.软件设计的方法

    • 结构化设计:自下而上,逐步求精,按照功能对系统进行分解
    • 面向对象设计:源于数据抽象和制作驱动
    • 数据结构为中心设计:开始与系统操纵的数据结构而不是它所表现的功能
    • 基于构件设计:基于构件的提供、开发和集成,以提高系统的可复用性
    • 形式化方法设计:严格的数学模型来验证系统的相关属性

    2.软件设计的模型

    • 静态模型:通过快照的方式对系统进行描述,描述状态而不是行为
    • 动态模型:通常描述的是系统行为和状态转移

    七.软件设计描述

    分享一些样例,大家自行研究~

    1.设计视图和设计图

     

    2.设计视角和设计关注

    3.需求和涉众

    4.设计理由

    5.设计描述的模板

    6.软件设计文档书写要点

    • 充分利用标准的文档模板
    • 可以利用体系结构风格示意图
    • 利用完整的接口规格说明定义模块与模块之间的交互
    • 要从多视角出发,让读者感受一个立体的软件系统
    • 在设计文档中应体现对于变更的灵活性
  • 相关阅读:
    CSS特效013:背景色彩不停流动效果
    Android 10.0 Launcher3定制化之动态日历图标功能实现
    FPGA实现SPI协议
    Arthas简单使用
    [Vue3] pinia状态管理
    Math 对象+JS数组求和的常用方法+ indexOf+js计算数组中每个元素出现的次数+while循环语句死循环
    【MySQL系列】视图特性
    读书充电,温暖你的冬日,本期为大家送出几本架构师成长和软件架构技术相关的好书,助你度过这个不太景气的寒冬!
    【Java】封装
    Google IO 2023推出Android Studio官方AI工具Studio Bot
  • 原文地址:https://blog.csdn.net/jsl123x/article/details/133760301