考点分析:
软件危机:人随着软件复杂度提升,开发成本、软件质量、生产效率等问题。
软件工程:为了消除软件危机,以工程学思路进行软件开发,即软件工程。
软件工程三个要素
软件生命周期:软件产品从考虑其概念到产品交付使用,直至最终退役为止的整个过程:
1、瀑布模型(重点)
2、快原型模型抛弃原型法)
第一步是建造一个快速原型,让用户评价,之后抛弃原型,确定需求转入正式开发。
可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险
3、演化模型(演化原型法)
4、增量模型
软件被作为一系列的增量构件来设计、实现、集成和测试
整个产品被分解成若干构件,开发人员可以逐个开发交付,客户可以不断看到开发的软件,从而降低开发风险,有利于快速开发软件。
5、螺旋模型
综合了瀑布模型和演化模型的优点,还增加了风险分析,特别适合大型复杂系统。
1、结构化软件开发方法SASD:也称为面向功能的软件开发方法或面向数据流的软件开发方法,与瀑布模型结合度很高。
数据流图(Data Flow Diagram,DFD)用来描述数据流从输入到输出的变换流程
2、面向数据结构的软件开发方法:从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节。
3、面向对象的软件开发方法:一种自底向上和自顶向下结合的方法,并且以对象建模为基础。
4、基于构件化的开发方法: 用预先建立的构件和模版,像搭积木一样
模块化:将软件分解成若干个小的简单的部分-模块,每个模块可独立开发、测试最后组装成完整的程序。
抽象化:抽象出事物本质,共同特性而不考虑它的细节
信息隐藏:每个模块尽可能少显露内部的处理
模块独立:每个模块完成一个独立的特定子功能,并且与其模块的联系简单
衡量标准有两个:模块间的耦合和模块的内聚度,模块独立性强:高内聚低耦合
1、对象:一组属性以及这组属性上的专用操作封装体,通常由对象名、属性和操作三个部分组成。
2、类:一组具有相同属性和相同操作的对象集合。 人类
3、继承:子类可以继承父类的属性,也可以定义和被继承相同方法名称的方法构成方法的重载或覆盖。
4、消息:对象间的通信手段。
5、多态:同一个操作作用于不同对象有不同的解释,产生不同的执行效果。
标记语言:一种将文本以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。常用于格式化和链接,如HTML、XML。
脚本语言:又称为动态语言,是一种编程语言,用来控制软件应用程序,只在调用时进行解释,可以定义函数和变量,与编程语言的区别时候编程语言的语法和规则更严格和复杂,典型的脚步语言: JavaScript、VBScript、PHP。
编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成机器语言,比如exe文件。运行时不需要重新翻译,直接使用编译结果就行。程序执行效率高,依赖编译器,如: C、C++、Java。
根据测试目的和阶段不同,分为:单元测试、集成测试、系统测试、验收测试。
软件测试方法:
项目管理的核心是在成本、质量和进度的平衡。
项目管理有两种方法:甘特图(Gantt)和计划评审图片(PERT)
1、甘特图
2、计划评审技术图(PERT)
不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的关系,但PERT不能反应任务间的并行关系。
关键路径法(Critical Path Method,CPM)
一个项目中,只有项目网络最长的或耗时最多的活动完成之后,项目才能结束,这条最长的活动路径叫做关键路径。
关键路径上的活动不能松弛。
某条活动松弛时间=关键路径所用的时间-经过该活动的路径的最长时间
软件工程:
项目管理:甘特图、PERT优缺点、关键路径法