<<软件设计学习笔记>>
阅读一篇关于软件设计的文章,文章对软件设计讲述的非常全面,但对于细节都没有展开讨论,不过其中推荐了一些参考资料,看了这个文章后就能对软件设计有一个比较全面 的了解,如果还需要在一些细节上深入就要找相关资料了。
************ 文章的章节结构 ************ ** 软件设计的基本概念 *** 一般的设计概念 *** 软件设计内容 *** 软件设计过程 *** 基本的软件设计概念 *** 软件设计的关键点 ** 软件体系结构 *** 体系结构和视点 *** 结构化模式和模式(宏观结构) *** 设计模式(微观结构) ** 软件设计的质量分析和评估 *** 质量属性 *** 质量分析和评估工具 *** 坐标 ** 软件设计的标注 *** 结构化描述(静态视角) *** 动作化描述(动态视角) ** 软件设计的策略和方法 *** 一般方法 *** 面向功能的方法 *** 面向对象的方法 *** 其他方法 ** 软件设计工具 *** 数学工具 *** CASE工具 *** 坐标工具?? ** 与软件设计相关的标准
**** 要点 **** *** OOD方法是目前的热点,OOD和UML的联系,UML中的对象图、序列图、状态图、协作图等等图形
*** 用户界面设计、实时系统设计、数据库设计等等并非所有这些都属于软件设计
*** 软件设计的基本概念:解决问题、目标、约束、表示、解决方法 *** 如何保证模块性,便于可维护性和易于更改?
*** 并发的考虑:如何将系统分解为过程、进程和线程,并处理相应的原子级、同步和调度问题??
*** 控制要素和处理事件:如何组织控制流程,如何解决互动和暂时的事件通过不同的机制,例如,明确的调用或调用栈等等??
*** 分布问题:软件如何分布在硬件中?中间件有什么样的作用?
*** 处理错误和意外问题: 如何组织和容忍错误并处理意外情况?
*** 互动的系统和对话框的独立:如何从用户界面同业务逻辑区分开来??用户界面设计不在讨论的范围。
*** 平台独立性: 如何确保软件的平台独立性
********** 软件结构分类 **********
*** 一般的结构:例如层、管道等等、 *** 分布系统(客户-服务、三层结构、等等) *** 互动系统(MVC,抽象控制) *** 适应性系统(微内核) *** 其他形式(批处理,解释器,过程控制,基于规则)
*********** 设计模式分类 *********** *** 创建性模式:builder,factory,prototype,singleton,等 *** 结构化模式: adapter,bridge,composite,decorator,fa?ade,flyweight,proxy等 *** 动作化模式:command, interpreter,iterator,mediator,memento,observer,state,strategy,template,visitor等
********************* 软件设计的质量分析和评估 ********************* 质量属性:不同的属性对于获取一个良好质量的设计是相当重要的,可维护性、可测试性等等 质量分析和评估工具:软件设计复查、静态分析、仿真和构造原型 标准:继承树的深度、每个类的重方法、结构复杂度
************ 软件设计的说明 ************ 结构化描述(静态观点) :图形,描述结构化方面,类图,子系统和包,过程(动态对象)或者物理(实施图) 动作描述(动态观点):活动图、数据流图、序列图、状态转换图和程序设计语言
***************** 软件设计的策略和方法 ***************** 一般方法 面向功能的设计方法:实体-关系图、结构图 面向对象的设计方法 数据结构中心设计方法 其他方法
****************** 与软件设计相关的标准 ****************** UML,Ada,PDL,CORBA
********* 相关知识 ********* 计算机科学 *** 基础:复杂度分析、离散数学、自动化、形式化规约 *** 算法和数据结构: 基本数据结构、数据数据类型、排序和查找 *** 体系结构: 内存系统管理和结构、接口和通讯 *** 信息管理: 数据库建模、事务处理、数据压缩 *** 接口计算: 人机互动、多媒体 *** 操作系统: 任务、过程和线程、过程协作和同步、文件系统、网络基础、安全、保护、分布式系统。 *** 编程基础和技巧:代码生成、问题解决方法 *** 网络中心计算: 分布式对象、企业级计算、网络级安全
数学 *** 离散数学 *** 概率 *** 数学逻辑
项目管理 *** 项目集成管理 *** 项目范围管理 *** 项目时间管理 *** 项目成本管理 *** 项目质量管理 *** 项目风险管理
计算机工程 *** 系统设计
系统工程 *** 过程:动作分析、构造原型、组件规格
******** 推荐资料 ******** *** 软件实际结构 软件结构、质量属性、结构风格、结构描述语言、产品线开发、案例分析 *** 面向模式的软件结构 结构模式、设计模式、模式间的联系、软件结构、方法、框架、基本的软件设计概念:抽象、封装、信息、内聚 *** 统一建模语言用户指南 *** 软件工程 软件工程论文集 *** 对象、组件和框架关于UML 组件设计 *** 软件设计引路 老书 *** 可重用面向对象软件的要素 *** 对象分析和设计 *** 软件工程的集成方法 *** 统一软件开发过程 *** 面向对象软件构造 *** 计算机辅助软件工程 
|