本文纯属手打,在度娘上搜索“宝贝”,很浪费时间。。
首先: 处于大学快要毕业阶段的我,应该是迷茫呢?还是应该多认识自己多一些呢? (暂时不去想啦!)
相信只要是学计算机的童鞋们,都应该记得这么十分给力的课程吧!~~ 哈哈
来表述下软件工程的学习思路吧~~
本书是以《天津大学软件学院考试教材》,与其他书内容如若雷同,纯属巧合,以下只是背写了一部分,真正的软件工程远远不是这些!
一、软件工程的定义------》 二、软件工程的生命周期------》三、 可行性研究------》四、 需求分析------》五、 总体设计------》六、 详细设计------》七、 编码和实现------》 八、软件测试------》九、 软件维护
一、
1.软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.软件:程序+数据结构+文档(经典定义:写成文字叙述就是,完成预定功能和性能,并对相应数据进行加工的程序和描述程序及其操作的文档)
3.软件生命周期:一个软件从定义、开发、使用和维护直到被放弃,要经历的漫长时期
分为三个时期:软件定义(问题定义、可行性研究、需求分析)、软件开发(总体设计、详细设计、编码、测试)和软件维护
4.软件工程:采用工程的概念、原理和技术、方法,并结合正确的管理技术和当前能够用到的最先进的技术方法,经济高效地开发和维护软件的一门工程学科
5.软件工程基本原理: (1)用分阶段的生命周期计划严格管理
(2)坚持进行分阶段评审
(3)实行严格的产品控制
(4)采用现代程序设计技术
(5)结果应能清楚地审查
(6)开发小组人员应当少而精
(7)承认不断改进软件工程实践的必要性
6.瀑布模型的特点及缺点:
第一、各阶段之间有依赖性和严格的顺序性
第二、推迟实现
第三、严格的阶段质保
第四、文档驱动
总之(1)导致了"阻塞"严重(2)实际项目很少严格遵守瀑布模型的顺序(3)用户在开始阶段往往不能准确描述自己的需求(4)产品出现晚并且接近尾声时发生重大缺陷
7.研究软件工程项目的可行性应从哪几个方面分析?(多问几个为什么)
(1)技术可行性(开发项目的功能、性能和限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目能否实现)
(2)经济可行性(进行开发成本估算以及进行效益的评估)
(3)操作可行性(应用范围内,操作是否行得通)
(4)社会可行性(是否存在任何侵犯、妨碍等责任问题)
8.需求分析的基本任务
(1)确定系统的综合需求
(2)分析系统的数据需求
(3)建立软件的逻辑模型
(4)修正系统的开发计划
(5)编写软件需求规格说明书
(6)需求分析评审
9.数据字典
由数据条目组成。数据字典描述、组织和管理数据流程图的数据流、加工数据源及外部实体
10.ER图
描述系统所有数据对象的组成和属性,以及数据对象之间关系的图形语言
11.信息隐藏
在设计中确定模块时,使得一个模块内包含的信息对于不需要这些信息的其他模块来说,它是不能访问的。
12.编码风格
13.软件可维护性
维护人员在理解、改正、改动或改进这个软件的难易程度,是软件质量的主要特征之一
14.模块化、抽象和逐步求精
模块化是指解决一个复杂问题时自顶向下吧软件系统划分为若干模块的过程。每个子模块完成一个特定的子功能。所有模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。
抽象是认识复杂现象过程中使用的思维工具,也就是抽出食物本质的共同特性而暂不考虑它的细节,不考虑其他因素
逐步求精为了能集中精力解决主要问题而尽量推迟考虑问题的细节
15.过程设计语言(PDL)的特点
(1)关键字:采用固定语法,应支持结构化构建数据说明机制和模块化
(2)处理部分采用自然语言描述
(3)允许说明简单和复杂的数据结构
(4)子程序的定义和调用不受具体的接口方式影响
16.软件结构设计启发式规则有哪些?
(1)模块独立性准则
(2)模块的作用域在控制域内
(3)软件结构的形态特征准则
(4)模块大小准则
(5)模块的接口准则
17.总体设计的过程,描绘软件机构的工具
(1)设计软件结构
(2)数据结构及数据库设计
(3)测定测试要求并且制定测试计划
(4)编写《概要设计说明书》
(5)评审
工具:层次图、HIPO图、软件结构图
18.软件测试的目标和准则
目标:为了发现程序的错误而执行程序的过程
准则
(1)所有测试都应该能追溯到用户需求
(2)测试开始之前制定测试计划
(3)Pareto原理应用于软件测试
(4)从小规模测试开始,并逐步进行大规模测试
(5)穷举测试是不可能的
(6)有独立的第三方软件从事测试工作
19.面向对象分析的基本过程和设计准则
(1)确定问题域
(2)区分类和对象
(3)区分整体对象及其组成部分,确定类的关系和结构
(4)定义属性
(5)定义服务
(6)确定附加的系统约束