学好软件工程就必须理解软件工程到底是干什么的,为什么需要软件工程,以及怎么干的!只有理解了软件工程的本质,才能更好的理解软件工程中各种工程手段和方法的目的。
个人开发模式 ---> 小作坊开发模式 ---> 软件工程开发模式
Why?为什么引入软件工程
What?软件工程是什么
How?软件工程具体要做什么
名词解释:
软件:计算机程序和相关文档。
软件分类:系统软件、支撑软件、应用软件。
软件危机:落后的软件生产方式无法满足快速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
软件危机表现:质量差,可靠性难以保证;成本难以控制,很少有在预算内完成;开发进度难以把握;可维护性差
软件工程:是一个工程学科,涵盖了软件生产的各个方面,从初始的构想到运行和维护。
软件过程:软件工程中所使用的系统化方法,是实现软件产品开发的活动序列。
软件过程活动:软件规格说明、软件开发、软件确认、软件演化
软件工程是生产软件的系统化的方法,它需要考虑现实成本、进度、可靠性等问题,以及软件客户和开发者的需要。所使用的特定的方法、工具和技术取决于开发软件的组织、软件的类型以及开发过程中所涉及的人。
软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。它包含3个要素:方法、工具和过程。
知识点:
- 1968年西德召开的国际会议上正式提出并使用"软件工程"这个术语。
- 软件工程7条基本原理:
-
用分阶段的生命周期计划严格管理
-
坚持进行阶段评审
-
实现严格的产品控制
-
采用用现代程序设计技术
-
结果应能清楚地审查
-
开发小组的人员应该少而精
-
承认不断改进软件工程实践的必要性
-
传统方法学
-
面向对象方法学
-
软件生命周期:由软件定义、软件开发和软件维护(或运行维护)3个时期。
-
软件定义:确定软件开发工程必须完成的总目标,确定工程的可行性
-
问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护
-
问题定义:明确要解决的问题是什么
-
可行性研究:
-
需求分析
-
总体设计
-
详细设计
-
编码和单元测试
-
综合测试
-
软件维护
-
软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。什么人(who)在什么时候(when)做什么事(what)以及怎么做(how)以实现某一个特定的具体目标。
-
常见软件生命周期模型:
瀑布模型
快速原型模型/演化模型/迭代模型
增量模型
螺旋模型
喷泉模型
RUP模型(Rational统一过程)
敏捷过程与极限编程(XP)
微软过程