定义:软件是计算机系统中与硬件相互依存的一部分,是包括程序数据及其相关文档的完整集合。
特点:
①抽象性
②不存在磨损老化问题
③依赖性
④复杂性高,成本昂贵
⑤软件开发涉及诸多社会因素
分类:
①应用软件
②系统软件
③支撑软件
软件危机:
①需求的增长得不到满足
②开发成本和进度无法控制
③质量难以保证
④可维护程度非常低
⑤成本不断提高
⑥开发生产率的提高赶不上硬件的发展和应用需求的增长
软件需求:
1、可行性研究与初步计划制定
2、需求分析:
a、获取
b、分析
c、编写规格说明书:
作用→便于理解交流,反映用户问题,作为测试和验收的依据
特点:①正确性②无歧义性③完整性④可验证性⑤一致性⑥可修改性⑦可理解性⑧可追踪性
d、需求评审
需求分析的方法:
①面向对象
②结构化分析:自顶向下
③结构化分析常用工具:数据流图、数据字典、判定表、判定树
软件设计:
总体设计原则:①抽象②模块化③信息隐蔽④模块独立性(内聚性 耦合性)
详细设计:
①任务:确定性该如何具体实现所要求的系统
②方法:结构化设计方法:自顶向下,逐步求精,模块化为基点
③工具:图形工具,表格工具,语言工具
主要工具:
①程序流程图 ②N–S图③PAD④PDL
软件实现:
①编码②选择程序设计语言及风格③要求写出的程序应该结构良好清晰易读,且与设计相一致
软件测试:
使用人工或自动手段来运行或测定某个系统的过程。
测试目标:检测其是否满足规定的需求
测试方法:
①静态分析与动态测试
②白盒测试与黑盒测试
测试实施: 单元测试→集成测试→验收测试→系统测试
软件调试:
测试发现错误之后诊断并排除错误的过程
调试基本步骤:
①错误定位
②修改设计和代码以排除错误
③进行回归测试,防止引进新的错误
调试原则:
①确定错误的性质和位置时的注意事项(分析思考与错误征兆有关的信息,避开死胡同,把调试工具当做辅助手段,避免试探)
②修改错误的原则(在出现错误的地方可能还有别的错误,修正错误的同时可能会引入新的错误,修改源代码程序,不改变目标代码)
调试方法:
①强行排错法
②回溯法
③原因排除法(演绎法 归纳法 二分法)
软件运行维护:
①纠正性维护 ②适应性维护 ③完善性维护 ④预防性维护