软件工程的概念
软件工程是指导软件开发和维护的一门工程学科.它采用工程的概念、原理、技术、方法,把经过时间检验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,用于开发和维护软件.
危机:随着微电子技术的进步,计算机硬件性价比平均每10年提高2个数量级,而且质量稳步提高;同时,计算机软件成本却在逐年上升且质量没有可靠的保证,软件开发的生产率也远远跟不上计算机应用的需求。在不能开发出完成预定功能的软件,更多的问题是如何开发软件、如何维护大量已经存在的软件以及开发速度如何跟上目前对软件越来越多的需要.
软件生存周期是指从提出软件产品需求开始,直到该软件产品被淘汰的全过程。
软件开发阶段:需求分析、设计、编码与测试、发布或安装验收.
软件项目计划的主要内容:
1.资源需求分析
2.经费估算
3.进度安排
可行性研究任务
1.技术可行性
2.经济可能性
3.社会因素的考虑
可行性研究的步骤
1.重新检查系统定义报告中相关的内容,进一步复查确认系统规模与目标,改正含糊或不正确的描述,明确对目标系统的限制与约束。
2.研究目前正在使用的系统,找出其基本功能和所需要的基本信息,绘制系统流程图。
3.设想新系统的高层逻辑模型,通过对现在系统的分析归纳,可以从现在系统的逻辑模型来设想目标的逻辑模型,最后根据目标系统的逻辑模型建造新的物理系统。
4.导出各种实现方案方案进行评价。
5.推荐可行性方案。
需求分析的任务是
确定系统必须完成哪些工作,既“做什么”,至于“怎么做”由设计阶段来完成。
结构化分析方法有关内容
传统需求分析是不是结构化(Structured Analysis)方法,简称SA方法,它是一种面向数据流的需求分析方法,适合于分析大型数据处理系统,是一种简单、实用的方法。
模块及模块化
整个软件被划分成若干单独命名和可编址部分
软件设计分两步完成
概要设计和详细设计
要评价一个软件结构设计的好坏,主要看模块的独立,要从软件结构的耦合性和内聚性两个方面来衡量。好的软件结构应该具有高内聚、低耦合的模块化结构。
编码的任务
编码的任务是将详细设计翻译成计算机可以理解并最终可以运行的代码。
软件测试的目的
软件测试的目的正式为了尽量多地去发现软件中存在的各种缺陷与错误并通过一定的手段将这些错误排除。
测试的概念
通俗地讲,软件测试就是在软件投入运行或发布前,对软件需求分析、设计规格说明和编码进行最终复审的活动。
测试的目标
1.测试是一个为了发现错误而执行程序的过程
2.一个好的测试用例能够发现至今尚未发现的错误
3.一个成功的测试是发现了至今尚未发现的错误的测试
测试的原则
1.所有的测试都应追溯到客户的要求
2.应该把尽早地和不断地进行软件测试作为开发人员的座右铭
3.在真正的测试开始之前必须尽可能地完善测试计划
4.Pareto(柏拉图)原则亦可用于软件测试
5.从心理学的角度讲,创建系统的开发人员并不是进行软件测试的最佳人选
6. 测试应该由小到大
7.完全的测试是不可能的
测试技术的分类
1.按测试步骤与策略来分
包括单元测试、集成测试、确认测试、系统测试、α测试和β测试
2.按测试技术来分
包括白盒测试与黑盒测试
3.按测试的环境来分
静态分析与动态测试