步骤
1 软件过程:
1软件的定义
2可行性研究:技术、经济、运行和法律可行性
3需求分析:研究系统需要做什么
4概要设计:设计软件系统结构,数据结构,数据库。完成设计文档
5编码:
6测试
7维护和管理
2 软件=程序、数据、文档。分为系统软件和应用软件。
3 软件工程:指导软件开发和维护的,按工程化的原则和方法组织软件开发,解决软件危机
4 软件危机:不能满足需求,开发成本超标,质量不足,不好维护,速度慢
5 软件工程的基本原理
严格控制每个阶段生命周期
每隔一段时间进行评审
采用现代程序设计技术
开发小组人员少而精
不断改进
设计准则:
模块化:把程序分成可独立访问的模块,每个模块完成一个子功能。
抽象:抽象出事物特性,从而构成类
信息隐藏:(封装)只知道方法,但是不知道实现细节
低耦合,高内聚
6 典型模型:
瀑布模型
线性模型、整体开发模型。
优点:原理简单、各个阶段都有验证和确认
缺点:不能适应用户的需求变化、返回上一级代价很大、线性的开发模型,回溯性差
场景:希求明确的中小型软件开发
快速原型模型:
优点:增强了开发者与用户间的交流,用户可以即使发现问题
缺点:缺乏强有力的软件工具和开发环境,对设计人员水平要求高
场景:需求模糊的小型软件开发
渐增模型:
重复执行的多个瀑布模型
优点:可分批次提交软件产品,以组件为单位进行开发
缺点: 对整个的需求没有一个完整的定义,所以给总体设计上带来麻烦
新开发一个构建然后继承到现有的结构时,不能破坏原有的产品
使用:容易分块的大型软件开发
喷泉模型
各阶段相互重叠,并行性软件开发
以分析为基础,资源消耗呈塔形,在分析阶段消耗资源最多。
场景:面向对象的软件开发。
螺旋模型:
典型的迭代模型,是风险驱动模型,用于面向对象开发
优点:灵活,可以在项目各个阶段进行变更。客户始终参与各个阶段的开发,保证满足要求
缺点:迭代次数过多,可能会导致开发成本的增加,延迟提交时间。
场景:风险比较大的大型软件开发
7 软件开发方法:
1 结构化方法:按功能分解成一个个的结构,可重用性差。
2 面向对象方法:(对象+类+继承+消息传递)用对象分解取代结构化方法的功能分解,把所有对象分成类,把若干个相关的类组织成具有层次结构的系统,下层的类继承上层的类所定义的属性和服务。对象之间通过发送消息进行联系。
优点:开发软件时,可以重复使用对象和类,降低了成本。适应需求变化、稳定性好、可用性好、可维护。
结构设计:
耦合性:模块之间相互依赖的紧密程度。取决于模块之间接口的复杂程度。模块之间联系越少,耦合性越低,这也是系统想要的。
内聚:是一个模块内部各个元素之间的紧密程度。一个理想的模块只完成一个功能,所以应尽可能高内聚。
应该达到:高内聚,低耦合:
面对对象:
掌握面向对象的基本概念;(135)
理解面向对象与面向过程的区别;
UML 图
熟悉静态建模和动态建模的方法;
什么是面向对象:面向对象是模型化。抽象出一个类,然后封装。需要什么功能直接使用就可以了。
面向对象的三大特点:封装。继承。多态:
C语言面向结构,c++和java 是面向对象的。提出struct 或者class , 有这些操作,把性质功能封装在一起。 C语言没有把操作封装在一起。
面向对象 = 对象+类+继承+消息传递
原则:模拟人的习惯的思维方式,
Java 的接口和类的区别:接口中的操作只有一个名字,继承下来必须实现,类里面方法都写了,直接使用就可
对象:由属性和一些方法组成。
类class:一些对象的集合,这些对象有相同的属性和服务。(指明了属性和方法)对象相当于类的一个实例。 比如animal 和 dog的区别
封装encapsulation:信息隐蔽技术:封装让对象称为两个部分,接口部分和实现部分。用户可以看到并访问接口,但是实现部分看不到。
继承性:父类和子类之间共享数据和方法的机制。
新类可以在已有的类的基础上进行,可以直接继承这个类的属性和方法。
多态:同一个事件发生在不同的对象上会产生不同的结果
重载:不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数
类和类之间的关系:关联、继承、实现
UML
例图use case diagram:有小人和圆圈组成的,表示系统实现什么功能,不关心怎么实现的
静态图:
类图:由一些矩形和线条组成,分别表示类 以及类和类之间的关系(关联,继承,依赖等)
对象图:是类图的实例,展现了一组对象和他们之间的关系。
动态图:
时序图Sequence diagram:描述一组对象和它们之间如何进行消息传递的.时序图强调消息传递的时间顺序
协作图:描述对象之间交互关系,哪些对象之间有消息传递
实现图:描述系统的物理实现
测试:
步骤:分析需求,制定测试计划,编写测试用例,测试,提交错误报告,生成测试总结。
白盒测试:结构测试。测试人员根据程序内部的逻辑结构及有关信息设计测试用例。对所有的逻辑(真假)取值都要测试一次。检查是否都按预定的要求正确地工作。
用于:对模块的测试
黑盒测试:行为测试。把测试对象看做一个黑盒子。测试人员完全不考虑程序内部的逻辑结构特性,按照说明书检查功能是否复合要求。
可用于各种测试。用于发现功能是否一楼,界面错误等
测试步骤:模块测试 子系统测试 系统测试 平行运行
开机:BIOS 然后加载到内存。
面向对象设计的准则
- 模块化
- 抽象
- 信息隐藏(封装)
- 低耦合度
- 高内聚