zoukankan      html  css  js  c++  java
  • 5.15 python 面向对象的软件开发&领域模型

    1、面向对象的软件开发

    参考地址::http://www.cnblogs.com/linhaifeng/articles/6182264.html#_label14

    面向对象的软件工程包括下面几个部:
    
    1 面向对象分析(object oriented analysis ,OOA)
    2 面向对象设计(object oriented design,OOD)
    3 面向对象编程(object oriented programming,OOP)
    4 面向对象测试(object oriented test,OOT)
    5 面向对象维护(object oriendted soft maintenance,OOSM)
    面向对象的软件开发
    很多人在学完了python的class机制之后,遇到一个生产中的问题,还是会懵逼,这其实太正常了,因为任何程序的开发都是先设计后编程,python的class机制只不过是一种编程方式,如果你硬要拿着class去和你的问题死磕,变得更加懵逼都是分分钟的事,在以前,软件的开发相对简单,从任务的分析到编写程序,再到程序的调试,可以由一个人或一个小组去完成。但是随着软件规模的迅速增大,软件任意面临的问题十分复杂,需要考虑的因素太多,在一个软件中所产生的错误和隐藏的错误、未知的错误可能达到惊人的程度,这也不是在设计阶段就完全解决的。
    
    所以软件的开发其实一整套规范,我们所学的只是其中的一小部分,一个完整的开发过程,需要明确每个阶段的任务,在保证一个阶段正确的前提下再进行下一个阶段的工作,称之为软件工程
    
    面向对象的软件工程包括下面几个部:
    
    1.面向对象分析(object oriented analysis ,OOA)
    
    软件工程中的系统分析阶段,要求分析员和用户结合在一起,对用户的需求做出精确的分析和明确的表述,从大的方面解析软件系统应该做什么,而不是怎么去做。面向对象的分析要按照面向对象的概念和方法,在对任务的分析中,从客观存在的事物和事物之间的关系,归纳出有关的对象(对象的‘特征’和‘技能’)以及对象之间的联系,并将具有相同属性和行为的对象用一个类class来标识。
    
    建立一个能反映这是工作情况的需求模型,此时的模型是粗略的。
    
    2 面向对象设计(object oriented design,OOD)
    
    根据面向对象分析阶段形成的需求模型,对每一部分分别进行具体的设计。
    
    首先是类的设计,类的设计可能包含多个层次(利用继承与派生机制)。然后以这些类为基础提出程序设计的思路和方法,包括对算法的设计。
    
    在设计阶段并不牵涉任何一门具体的计算机语言,而是用一种更通用的描述工具(如伪代码或流程图)来描述
    
    3 面向对象编程(object oriented programming,OOP)
    
    根据面向对象设计的结果,选择一种计算机语言把它写成程序,可以是python
    
    4 面向对象测试(object oriented test,OOT)
    
    在写好程序后交给用户使用前,必须对程序进行严格的测试,测试的目的是发现程序中的错误并修正它。
    
    面向对的测试是用面向对象的方法进行测试,以类作为测试的基本单元。
    
    5 面向对象维护(object oriendted soft maintenance,OOSM)
    
    正如对任何产品都需要进行售后服务和维护一样,软件在使用时也会出现一些问题,或者软件商想改进软件的性能,这就需要修改程序。
    
    由于使用了面向对象的方法开发程序,使用程序的维护比较容易。
    
    因为对象的封装性,修改一个对象对其他的对象影响很小,利用面向对象的方法维护程序,大大提高了软件维护的效率,可扩展性高。
    
    在面向对象方法中,最早发展的肯定是面向对象编程(OOP),那时OOA和OOD都还没有发展起来,因此程序设计者为了写出面向对象的程序,
    还必须深入到分析和设计领域,尤其是设计领域,那时的OOP实际上包含了现在的OOD和OOP两个阶段,这对程序设计者要求比较高,许多人感到很难掌握。 现在设计一个大的软件,是严格按照面向对象软件工程的5个阶段进行的,这个5个阶段的工作不是由一个人从头到尾完成的,而是由不同的人分别完成,
    这样OOP阶段的任务就比较简单了。程序编写者只需要根据OOd提出的思路,用面向对象语言编写出程序既可。

    2、领域建模

    好了,你现在会了面向对象的各种语法了, 那请看下本章最后的作业需求,我相信你可能是蒙蔽的, 很多同学都是学会了面向对象的语法,却依然写不出面向对象的程序,原因是什么呢?原因就是因为你还没掌握一门面向对象设计利器, 你说我读书少别骗我, 什么利器?
    
    答案就是:领域建模。 从领域模型开始,我们就开始了面向对象的分析和设计过程,可以说,领域模型是完成从需求分析到面向 对象设计的一座桥梁。
    
    领域模型,顾名思义,就是需求所涉及的领域的一个建模,更通俗的讲法是业务模型。 参考百度百科(http://baike.baidu.cn/view/757895.htm),领域模型定义如下:
    
    从这个定义我们可以看出,领域模型有两个主要的作用:
    
    发掘重要的业务领域概念
    建立业务领域概念之间的关系
    领域建模三字经
    领域模型如此重要,很多同学可能会认为领域建模很复杂,需要很高的技巧。然而事实上领域建模非常简 单,简单得有点难以让人相信,领域建模的方法概括一下就是“找名词”! 
    许多同学看到这个方法后估计都会笑出来:太假了吧,这么简单,找个初中生都会啊,那我们公司那些分 析师和设计师还有什么用哦? 分析师和设计师当然有用,后面我们会看到,即使是简单的找名词这样的操作,也涉及到分析和提炼,而 不是简单的摘取出来就可,这种情况下分析师和设计师的经验和技能就能够派上用场了。
    但领域模型分析 也确实相对简单,即使没有丰富的经验和高超的技巧,至少也能完成一个能用的领域模型。 虽然我们说“找名词”很简单,但一个关键的问题还没有说明:从哪里找? 如果你还记得领域模型是“需求到面向对象的桥梁”,那么你肯定一下子就能想到:从需求模型中找,具 体来说就是从用例中找。 归纳一下域建模的方法就是“从用例中找名词”。 当然,找到名词后,为了能够更加符合面向对象的要求和特点,我们还需要对这些名词进一步完善,这就 是接下来的步骤:加属性,连关系! 最后我们总结出领域建模的三字经方法:找名词、加属性、连关系。 以本章作业为例 找名词 who : 学员、讲师、管理员 用例:
    1.管理员创建了 北京 和 上海 两个校区 管理员 创建了 Linux Python Go 3个课程 管理员 创建了 北京校区的Python 16期, Go开发第一期,和上海校区的Linux 36期班级 管理员 创建了 北京校区的学员小晴 ,并将其 分配 在了 班级 python 16期 管理员 创建了讲师Alex , 并将其分配 给了 班级 python 16期 和全栈脱产5期 讲师 Alex 创建 了一条 python 16期的上课纪录Day6 讲师 Alex 为Day6这节课 所有的学员 批了作业,小晴得了A, 李磊得了C-, 严帅得了B 学员小晴 在 python 16 的 day6里 提交了作业 学员李磊 查看了自己所报的所有课程 学员 李磊 在 查看了 自己在 py16期 的成绩列表 ,然后自杀了 学员小晴 跟 讲师 Alex 表白了 名词列表: 管理员、校区、课程、班级、上课纪录、作业、成绩、讲师、学员 加属性

  • 相关阅读:
    后端架构师技术图谱
    互联网经典技术架构
    软件开发知识体系(二)
    软件开发知识体系(一)
    HSF源码剖析
    分库分表的几种常见形式以及可能遇到的难题
    iOS 关于MVC和MVVM设计模式的那些事
    MVC与MVP简单对比
    MVC、MVP、MVVM 模式
    Learning Android ActionBar
  • 原文地址:https://www.cnblogs.com/foremostxl/p/9609800.html
Copyright © 2011-2022 走看看