1、福州大学 ·软件学院 ·软件工程系 王灿辉 • 软件工程主要讲述软件开发的道理 ,基本上是软件实 践者的成功经验和失败教训的总结。 • 软件工程的观念、方法、策略和规范都是朴实无华 的,平凡之人皆可领会, 关键在于运用 。 • 我们不可以把软件工程方法看成是诸葛亮的锦囊妙计─ 在出了问题后才打开看看,而应该事先掌握,预料将要 出现的问题,控制每个实践环节,并防患于未然。 • 研究软件工程永远做不到理论家那么潇洒:定理证明 了,就完事。 人们都有自己的世界观和方法论,能自 然而然地运用于生活和工作中。同样,软 件人员脑子里的 软件工程观念会无形地支 配其怎么去做事情 。软件工程三
2、十多年的 发展,已经积累了相当多的方法,但这些 方法不是严密的理论 。软件人员不应该教 条地套用方法,更重要的是学会 “ 选择合 适的方法 ” 和 “ 产生新方法 ” 。 • 软件工程概述、软件过程模型 • 系统工程、软件项目管理 &风险管理 • 软件需求分析、软件 (概要、详细 设 计 、编程、 软件测试和纠错 • 软件维护、变更管理、软件度量、软件质 量和软件质量保证、敏捷软件工程 • 面向对象方法 、软件复用、软件开发工具 • Evolution(进展 of Software • Description(定义 of Software • Software Quality(软
3、件质量 • Software Characteristics(软件特性 • Software applications(软件应用 • Software Crisis(现象、原因、解决方法等 • Software Myths(神话 • Software engineering(软件工程 • software life cycle(软件生存周期 • 生存周期模型 (life-cycle model • Process 、 Methods 、 Tools(CASE• A Generic View of Software engineering• Software Engineering
4、 Paradigm (Software Process Model • The Linear Sequential Model(waterfall• The Loop Model(循环模型 • The Prototyping Model(原型法 • The RAD Model(快速应用开发 • The Incremental Model(增量开发模型 • The Spiral Model(螺旋模型 • The Formal Methods Model(形式化 • Fourth Generation Technique(第 4代 • The Fountain Model(喷泉模型
5、• RUP(Rational Unified Process• intelligent model(智能模型 • System engineering • System Elements • Product Engineering(Identify the customer’s need, Feasibility Study, economic and technical analysis allocation, Establish cost and schedule constraints, Create a system definition • Project Plannin
6、g Objectives• Software Project Planning (1Software Scope (2 Estimation of Resources (3Cost and Effort Estimation (4Software Project Scheduling• 风险分析、管理和 RMMM 计划 1.需求工程概述 2.需求获取 3.需求分析&建模 — DFD、ERD、UML 4.需求规格说明&需求验证 5.需求管理 软件设计概述 软件设计相关的概念 体系结构设计 数据设计 接口设计 过程 (构件 设计 设计规格说明 &验证 1 Abstract
7、ion(抽象 、 Refinement(求精 2 Modularity(模块化 3 Information Hiding(信息隐藏 4 Function Independence(功能独立 5 重构:教材 P155 • Software design : (1data design (2architectural design (3interface design (4procedural design• 正式技术评审(FTR 编程语言 编程原则 编程风格 (技巧的使用、变量命名、注 解、代码缩进等 代码效率 保护性编程 冗余编程 (狭义 测试概述
8、测试方法 &技术 测试策略 (步骤 软件调试 &纠错 测试文档 1. Testing is a process of executing a program with the intent of finding an error. 2. A good test case is one that has a high proba-bility of finding an as-yet undiscovered error. 3. A successful test is one that uncovers an as-yet undiscovered error. Testing cann
9、ot show the absence of defects,it can only show that software errors are present. • 如果希望提高已有软件的质量并且提高商 业竞争力,却又无法靠维护来实现,只好 对已有软件进行全部或者部分的改造,这 种活动叫再生工程(Reengineering 。 • 再生工程(Reengineering 的三种类型:重构(Restructure 、 逆向工程(Reverse Engineering和 前向工程(Forward Engineering。 • 软件配置管理(SCM是一组在计算机软件的整 个生存周期内管理
10、变更的活动,可以把SCM看 作是应用于整个软件过程的软件质量保证活 动。SCM活动的目标:标识变更;控制变更; 保证正确地实现变更;向利害相关人员报告 变更。基线:已经通过正式评审和批准的规 格说明或产品,它可以作为进一步开发的基 础,并且只有通过正式的变更控制规程才能 修改它。基线是软件开发中的里程碑。 • 与 明确定义的功能和性能需求 的一致性 • 与明确成文的 开发标准 的一致性 • 与所有专业开发的软件所期望的 隐含的 特性(如:健壮性、可维护性、良好的 界面风格、可移植性等 的一致性 • 质量保证策略 • 软件质量保证活动 • 软件能力成熟度模型 CMM • 敏捷软件开发宣
11、言: 1、个体和交互胜过过程和工具 2、可工作软件胜过宽泛的文档 3、客户合作胜过合同谈判 4、响应变化胜过遵循计划 即,虽说上述右边的各项很有价值,但 左边的各项更有价值。 • 极限编程(XP • 自适应软件开发 • 动态系统开发方法 • Scrum • Crystal • 特征驱动开发 • 面向对象的软件开发方法OOSD概述 • 面向对象的基本概念(抽象、对象、 类、继承、封装、消息、多态性、 重载、动态绑定、永久对象、结构 与连接 • OOA和OOD基本概念 • 软构件(Software Component• 软件复用的定义及其目的等 • 构件库,基于构件的开发过程
12、特 点、风险 • 几种构件技术规范 • 软件(开发工具 • 软件开发环境(SDE,也称为软件 工程环境(SEE • 计算机辅助软件工程CASE • 软件工程无论怎么发展,都不是追 求质量的最优化,而是合理的成本 控制下的提高质量和开发效率,否 则就是误入歧途。不管教科书上的 理论多么美丽诱人,都要由实践来 验证。 • 软件工程人员有两种:卖代码的,卖代 码加上工程设计思想的。前一种是多 数,第二种永远是少数。在美国这两者 的区别是两万和二十万的区别:前者糊 口都有困难,后者可以买游艇;前者每 天通宵熬夜deliver,他们最大的奢求就 是躺在床上放松一些腰肌,后者可以抽 着雪茄谈哲学,精力充沛地逛party。 总复习到此结束! 福州大学·软件学院·软件工程系·王灿辉 2011.06.20 SOFTWARE ENGINEERING






