1、什么是软件工程

软件工程是一门研究   用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言数据库软件开发工具系统平台标准设计模式等方面。

软件工程是应用计算机科学数学逻辑学管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学数学用于构建模型与算法工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。

 

2、软件工程基本原理

  确保软件产品质量和开发效率。

(1)用分阶段的生命周期计划严格管理

  (2)   坚持进行阶段评审。

(3)实现严格的产品控制。 包括需求变更,文档,代码。

(4)采用现代程序设计技术

(5)结果应能清楚的审查。

(6)开发小组人员少而精。

  (7)勇于承担责任,错误,不断改进软件工程。

3、软件生存周期

 (1)  可行性分析与项目开发计划

      参加人员:用户,项目负责人,系统分析师。

      输出:可行性分析报告和项目开发计划。

(2)  需求分析

     参与人员:用户,项目负责人,系统分析师。

    输出:软件需求说明书。

(3) 概要设计

    参与人员:系统分析师,软件设计师。

    输出:概要设计说明书,数据库设计说明书。

(4) 详细设计

    参与人员:软件设计师,程序员。

    输出:详细设计文档。

(5) 编码

    输出:源程序清单。

(6) 测试

   参与人员:另一个部门或单位的软件设计师或系统分析师。

   输出:软件测试计划,测试用例,软件测试报告。

(7)维护

 

 

4、软件开发模型

 准确说是软件过程模型,是软件开发全部过程,活动和任务的结构框架。

4.1 瀑布模型

 

 

4.2 原型模型

 

 

4.3 增量模型

 

 

4.4 螺旋模型

 

 

4.5 喷泉模型

 

4.6 极限编程

原则:快速反馈,简单性假设,逐步修改,提倡更改,优质工作。

极限编程(Extreme Programming,简称XP)是敏捷软件开发方法的代表。

体现:

(1)沟通(Communication):即追求有效的沟通。XP强调项目开发人员、设计人员、客户之间等有效地、及时地沟通,确保各种信息的畅通。

(2)简单(Simplicity):即实现最简单的可行方案。XP认为应该尽量保持代码的简单,只要能够满足工作需要就行,这样有利于代码的重构和优化。

(3)反馈(Feedback):即快速有效的反馈。要求不断对当前系统状态进行反馈,通过反馈,达到迅速沟通、编码、测试、发布的目的。

(4)勇气(Courage):即勇于放弃和重构。对于用户的反馈,XP程序员要勇于对自己的代码进行修改,即使有些修改可能会使得原来已经通过的测试又出现错误,但是经过团队的共同攻关,最终必然会取得满意的效果。

最佳实践:快速指定计划,随着细节的不断变化而完善。小型发布(早交付)。简单设计(只考虑当前的需求)。测试先行。

                  持续集成(经常发版),每周工作40个小时。

 

5、软件测试

测试的目的:以最少的人力和时间发现潜在的各种错误和缺陷。

测试过程:(1)制定测试计划。(2)编制测试大纲。(3)设计和生成测试用例。(4)测试。(5)生成测试报告。

测试步骤:单元测试,集成测试,确认测试,系统测试。

单元测试:

集成测试:自顶向下集成测试,自底向上集成测试。回归测试,冒烟测试。

确认测试:α测试,β测试。

系统测试:恢复测试,安全性测试,压力测试,性能测试,部署测试(视情况而定)。

 

6、项目管理

甘特图:

 

PERT(计划评审技术,工程网格图)图:

 

 

ES = Earliest Start time (最早开始时间)
EF = Earliest Finish time(最早结束时间)

LS = Latest Start time(最晚开始时间)
LF = Latest Finish time(最晚结束时间)

TF = (总浮动时间,总时差)
FF = (自由浮动时间,自由时差)

其他图表推荐:https://zhuanlan.zhihu.com/p/142318015

 

7、风险管理

特性:不确定性和损失。

管理:风险识别 ,风险预测,风险评估,风险控制。

8、软件质量

   要求:必须满足用户规定的要求。 遵循规定标准所定义的一系列开发准则。满足隐含的需求(代码好理解,好维护,好扩展)

9、软件度量

 软件度量是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。没有软件度量,就不能从软件开发的暗箱中跳将出来。通过软件度量可以改进软件开发过程,促进项目成功,开发高质量的软件产品。

维度:

(1) 项目度量 : 规模,成本,满意度

(2) 产品度量:质量

(3) 过程度量:管理,流程,内容

10、软件工具与软件开发环境

   目的:以低成本,高效率的方式辅助软件的开发。

posted on 2023-07-20 15:53  毛会懂  阅读(71)  评论(0编辑  收藏  举报