一、软件的定义
软件是指一系列按特定顺序组织的计算机数据和指令** 。一般来说,该软件分为系统软件、应用程序软件和介于两者之间的中间件。该软件不仅包括可以在计算机上运行的计算机程序(这里的计算机是指广泛的计算机),而且与这些计算机程序相关的文档通常被认为是该软件的一部分。简单地说,软件是程序添加文档 ** 体。
二、软件的特点
1.无形,无物理形态,只能通过运行条件了解功能、特性和质量
2.软件渗透了大量的脑力劳动。人的逻辑思维、智能活动和技术水平是软件产品的关键
3.软件不会像硬件那样老化和磨损,但存在缺陷维护和技术更新
4、软件的开发和运行必须依赖于特定的计算机系统环境,对于硬件有依赖性,为了减少依赖,开发中提出了软件的可移植性
5.软件可复用,软件开发容易 ** ,从而形成多个副本
三、软件开发流程
软件开发是根据用户要求在软件系统或系统中构建软件部分的过程。软件开发是一个系统工程,包括需求捕获、需求分析、设计、实现和。软件通常是用某种程序设计语言来实现的。软件开发工具通常可以用来开发。
3.1软件开发流程总图
3.1可行性分析和项目开发计划
软件可行性研究的目的是在尽可能短的时间内确定软件项目是否足够开发,是否值得开发。
(1)技术可行性是指在确定现有资源(软件、硬件、技术人员)的条件下,项目能否实现。
(2)经济可行性是估算开发成本,了解经济效益评估,确定开发项目是否值得投资开发。
(3)社会可行性是指要开发的项目是否存在侵权、障碍等责任问题,开发项目的运行模式是否在用户组中可行,现有的管理体系、人员质量和运行模式是否可行。
在确定可行性分析后,应开始编写文档:可行性研究报告和项目开发计划,项目开发计划是一个管理文档,解释项目的主要工作、双方的责任、项目完成期限等条件。
3.2需求分析
需求分析是指开发人员准确理解用户需求,进行详细调查分析,将用户的非正式需求陈述转化为完整的需求定义,然后从需求定义转化为相应形式的功能规范(需求规范说明书)的过程。
需求分析的任务:
3.2.1问题识别
(1)功能要求:开发的软件必须具备哪些功能。
(2)性能要求:待开发软件的技术性能指标。
(3)环境要求:软件运行所需的软硬件要求。
(4)用户界面需求:人机交互模式等。
(5)分析与综合,导出软件逻辑模型,逐步细化软件功能,划分各子功能,以图文结合的形式建立系统逻辑模型。
(6)编制文件《需求规范说明书》:以规范的方式描述双方的共同理解和分析结果,作为今后工作的基础。
初步用户使用手册件的用户功能界面和用户使用的具体要求。
确认计划原计划。
3.2.2需求分析方法:结构化分析方法,简称SA,这是一种分析数据流的方法。该方法采用简单易读的符号,根据软件中数据传输和变换的关系,自上而下逐层分解,描述满足功能要求的软件模型。
描述工具:数据流图(DFD):描述系统中数据流动和处理的工程。
数据字典(DD):服务于分析人员查找数据流图中名称的详细定义。
3.3概要设计
概要设计是要软件“做什么”的逻辑模型变换为“怎么做”的物理模型,把软件需求转换为软件表示,描述软件的总的体系结构。
3.3.1总结设计任务
(1)软件系统结构的设计
根据功能将复杂的系统划分为模块
●确定每个模块的功能
●确定模块之间的调用关系
●确定模块之间的接口
●数据结构和数据库设计
除了控制结构的模块设计外,数据结构和数据库设计对于大型数据处理软件系统也更为重要。
(2)编制概要设计文件《概要设计说明书》和《数据库设计说明书》
3.3.2软件结构设计优化标准:
(1)划分模块时,尽量保持模块的相对独立性,合并功能过于简单相关的模块,合并时消除重复功能。
(2)具有判断功能的模块应尽可能接近受其影响的模块。
●软件结构的深度、宽度、扇入、扇出应适当。
●模块的大小应适中。
●模块的接口应简单、清晰、清晰、易于理解、易于实现、和维护。
3.4详细设计
3.4.1详细的设计任务:
●对每个模块进行详细的算法设计总结设计,描述每个模块处理过程的详细算法。
●设计模块中的数据结构,准确定义需求分析和概念数据类型。
●对数据库进行物理设计
●编写详细设计说明书
3.5编码
编码是在前一阶段详细设计的基础上进行的编程。它是对详细设计的处理过程的描述,转换为基于某种计算机语言的程序。
3.5.1选择程序设计语言:
(1)项目的应用领域
(2)软件开发的方法
(3)软件执行的环境
(4)软件开发人员的知识
3.5.2程序设计风格
(1)源程序文档化(编码规范)
(2)数据说明(注释)
(3)句子结构
(4)输入输出(结束标志)
(5)效率
3.6
阶段的基本任务是根据软件开发的文档数据和程序的内部结构,精心设计一组用例,找出软件的潜在错误和缺陷。
3.6.1软件原则:
(1)用例由输入数据和预期输出数据组成。
(2)用例不仅要选择合理的输入数据,还要选择不合理的输入数据
(3)除了检查程序是否做了应该做的事情外,还要检查程序是否做了不应该做的事情。
(4)长期保留试验用例。
(5)程序员避免自己的程序。
3.6.2方法:
(1)静态:不在机器上运行,程序采用人工检测和计算机辅助分析进行检测。
(2)动态:
●黑盒:人员不考虑程序的内部结构和处理过程,只在软件接口进行,检查程序是否符合功能要求。
●白盒:人员必须了解程序的内部结构和处理过程,程序中尽可能多的逻辑路径,检查内部控制结构和数据结构是否错误,实际运行状态是否与预期状态一致。
3.6.3过程:
(1)单元:源程序中的每个程序单元,检查每个模块是否正确实现规定的功能,从而在编码或算法中发现模块的错误。
(2)集成:检查与设计相关的软件系统结构。
(3)确认:主要检查已实现的软件是否符合要求规范说明书中确定的各种要求。
(4)系统:将确认的软件与其他系统元素(其他支出软件、硬件等)结合起来进行。
3.6.4版本发布:
分为a、b、c三个阶段
(1)a 阶段是的初始阶段,内部人员完成,称为:alpha,alpha主要取决于是否有功能缺失或系统错误。
(2)b 阶段发布到公网或通过其他方式发送给普通用户,称为:beta。主要看客户对软件外观、使用方便等的反应。
(3)c 阶段称为:RC该版本已完成所有功能并删除了大部分功能bug,到这个阶段只会去除一小的bug,软件不会有大的变化。最后,正式版本发布,阶段结束时,将添加正式版本的软件名称--final
3.7软件维护
软件投入使用后,软件维护阶段是软件生存周期中最长的阶段。
软件维护内容:
(1)校正维护:软件交付使用后,由于软件开发过程中产生的错误在程序中没有完全发现,这些隐含的错误会在某些特定的使用环境中暴露出来。
(2)适应性维护:随着计算机的发展,计算机软硬件不断变化,数据环境也在变化。为了使应用软件适应这种变化,称为适应性维护。
(3)完善性维护:因用户对软件提出新的功能和性能要求而对软件进行的维护称为完善性维护。
(4)预防性维护:修改软件称为预防性维护,以提高软件的可维护性和可靠性。