以下知识是本人在学习《软件工程》这本书,所写的知识点总结大纲,可供小伙伴们进行期末复习总结,日常学习。

一、软件工程概述:
软件危机、软件工程的定义、软件工程方法学(传统方法学、面向对象方法学)
软件生命周期:三个阶段  (八个模块)  ----->   书本上有,自行查阅

------------------------------------------------------------------------------------------------------
软件开发模型
瀑布模型:具有顺序性和依赖性,必须要等前一阶段的工作完成之后,下一阶段才能完成。每个阶段的任务必须完成,完成之后还要让开发人员进行测试和审查。然后就加了反馈环的瀑布模型。一旦出现错误,则无法弥补。

快速还原模型:先快速建立一个能够反应用户主要需求的系统,让用户进行试用,然后使用户提出修改意见,然后开发人员进行修改系统。系统是按照用户的需求进行更改的,满足用户的合理要求。快速还原模型,就是快速,节约软件开发成本。内部结构不太重要。

增量模型:开发人员需要把软件看成构件序列,增量模型是逐步分批的向用户提交产品,由于整个软件产品是被分解成多个增量构件,开发人员分批提交产品构件,可以使用户有充分的时间适应学习和适应部分新的产品。构件设计中不允许破坏原来已开发出的产品, 可以进行扩充功能

螺旋模型:在每个阶段开发之前都可以看成是个增加风险分析过程的快速还原模型。可以有一个很好的风险评估。
喷泉模型:使用了面向对象方法学,就是在软件开发早期定义了一系列面向问题的对象,然后在整个开发过程中,不断的充实和扩充这些对象。
以及 rational统一过程、敏捷开发与极限编程、微软过程


二、可行性研究:确定问题是否值得去解决?

可行性研究这个过程主要使用以下的工具:
系统流程图:描绘物理系统的传统工具。
数据流图:是一种图形化的技术,描绘着信息流和数据从输入移动到输出的过程中所经受的变换。
数据字典:关于数据信息的集合,对数据流图中所包含的所有元素的定义的集合。
数据流图和数据字典共同构成系统的规格说明。


三、需求分析:为了开发满足用户需求的软件产品,要知道用户的需求,系统要做什么?
用户沟通获取需求的方法:访谈、面向数据流自顶向下求精、简易的应用规格说明技术、快速建立软件原型------------------>具体内容在书本上可找到

实体-联系图(E-R图):数据对象、数据对象的属性、数据对象彼此间的相互连接的关系。(一种面向问题的数据模型,按照用户的观点所建立的图形)

数据规范化:为减少数据冗余,避免出现插入异常或者删除异常,简化修改数据的过程
范式:定义消除数据冗余的程度。范式越多,访问的表越多。

状态转换图:通过系统的状态及引起的系统状态转换的事件,来表示系统的行为。   初态、终态、中间状态
验证软件需求:一致性、完整性、现实性、有效性


四、总体设计:已经知道做什么了,现在决定如何去实现?
总体设计分为:系统设计阶段(确定系统的实现方案)和结构设计阶段(确定软件的结构)  
总体设计的过程:选方案—设计方案—设计软件结构—设计数据库—制定测试—记录文档—审查

设计原理:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立
模块化:整个程序划分为若干个可独立执行的模块,每个模块完成一个子功能,在进行集成构成整体,满足用户需求。
抽象:将软件结构进行抽象化处理。  抽象和逐步求精用抽象到具体构造软件的层次结构。
逐步求精:将所设计的模块按照优先级顺序排列,确保每一个模块的问题都能被合理解决
信息隐藏和局部化:将一些细节信息,对于不需要使用的模块来说,是不能访问的。隐藏的是实现的细节。
模块独立:耦合和内聚(是模块化—抽象—信息隐藏和局部化直接作用的结果)

内聚与耦合:高内聚低耦合
内聚:一个模块内部元素之间连接的紧密程度,最好使用功能内聚、顺序内聚、通信内聚,不要使用偶然内聚
耦合:对一个软件结构中,不用模块之间连接的紧密程度。尽量使用数据耦合,少用控制耦合和特征耦合。
启发规则:帮助设计师们找到改进软件设计的途径             
深度、宽度、扇出、扇入、降低模块接口的复杂程度
描绘软件结构的图形工具:层次图和HIPO图、结构图

结构化分析方法(面向数据流的设计方法):把信息流映射为软件结构。交换流和事务流。


