软件开发的主要任务是 什么是软件工程

一.基本定义
软件开发是根据用户的需求构建一个软件系统或系统的软件部分的产品开发过程 。软件开发是一项系统工程,包括需求获取、开发规划、需求分析与设计、编程、软件测试和版本控制 。换句话说 , 软件开发是一系列最终构建软件产品的活动 。
第二,阶段划分
1.计划
对所要解决的问题进行总体界定 , 包括了解用户的需求和现实环境,从技术、经济、社会因素等三个方面研究和论证本软件项目的可行性,编写可行性研究报告 , 讨论解决问题的方法,估算可用资源(如计算机硬件、系统软件、人力等)的成本 。),可获得的收益和开发进度,并制定实施计划完成开发任务 。
2.分析
软件需求分析是对开发什么样的软件进行系统的分析和假设 。是对用户的需求进行去粗取精 , 去伪存真,正确理解 , 然后用软件工程开发语言(形式化功能规格说明,即需求规格说明)表达出来的过程 。这一阶段的基本任务是与用户确定要解决的问题,建立软件的逻辑模型,编写需求规格说明文档 , 最终得到用户的认可 。需求分析的主要方法包括结构化方法、数据流程图和数据字典 。这一阶段的工作是根据需求说明书的要求,设计并建立相应的软件系统架构,将整个系统分解为若干个子系统或模块,定义子系统或模块之间的接口关系,定义各子系统的具体设计,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划 。在任何软件或系统开发的初始阶段,都需要充分把握用户的需求,以便在后续的系统开发过程中优先考虑应该实现哪些功能,采用哪些规范,设置哪些限制 。系统工程师将在此基础上最终完成设计方案,并在此基础上定义后续的程序开发、系统功能和性能的描述和限制 。
3.设计
软件设计可以分为两个阶段:概要设计和详细设计 。实际上,软件设计的主要任务是将软件分解成模块 , 然后设计模块 。模块是指能够实现某种功能的数据和程序描述,以及可执行程序的程序单元 。它可以是一个函数、一个过程、一个子程序、一个独立的程序和带有程序描述的数据,也可以是一个可以组合、分解和替换的功能单元 。大纲就是结构设计,其主要目标是给出软件的模块结构,用软件结构图来表示 。详细设计的首要任务是设计模块的程序流程、算法和数据结构,次要任务是设计数据库 。常用的方法是结构化编程方法 。
4.编码
软件编码是指将软件设计转换成计算机可接受的程序,即以某种编程语言表达的“源程序清单” 。了解软件开发语言、工具的特点和编程风格有助于开发工具的选择和软件产品的质量 。
5.测试
软件测试的目的是用较少的成本发现尽可能多的错误 。实现这一目标的关键是设计一组优秀的测试用例(测试数据、功能和预期输出结果构成测试用例) 。如何设计一套优秀的测试用例 , 取决于对测试方法的理解 。不同的测试方法有不同的测试用例设计方法 。两种常用的测试方法是白盒法和黑盒法 。白盒法测试源程序,根据程序内部逻辑结构发现软件编程错误、结构错误和数据错误 。结构错误包括逻辑、数据流、初始化和其他错误 。白盒用例设计的关键是用较少的用例覆盖尽可能多的内部程序逻辑结果 。黑盒方法是基于软件功能或软件行为的描述,在软件接口、功能和结构中发现错误 。接口错误包括内部/外部接口、资源管理、集成和系统错误 。黑盒用例设计的关键是用较少的用例覆盖模块输出和输入接口 。
6.维护
维护是指软件开发(分析、设计、编码和测试)完成并投入使用后,软件产品的一些软件工程活动 。即根据软件的运行情况,对软件进行适当的修改以满足新的要求,并对运行中发现的错误进行修正 。撰写软件问题报告和软件修改报告 。
三 。典型的软件开发模型
软件开发模型是指软件开发的整个过程、活动和任务的结构框架 。它能够清晰、直观地表达软件开发的全过程,指定要完成的主要活动和任务,作为软件项目工作的基础 。
1.边做边构建并修复模型 。
在这种模式下,开发人员拿到项目后立即根据需求编写程序,调试后生成软件的第一个版本 。提供给用户后,如果程序出现错误 , 或者用户提出新的需求,开发者会再次修改代码,直到用户满意为止 。
这种开发方式对于写几百行的小程序来说还不错,但是对于任何规模的开发都不尽如人意 。主要问题是:

推荐阅读