软件工程
软件工程是应用计算机科学、数学及 管理科学等原理开发软件的工程。它借鉴 传统工程的原则、方法,以提高质量,降 低成本为目的。
一、软件生命周期
二、软件开发模型
1.传统模型
瀑布模型、V模型、W模型、X 模型、H 模型
(1)瀑布模型
瀑布模型的优缺点:
优点:
- 有利于大型软件开发过程的人员的组织和管理
- 有利于 开发方法和工具的使用
- 提高了软件的质量和效率
缺点:
- 各阶段的划分完全固定,阶段之间产生大量文档,极大的增加了工作量
- 由于是线性的,用户只有等到末期才能见到开发成果,极大的增加了 开发的风险
- 早期的错误可能要等到开发后期的测试阶段才能发现,极大的增加了 修复成本
(2)V模型–瀑布模型的变型
(3)W模型– V模型的升级版
(4)X 模型
(5)H 模型
2.现代模型
原型模型、迭代式开发、增量式开发、组件式开发、敏捷开发
(1) 原型模型
原型开发指的是建立一个系统的早期版本的演习 (practice),它不必反映最终产品的所有性能,而只要反映 感兴趣的一些方面。
特性:
- 一个可实际工作的系统
- 没有固定的生存期,结局可能是用后立即被抛弃,或可能成为 最终系统
- 可服务于不同的目的,从需求分析到最终产品都可做原型
- 建立必须快,便宜
- 是包含修改、评价在内的完整重复过程
(2) 迭代式开发
- 迭代式开发也被称作迭代增量式开发或迭代进化式开发,是 一种与传统的瀑布式开发相反的软件开发过程,它弥补了传 统开发方式中的一些弱点,具有更高的成功率和生产率。
- 在迭代式开发方法中,整个开发工作被组织为一系列的短小 的、固定长度(如3周)的小项目,被称为一系列的迭代。 每一次迭代都包括了定义、需求分析、设计、实现与测试。 采用这种方法,开发工作可以在需求被完整地确定之前启动, 并在一次迭代中完成系统的一部分功能或业务逻辑的开发工 作。再通过客户的反馈来细化需求,并开始新一轮的迭代。
(3) 增量式开发
- 增量是指在软件开发过程中,先开发主要功能模块,再开发 次要功能模块,逐步完善,最终开发出符合需求的软件产品。
- 比如,需要开发一个类似WORD的软件,应该首先开发出文 件管理(保存、读取文件)、基本编辑功能、打印等,而其 它不太常用的功能可以最后开发。
- 增量式开发,就是首先把大型程序分解成若干小的模块,然 后对每个模块按照某种过程模型进行开发,最后把这些模块 逐步集成为完整的软件产品。
(4) 组件式开发
- 组件技术:代码复用性高、加快开发速度、 避免UI兼容性问题
(5) 敏捷开发
- 敏捷开发以用户的需求进化为核心,采用迭代、循 序渐进的方法进行软件开发。
- 在敏捷开发中,软件项目在构建初期被切分成多个 子项目,各个子项目的成果都经过测试,具备可视、 可集成和可运行使用的特征
- 换言之,就是把一个大项目分为多个相互联系,但 也可独立运行的小项目,并分别完成,在此过程中 软件一直处于可使用状态。
三、软件研发流程
其中软件测试流程包括:
测试需求分析–>测试计划–> 测试方案–>测试用例–>测试执行–> 测试报告
四、软件项目成员
- 项目经理(PM)
驱动整个项目的运转,负责制定计划,安排人力,管理进度,协调团队 - 架构师 / 系统工程师
技术专家,负责整个系统的体系架构的设计以及关键模块的设计 - 需求分析师/产品经理
将公司业务部门所给予的客户需求进行业务规则、业务范围、业务流 程等方面利用技术分析完之后,把需求输出工程师看得懂的语言 - 程序员 / 开发人员(DEV)
Java/C/C++/C#/Python/PHP/GO/Ruby,前端 设计、编写软件,并修复软件中的缺陷。 - 测试工程师( TM )
负责找出软件产品存在的问题并报告 - 运维工程师 / 技术支持 / 实施工程师
负责编写软件产品附带的文件和联机帮助文档 - 配置管理员(CMO)
负责管理程序员写的代码和测试写的文档资料,并组合成一个软件包 - QA
质量监管人员(项目管理)–负责整个项目的推进事件
五、软件开发沙龙
- 软件结构:B/S、C/S
- WEB服务器:Tomcat、Apache、JBoss、nginx Weblogic、WAS、IIS
- 数据库:MySQL、MSSQL、Oracle
- 软件环境:开发环境、测试环境、用户环境 生产环境
- 软件IDE:Eclipse、EPP,VS
- 常见开发语言:C/C++、Java、C#、.NET ASP、JSP、PHP、PYTHON、SHELL
- 常见测试环境搭配:计算机基础知识(二进制、进程/线程)、配置管理
- C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。通过这 种架构可以充分利用两端硬件环境的优势,将任务合理分配到Client端和 Server端来实现,降低了系统的通讯开销(实际应用:QQ、网游、手机App、火车票窗口购票系统、迅雷播放器)
- B/S结构(Browser/Server),是WEB兴起后的一种网络结构模式,WEB浏 览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能 实现的核心部分集中到服务器上,简化了系统的开发、维护和使用(淘宝、百度、12306购票网站、www.cctv.com、爱奇艺、页游)
- B/S和C/S的不同
- 进程/线程
- 多线程:软件或者硬件上实现多个线程并发 执行的技术,同一时间执行多于一个线程,进而提升整体 处理性能。