课程简介:从哲学角度来思考软件设计,是一种新的尝试,试图通过找到软件设计背后的规律,使得难于驾驭的软件设计能够有一套通用的方法学。哲学一直是指导其他领域的方法论,我们的课程将带领您走入软件设计的哲学殿堂,启迪您的设计思维 |
课程大纲:
课程主题 | 课程内容 |
从哲学角度思考设计 | (1)案例:毛泽东提出原子物理中的“夸克” (2)设计的本质-高屋建瓴的设计思维 (3)实事求是-洞悉软件设计背后的规律 (4)把握设计策略与尺度 (5)软件设计的哲学方法:智慧的点金术 |
分析与综合方法 | (1)目标:找出软件设计的范围,软件需要做什么? (2)分析功能的内部复杂性 --操作性、关联性与时间性 (3)分析功能的外部边界 (4)分析功能的技术可行性 (5)分析功能的人力成本 (6)分析功能的可复用资产经验 (7)功能系统综合 --相似性、重叠性与变化性 --矛盾性、特殊性与一般性 (8)成果:软件设计范围中注入技术思维 |
系统结构方法 | (1)目标:切割软件的零部件 (2)案例1:波音747的零部件规模 (3)软件纵向切割与横向切割 (4)软件设计中正交切割与立体切割 (5)软件零部件的粒度 (6)案例2:对比研究Linux不同版本UML反向工程 (7)软件结构的进化设计 (8)软件最初原始设计-注入编程基因 (9)成果:归纳总结软件结构的9种切割方法 |
预测、抽象与概括方法 | (1)目标:解决软件设计的变化性 (2)相似的事物只做一次 (3)剥离“变化的部分”与“不变的部分” (4)将“变化”包在里面,外部“接口”不变 (5)启示:门捷列夫的元素周期律 (6)功能变化是技术元素的排列组合 (7)案例1:开源系统ERP5中“5”的含义 (8)案例2:Salesforce.com的force.com API的思维模式 (9)成果:归纳总结弹性设计的方法论 |
归纳与演绎方法 | (1)目标:软件设计中可维护性与质量设计 (2)案例1:SAP运行维护的过程 (3)案例2:Oracle运行维护的过程 (4)归纳:软件设计中的运维点设计 (5)案例3:工业制造中的六西格玛与QFD (6)演绎:软件设计中如何应用QFD完成质量设计 (7)实践:请您完成软件可靠性设计 (8)研究:嵌入式软件与企业信息化软件设计的差异性 (9)成果:归纳总结软件质量设计的方法论 |
矛盾与决策方法 | (1)目标:从多个设计方案中找出最优方案 (2)案例1:乌龙指事件背后的秘密 (3)软件质量属性之间的矛盾性分析 (4)如何在矛盾性中找到“折中点” (5)实践:给出数据库弹性设计的多种方案 (6)软件设计方案的评价准则-发现最优设计 (7)案例2:淘宝数据库架构设计中“云梯” (8)如何突破设计的“天花板”? (9)成果:归纳总结设计决策的方法论 |
透视整个课程 | (1)思考:两千多年前东方的孔孟思维与西方的亚里士多德思维 (2)研究:东西方的软件设计的差异性 (3)思考:天主教与基督教对西方科学的影响的根源在哪里? (4)研究:软件设计的哲学路线图 |