五、详细设计:怎样具体的实现所要求的系统?
结构程序设计:顺序、if-then-else、do-while(传统)    do-case、do-until(扩展)     break(修正)
详细设计过程中的工具以及有什么特点:
程序流程图:展现很直观,便于掌握,但是程序流程图没有细致的考虑全局的结构,过早的进行控制流程。
盒图:盒图中没有箭头,不允许随意转移控制,可以使程序员养成用结构化的方式思考问题,解决问题。
PAD图(多重嵌套选择):描绘的程序结构十分清晰,程序逻辑简单,易懂,支持自顶向下,逐步求精的方法。
 判定表(复杂的条件组合对应的动作关系):判定表可以清晰的表达复杂的条件组合与动作对应的关系。
判定树、过程设计语言(这两个没总结,在书本上有具体含义,自行查阅)

面向数据结构的设计方法:根据数据结构设计程序处理过程的方法。   
流图:计算环形复杂度     
1、边数-结点数+2   2、观察闭环的区域数  3、判定结点+1(观察)


六、编码和单元测试
编码风格:内部文档、语句结构、输入输出、效率问题
软件测试准则:测试应该符合用户需求工作、从小规模测试在逐步进行大规模测试、进行第三方测试(尽最大可能性发现错误的测试)
测试步骤:模块测试、子系统测试、系统测试、验收测试、平行运行
单元测试:模块接口、局部数据结构、重要的执行通路、边界条件
集成测试:自顶向下集成、自底向上集成、不同集成测试策略的比较、回归测试

---------------------------------------------------------------------------------------------------------------

重点内容!!!!!!!!!!!!!!!

白盒测试:将程序看成是一个透明的白盒子,测试者完全知道程序的逻辑结构,然后进行逻辑结构测试,(单元测试、系统测试和集成测试主要使用的是白盒测试)
白盒测试(结构测试):逻辑覆盖、控制结构测试
逻辑覆盖:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖
控制结构测试:基本路径测试、条件测试和循环测试

黑盒测试:将程序看成是一个黑盒子,不考虑程序的内部结构,只是进行功能测试。测试程序是否能够接受输入数据产生正确的输出信息。
黑盒测试技术:主要测试软件功能(等价类划分、边界值分析、错误推测试和)
在测试的前期注重白盒测试,测试后期注重黑盒测试。


七、维护

维护:在软件已经交付之后,为了改正错误或满足新的需要而修改软件的过程。
软件的可维护性:可理解性、可测试性、可修改性、可移植性、可重用性
软件再工程过程:库存目录分析、文档重构、逆向工程、代码重构、数据重构、正向工程


八、面向对象方法学

定义:尽可能模拟人类思维方式,使开发软件的方法和过程接近人类认识和解决现实世界的方法和过程。
优点:与人类思维方式相近、稳定性好、可重用性好、较易开发大型软件产品、可维护性好
面向对象的概念:对象、类、实例、消息、方法、封装、继承、多态、重载

-----------------------------------------------------------------------------------------------------------------
对象模型:类图
类图(类名、属性、方法)  类图之间所具有的关系有
(关联、聚集、泛化、依赖和细化)------->定义事情的实体(重要)
类图描述的是一种类与类之间的静态关系,属于是一种静态模型。
功能模型:用例图
用例图(系统、用例、关系、行为者)(用例与用例之间  有“扩展”和“使用关系”)需要去做什么
用例图可以更好的获取用户的需求,可以让用户理解的系统功能。

动态模型:状态图和事件追踪图去建立动态模型

是一种行为化的控制模型,规定了在什么条件下去做的事件。


以上就是本人在学《软件工程》这门课中所概括的一些知识点,没有很细致。如果想了解细致的内容,可以根据书本进行学习,书本中有许多的示例,希望以上知识点对大家有所帮助。

