软件工程
软件危机:计算机软件的开发和维护过程中遇到的一系列严重问题。分为以下两方面问题:
1,如何开发软件,以满足对软件日益增长的需求;
2,如何维护数量不断膨胀的已有软件。
软件是程序,数据和相关文档的完整集合。
程序:能够完成预定功能和性能的可执行指令序列;
数据:是使程序能够适当地处理信息的数据结构;
文档:开发,维护和使用软件所需的图文资料。
软件工程:把系统化的,规范化的,可度量的途径应用于软件开发,运行和维护的过程;也就是把工程化应用于软件中。
软件工程的7条原理:
1,用分阶段的生命周期计划严格管理。应该把软件生命周期划分为若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发和维护工作进行管理。
1) 项目概要计划
2) 里程碑计划
3) 项目控制计划
4) 产品控制计划
5) 验证计划
6) 运行维护计划
2,坚持进行阶段评审。
3,实行严格的产品控制。一切有关修改软件的建议,特别是涉及基准配置的修改建议,都必须按照严格的规程进行评审,获得批准后才能实施修改。
4,采用现代程序设计技术。
5,结果应能清楚地审查。根据软件项目的总目标和完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚的审查。
6,开发小组的人员应该少而精。
7,承认不断改进软件工程实践的必要性。积极主动地采纳新的软件技术,不断的总结经验,如收集进度和资源耗费数据,收集出错类型和问题报告数据等。这些数据不仅可以用来评价新的软件技术的效果,而且可以用来指明必须着重开发的软件工具和应该优先研究的技术。
软件工程包含的领域:
1,软件要求,软件需求的抽取,分析,规格说明和确认。
2,软件设计,分析软件需求以产生一个软件内部结构的描述,描述软件架构,以及这些组件之间的接口。
3,软件构建,如何创建软件的详细步骤,包括:编码,验证,单元测试,集成测试和调试。
4,软件测试,用有限的测试用例来动态地验证软件是否达到预期的行为。
5,软件维护,产品上线之后会发现新的缺陷,运行环境会发生变化,还会有新的客户需求,软件维护需要针对这些问题对软件进行相应的修改和完善。
6,软件配置管理,跟踪和控制软件变更的活动。
7,软件工程管理,是软件的开发和维护的管理活动。
8,软件工程过程,为了获取高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
9,软件工程工具和方法。
10, 软件质量,一组内在特征满足需求的程度。
软件工程过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件工程过程定义了:
1,运用方法的顺序;
2,应交付的文档资料;
3,为保证软件质量和协调变化所需要采取的管理措施;
4,标志软件开发各个阶段任务完成的里程碑。
软件生命周期:一款软件从定义,开发,使用,维护,直到最终被废弃的过程。
1, 软件定义:
1) 问题定义:通过分析,系统分析员应该提出关于问题性质,工程目标和工程规模的书面报告,并且得到客户对这份报告的确认。(要解决的问题是什么?)
2) 可行性研究:用最小的代价,在尽可能短的时间内确定问题是否能够解决。从技术,经济,社会因素(如法律)等方面分析可行性,确定问题是否值得去解决,给出可行性研究报告。(问题是否值得去解决,是否有行得通的解决办法?)
3) 需求分析:系统必须完成那些工作,对目标系统提出完整,准确,清晰和具体的要求,给出正式的文档说明书。(目标系统必须做什么?)
2, 软件开发:
1) 系统设计:
(1) 概要设计:(怎样实现目标系统?)
a,给出实现目标系统的几种可能方案,分析每种方案的优缺点,并在充分权衡各种方案利弊的基础上,推荐一个最佳方案,并得到客户的确认。
b,设计程序的体系结构,确定程序由那些模块组成,以及模块之间的关系。
(2)详细设计:(怎么具体的实现这个问题?)
设计出程序的详细规格说明,详细的设计每个模块,确定实现模块的功能所需要的算法和数据结构,程序员可以根据说明写出实际的代码。
2) 系统实现:编码和单元测试:写出正确的,容易理解,容易维护的程序模块。
(3)综合测试:通过各种类型的测试使软件达到预定的要求。最好把测试方案,测试计划和测试报告以正式文档资料的形式作为软件配置的一个组成部分。
3,软件运行维护:每一次维护活动都是一次简化了的软件定义和开发过程。
a , 改正性维护,解决软件使用过程中发现的缺陷;
b,适应性维护,修改软件以适应环境的变化;
c,完善性维护,根据客户的需求,改进或扩充软件功能;
d,预防性维护,修改软件为将来的维护活动预先做准备;
每一项维护活动都应该准确地记录下来,作为正式的文档资料保存下来。