导图社区 813软件工程-面向对象方法学
用于813软件工程和期末复习串知识点,对象是封装了数据结构以及可以被施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务。
编辑于2023-06-14 16:19:05 辽宁用于813软件工程和期末复习串知识点,可行性研究是进行了一次大大简化了的系统分析和设计的过程,也是在较高层次上以较为抽象的方式进行的系统分析和设计的过程。
用于813软件工程和期末复习串知识点,对象是封装了数据结构以及可以被施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务。
用于813软件工程和期末复习串知识点,软件工程是一门指导软件开发和维护的工程型学科,它采用了工科的概念、技术、原理、方法,把经历时间考验的的管理技术和当前能用到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它。
社区模板帮助中心,点此进入>>
用于813软件工程和期末复习串知识点,可行性研究是进行了一次大大简化了的系统分析和设计的过程,也是在较高层次上以较为抽象的方式进行的系统分析和设计的过程。
用于813软件工程和期末复习串知识点,对象是封装了数据结构以及可以被施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务。
用于813软件工程和期末复习串知识点,软件工程是一门指导软件开发和维护的工程型学科,它采用了工科的概念、技术、原理、方法,把经历时间考验的的管理技术和当前能用到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它。
面向对象方法学
概述
面向对象方法学的要点
1、认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。面向对象方法用对象分解取代了传统方法的功能分解。
2、把所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法
3、按照子类(派生类)与父类(基类)的关系,把若干个对象类组成一个层次结构的系统(类等级)。
4、对象彼此之间仅能通过传递消息互相联系。
面向对象方法学的优点
1、与人类习惯的思维方法一致
2、稳定性好
3、可重用性好
4、较易开发大型软件产品
5、可维护性好
a、面向对象的软件稳定性好
b、面向对象的软件比较容易修改
c、面向对象的软件比较容易理解
d、易于测试和调试
概念
对象
定义
对象是封装了数据结构以及可以被施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务。
特点
1、以数据为中心
2、对象是主动的
3、实现了数据封装
4、本质上具有并行性
5、模块独立性好
类
类就是具有相同数据和相同操作的一组相似对象的定义。
方法
方法就是对象所能执行的操作,也就是类中定义的服务。
属性
属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。
封装
封装就是把某个事物包起来,使外界不知道该事物的具体内容。
继承
集成是子类自动地共享基类中定义的数据和方法的机制。
优点
继承具有传递性
继承性使得相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余信息。
使用从原有类派生出新的子类的办法,使得对软件的修改变得比过去容易得多了。
继承性使得用户在开发新的应用系统时不必完全从零开始,可以继承原有的相似系统的功能或者从类库中选取需要的类,再派生出新的类以实现所需要的功能。
有了继承性以后,还可以用把已有的一般性的解加以具体化的办法。
多态性
多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象,也可以发送给子类对象。
重载
可以解决命名冲突的问题。
分类
函数重载
运算符重载
对象模型(最重要、最基本、最核心)
对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对对象彼此间的关系的映射,描述了系统的静态结构。
类图
类图描述类与类之间的静态关系。类图是一种静态模型,它是创建其他UML图的基础。
表示关系的符号
类与类之间有四种关系
关联
泛化(继承)
依赖
细化
1、关联
普通关联(最常见的关联关系)
重数
重数表示该类有多少个对象与对方的一个对象连接
关联的角色
限定关联
把模型中的重数从一对多变成一对一,或从多对多简化成多对一
限定提高了语义精确性,增强了查询能力
关联类
为了说明关联的性质,可能需要一些附加信息
2、聚集
聚集也成为聚合,聚集表示类和类之间的关系是整体和部分的关系
分类
共享聚集
如果聚集关系中处于部分方的对象同时参与多个处于整体方对象的构成,则称该聚集为共享聚集。
组合聚集
如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失。
3、泛化(继承)
一个类在另一个类的构造方法中被实例化
4、依赖和细化
依赖关系
依赖关系描述两个模型元素(类、用例等)之间的语义连接关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。
细化关系
当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。
动态模型
动态模型是表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。
功能模型
功能模型表示变化的系统的“功能”性质,他指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。
用例图
包含的模型元素有:系统,行为者,用力,用例之间的关系
系统
代表系统的方框的边线表示系统的边界
用例
一个用例是可以被行为者感受到的、系统的一个完整的功能
行为者
行为者是指与系统交互的人或其他系统,他代表外部实体
用例之间的关系
拓展关系
向一个用例中添加一些动作后构成了另一个用例,这两个用例之间的关系就是拓展关系,后者继承前者的一些关系,通常把后者称为拓展用例。
使用关系
一个用例使用另一个用例时,这两个用例之间就构成了使用关系
包含关系
面向对象分析
书写需求陈述的时候,尽力做到语句正确,而且应该慎重选用名词、动词、形容词、同义词。需求陈述可繁可简。
对象模型5个层次
首先确定对象类和关联,对大型问题还要进一步划分
给类和关联增添属性,以进一步描述它们
利用适当的继承关系进一步合并和组织类
利用适当的继承关系进一步合并和组织类
对类中的操作最后确定,则需要等到建立了动态模型和功能模型只有,因为这两个子模型更准确地描述了对类中提供的服务的需求。
建立动态模型
第一步编写典型交互行为的脚本
第二步从脚本中提取出事件,确定触发每个事件的动作对象以及接收事件的目标对象。
第三步排列事件发生的次序,确定每个对象可能有点状态以及状态间的转换关系,并用状态图描绘它们。
最后,比较各个对象的状态图,检查他们之间的一致性,确保事件之间的匹配。
建立功能模型
功能模型表示了系统中数据之间的依赖关系,以及有关的数据处理功能,它由一组数据流图组成。其中的处理功能可以用IPO图、伪码等多种方式进一步描述。
通常建立了对象模型和动态模型之后在建立功能模型。
定义服务
既要考虑常规行为,又要考虑特殊服务
1、常规行为
2、从事件导出的操作
3、与数据流图中处理框对应的操作
4、利用继承减少冗余操作
面向对象设计
面向对象设计就是用面向对象的观点建立求解域模型的过程
1、模块化
对象就是模块
2、抽象
面向对象方法不仅支持过程抽象,还支持数据抽象
某些面向对象的程序设计语言还支持参数化抽象
3、信息隐藏
信息隐藏通过对象的封装性来实现
4、弱耦合
交互耦合
松散
对象之间通过消息连接来实现
继承耦合
紧密
5、强内聚
设计使用的一个构件内的各个元素,对完成一个定义明确的目的所作出的贡献程度
1、服务内聚
一个服务应该完成一个且仅完成一个功能
2、类内聚
一个类应该只有一个用途,它的属性和服务应该是高内聚的
3、一般-特殊内聚
6、可重用
软件重用是提高软件开发生产率和目标系统质量的重要途径
1、尽量使用已有类
2、如果需要创建新类,则设计新类的时候就应该考虑将来的可重复使用性
应该怎么做
1、一般-特殊结构的深度应该适当
2、设计简单的类
3、使用简单的协议
4、使用简单的服务
5、把设计变动减少至最小
软件重用
重用也叫再用或复用,是指同一事物不做修改或稍加改动就多次重复使用
通过积极的软件冲用能够获得可观的商业效益,产品质量、开发生产率、整体成本都得到了改善
面向对象实现
选择面向对象语言的准则
1、将来能否占据主要地位
2、可重用性
3、类库和开发环境
4、其他因素
测试策略
1、面向对象的单元测试
测试面向对象软件时,不能再孤立地测试单个操作,而应该把操作作为类的一部分来调试。
2、面向对象的集成测试
3、面向对象的确认测试
主要还是根据动态模型和描述系统行为的脚本来设计确认测试用例
软件项目管理
所谓管理就是通过计划、控制和组织等一系列的活动,合理地配置和使用各种资源,以达到既定目标的过程
软件项目管理先于任何技术活动之前并且贯穿于软件的整个生命周期之中
软件项目管理过程从一组项目计划活动开始,而制定计划的基础时工作量估算和完成期限估算。
估算软件规模
代码行技术
优点
代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数
缺点
源程序仅是软件配置的一个成分,用它的规模代表整个软件的规模似乎不太合理
不同语言实现同一个软件所需要的代码行数不相同
这种方法不适用于非过程语言
功能点技术
功能点技术一句对软件信息域特性和软件复杂性的评估结果,估算软件规模
工作量估算
软件估算模型使用由经验导出的公式来预测软件开发工作量,工作量是软件规模的函数(KLOC或FP),工作量的单位通常是人月(pm)
COCOMO2模型
构造性成本模型(constructive cost model)
进度计划
软件项目的进度安排是这样的一种活动,它通过把工作量分配给特定的软件工程任务并对规定成各项任务的起止日期,从而将估算出的项目工作量分布于计划好的项目持续期内。
Gantt图
Gantt图能很形象的描绘任务分解情况,以及每个子任务(作业)的开始时间和结束时间,因此是进度计划和进度管理的有力工具。
缺点
1、不能显式地描绘各项作业彼此间的依赖关系
2、进度计划的关键部分不明确,难于判定哪些部分应当是主攻和主控的对象
3、计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费
工程网络
工程网络是系统分析和系统设计强有力的工具,它克服了Gantt图的缺点,其余都和Gantt图一样
人员组织
民主制程序员组
小组成员完全平等,充分民主,有利于发现错误,但是没有领头人协调关系,容易导致工程失败
主程序员组
缺乏管理者和技术熟练的程序员,没人想当替补人员,很难找到编程秘书
现代程序员组
技术负责人负责小组的技术活动
行政负责人负责非技术性事务的管理决策
软件质量保证措施
基于非执行的测试
基于执行的测试
程序正确性证明
软件配置管理
软件整个生命周期内管理变化的一组活动
软件配置项
计算机程序
描述计算机程序的文档
数据
能力成熟度模型
CMM,是用于评价软件机构的软件过程能力成熟度模型
基本思想
由于问题是由人们管理软件过程的方法不当引起的,所以新软件技术的运用并不会自动提高软件的生产率和质量
五个等级
初始级(1级)
可重复级(2级)
已定义级(3级)
已管理级(4级)
优化级(5级)