软件工程概念
软件工程是开发、运行、维护和修复软件的系统方法。
软件工程包含:软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程工具和方法、软件质量。
软件工程方法学包含三个要素:方法、工具和过程。方法是指完成软件开发的各项任务的技术方法,工具是指为运用方法而提供的软件工程支撑环境;过程是指为获得高质量的软件所需要完成的一系列任务的框架。
软件生命周期
软件生存周期可以分为需求分析、概要设计(系统设计)、详细设计(组件设计)、编码、测试和维护等阶段。
1.需求分析:需求分析的任务不是具体地解决问题,而是要准确地确定目标系统必须做什么,成果物是真实反应用户要求的“需求分析模型”(使用UML中的用例图和类图等图形工具)或“软件需求说明书”(使用数据流图、数据字典和自然语言),这个模型或说明书将作为软件系统设计的依据。
2.概要设计:概要设计的任务是应该怎样实现系统目标,成果物是“系统设计模型”或“系统设计说明书”,这个模型或说明书将作为下一步软件组件设计的依据。也使用UML中的用例图和类图等图形工具来表示。
4.详细设计:组件设计的任务就是详细地设计每个组件,确定实现组件功能所需要的算法和数据结构,成果是“软件组件设计说明书(详细设计说明书)”,这个说明书将作为下一步软件编码的依据。
5.编码:把软件设计结果翻译成用某种程序设计语言(编程语言)书写的程序。软件质量主要取决于需求分析和软件设计的质量,但编码阶段所选用的程序设计方法、程序设计语言和程序设计风格也将对软件的可靠性、可维护性和可重用性产生很大的影响。
6.测试:目的就是在软件产品或软件系统交付运行之前,尽可能多地发现软件中的错误和缺陷,测试文件可分成两类:测试计划和测试分析报告。
7.维护:软件维护是在软件交付使用之后直至软件被淘汰的整个时期内为了改正错误或满足新的需求而修改软件的活动。可以分为以下4个类型:
1)改正性维护:它是指在使用过程中发现了隐蔽的错误后,为了诊断和改正这些隐蔽错误而修改软件的活动。
2)适应性维护:是指为了适应变化了的环境而修改软件的活动。
3)完善性维护:是指为了扩充或完善原有软件的功能或性能而修改软件的活动。
4)预防性维护:是指为了提高软件的可维护性和可靠性,为未来的进一步改进打下基础而修改软件的活动。
软件开发方法及过程
结构化开发方法包括:结构化开发方法、面向对象开发方法,瀑布模型,快速原型模型,螺旋模型。
1.结构化开发方法
也称为生命周期方法学,它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。
结构化开发特点
(1)阶段性。前一阶段工作完成以后,后一阶段工作才能开始,前一阶段的输出文档是后一阶段的输入文档。
(2)推迟实施。将分析和设计阶段与实施分开,适当地推迟系统的具体程序实现。
(3)文档管理。在每个阶段就规定了要完成的文档资料