什么是软件
· 软件(Software)是计算机系统中与硬件相互依存的一部分,它包括程序、数据以及相关文档。
· 软件(Software)是一系列按照特定顺序组织的计算机数据和指令的集合
·程序 是按事先设计的功能和性能要执行的指令序列
·数据是使程序能正常操作信息的数据结构
·文档是与程序开发、维护和使用有关的图文材料
软件的特征
- 软件是一种逻辑实体,不是物理实体,它具有抽象性
- 软件的生产和与硬件不同,在它的开发过程中没有明显的制造过程
- 在软件的运行和使用期间,不会磨损和老化
- 软件开发和运行常受到计算机系统的限制,对计算机系统有着不同的依赖性
- 软件的开发至今尚未摆脱手工方式
- 软件本身是复杂的:实际问题的复杂性和程序逻辑结构的复杂性
- 软件成本想当昂贵
软件的分类
按软件的功能进行划分
(1) 系统软件
a. 操作系统
b. 数据库管理系统
c. 设备驱动程序
d. 通信处理程序等
(2).应用软件
a. 办公软件:文本编辑、数据归档、绘图等
b. 企业应用:核心业务系统、网银、销管系统等
c. 互联网软件:及时通讯、网络浏览、客户端下载工具等
d. 多媒体软件:媒体播放器、图像编辑软件、音讯编辑软件、计算机游戏等
e. 分析软件:计算机代数系统、统计软件、数字计算计算机辅助工程
f. 商务软件:会计软件、企业工作流程分析、客户关系管理、企业资源规划、供应链管理等
(3).支撑软件
a. 编译器
b. 存储器格式化
c. 支持需求分析、设计、实现、测试和管理软件
d. 程序库系统
e. 驱动管理
f. 网络连接按软件的规模进行划分
(1)微型(一人参与、研制时间不超过1个月,源代码大约不超过500行)
(2)小型(一人参与、研制时间不超过半年,源代码大约不超过2000行)
(3)中型(不超过5人参与、研制时间不超过2年,源代码大约不超过50k)
(4)大型(参与人数大约在20人左右、研制时间在3年左右、源代码行数大约在100k左右)
(5)超大型(参与人数大约在5k人左右,研制时间在10年左右,源代码行数大约在10000000左右)按软件的工作方式划分
(1)实时处理软件
(2)分时处理软件
(3)交互式软件
(4)批处理软件按软件服务对象的范围
(1)项目软件
(2)产品软件按软件使用频度
(1)一次使用
(2)频繁使用
软件工程 → 工程学+数学+计算机科学+管理学
软件生命周期
软件的产生直到报废的生命周期
- 问题的定义以及规划(和软件开发计划):此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
- 需求分析(需求分析说明书和初步的用户手册):在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。这步很重要
- 软件设计(概要设计、详细设计):此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。
- 程序编码(提交源程序及清单):此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
- 软件测试(提交软件维护测试报告)在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试(白盒)、集成测试(黑盒,功能测试、强度性测试)以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。
- 运行维护(提交软件维护报告)软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。
软件生产过程
一、软件定义
- 问题定义
· 要确定用户要求解决的性质、工程的目标和规模。 - 可行性分析
· 对上一阶段所确定的问题行得通的解决方法有经济可行性、技术可行性、法律可行性、不同的方案 - 需求分析
· 确认系统必须具备的功能和性能,系统要求的运行环境,并且预测系统发展的前景
· 需求规格说明书
二、软件开发 - 总体设计(概要设计)
· 设计出实现目标系统的几种可能的方案,推荐一个最佳方案 - 详细设计
·设计出程序的详细规格说明书 - 编码和单元测试
· 写出正确的容易理解、容易维护的程序模块
· 仔细测试编写出的每一个模块 - 测试(综合测试)
· 集成测试和验收测试,现场测试或平行运行 - 软件发布
三、软件维护 - 软件运行
- 软件维护
· 使系统持久地满足用户的需要
· 改正性维护,适应性维护,完善性维护,预防性维护
3W准则
在软件工程中,3W准则通常指的是What、Why、How。
What:主要关注软件的功能和目标,即软件要做什么。
Why:主要分析问题的本质原因,即为什么这么设计软件。
How:主要关注角色是谁,即如何解决问题。
这种3W方法看似简单,但其实非常有效,可以应用在很多领域,例如项目管理、需求分析、缺陷处理等。
经济可行性
进行成本效益分析,评估项目的开发成本。
基于计算机系统的成本由四部分组成
- 购置软,硬件及有关设备费用
- 系统开发费用
- 系统安装和维护费用
- 人员培训费用
软件开发模型
软件测试笔记(一) - 简书 (jianshu.com)