计算机基础知识--->对张海藩老师所著《软件工程》的这本书的一些知识总结相关推荐

  1. 所大学生都要学计算机基础吗,大学生计算机基础学期总结.docx

    大学生计算机基础学期总结 第 PAGE \* Arabic 3 页 大学生计算机基础学期总结 眨眼一个学期过了,在这一学期中开设了<大学计算机基础>和<大学计算机基础实践教程> ...

  2. 没有计算机基础可以学python-要学 Python 需要怎样的基础?

    人生苦短,很高兴你选择了python,这是我比较喜欢的语言.如果你是想做python web相关的话,可以看看这个指南python web 入坑指南 - python-web-guide 0.1 文档 ...

  3. 对计算机基础的期末总结,计算机期末总结

    计算机期末总结 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 学生会的老师就像这个大家庭里的家长,他(她)们慈爱而又严厉,老师们教 ...

  4. 计算机基础课程改革问卷调查,大學计算机基础课程教学改革的调查与设想.doc...

    大學计算机基础课程教学改革的调查与设想 大学计算机基础课程教学改革的调查与设想 摘要:大学计算机基础课程教学改革的调查与设想本文通过问卷调查等方式对教学内容.教学模式.教学环境以及课程大学计算机基础课 ...

  5. 高职院校计算机基础课程要求,高职院校《计算机基础》课程教学改革的探索与实践...

    居伟 [摘 要] <计算机基础>是面向高职院校非计算机专业学生的一门公共基础课程,对高职学生计算思维能力的培养具有重要的作用.目前在高职院校<计算机基础>课程教学中,由于存在学 ...

  6. 计算机推演未来发展动象,大学生计算机基础学习心得五篇

    学习作为一种获取知识交流情感的方式,已经成为人们日常生活中不可缺少的一项重要内容,尤其是在二十一世纪这个知识经济时代,自主学习已是人们不断满足自身需要.以下是小编整理的大学生计算机基础学习心得,希望可 ...

  7. 大学计算机数学基础2,大学计算机基础(第2版)

    摘要: 本书主要介绍了信息与计算机文化,数制与计算机编码,算法与程序设计,硬件基础与微型计算机,系统软件应用基础,办公自动化应用基础,网络应用基础,多媒体应用基础和数据库基础与Access应用等内容, ...

  8. 粉笔事业编计算机基础知识,计算机老师告诉你为什么计算机基础是必修课

    导读:本文是来自WS的网友投稿,由编辑发布关于计算机老师告诉你为什么计算机基础是必修课的内容介绍 目前,计算机已广泛应用于各行各业.学习计算机的基本知识,掌握计算机的基本操作方法是每个现代人必须学习的 ...

  9. 计算机基础知识掌握欠缺,《计算机基础知识》实验教学改革探讨.pdf

    <计算机基础知识>实验教学改革探讨.pdf Science& TechnologyVision 科 技 视 界 科技 探·索·争鸣 计<算机基础知识>实验教学改革探讨 ...

最新文章

  1. R语言包_recharts
  2. 搜索打表大找规律 (hdu2045)
  3. 项目G2SVG.text转换
  4. boost::mp11::mp_third相关用法的测试程序
  5. ubuntu(14.04) 下配置重写
  6. CentOS 6 rpm方式安装mysql
  7. windows下安装zabbix_agent
  8. kafka 怎么样连接图形化界面_图形化编程有多简单,点亮LED不到一分钟
  9. JDBC8.0 URL配置
  10. php创建windos用户,window_Win7系统创建及开启隐藏账户图文教程,  在电脑操作中有时候因为 - phpStudy...
  11. 设计行业专业素材导航网站|行业流行
  12. C++自学14:关系运算符(bool/std::boolalpha)
  13. 【10-26】java调试技术学习笔记
  14. abaqus14安装_Abaqus安装方法
  15. pm模式 raid_pm8060 raid配置 服务器RAID配置详解 - 硬件设备 - 服务器之家
  16. PTA:7-46 新浪微博热门话题 (30 分)
  17. 2023秋招大厂经典面试题及答案整理归纳(141-160)校招必看
  18. excel中如何冻结前三行或者其他行
  19. 中科蓝讯 AB32VG1 RISC-V开发板模块评测任务大挑战
  20. 柱形图如何在每根柱子上都显示数据

热门文章

  1. php迭代什么意思,迭代关系什么意思
  2. 低通滤波器计算截止评率_科普文|一文了解电阻-电容(RC)低通滤波器
  3. JAVA#泛型'学习札记
  4. skinsdog 狗网CSGO开箱地址!csgo开箱网站官网!
  5. 狂野飙车8服务器在哪个文件夹,狂野飙车8数据包安装存放位置详解
  6. 安卓手机开机动画修改
  7. Redis 进阶笔记
  8. 《Python数据分析与挖掘》实战项目 - Python程序设计(期末大作业、课程设计、毕业设计)2012-2021近十年考研英语一真题词汇词频统计与可视化(附代码)
  9. Unity实现瞄准镜效果
  10. 青蛙的约会解题报告(转)