2006-11-14 ―― 2006-11-16
第一章 软件和软件工程:
软件工程定义:
软件工程是在成本、时间及其他约束条件下,通过对大型、高质量的软件系统的系统化的开发与演进,从而解决客户问题的过程。
软件工程项目中常见的活动,这些活动包括需求分析、设计、编程、质量保证和项目管理。
一.需求与规格说明:
整个过程可能包含以下活动:
1.领域分析:了解相关的背景信息,以便理解问题并做出明智的决定。
2.定义问题:通过准确地确定需要解决的问题,限定系统的范围。
3.需求收集:收集所有人对该软件应该做什么的意见。
4.需求分析:组织收集到的信息,确定软件真正应当做什么。
5.需求规格说明:编写一系列准确的结构定义该软件应当做什么。这些规程应该从用户角度描述软件行为,而不应该描述任何实现细节。
二.设计
设计是决定如何利用现有技术实现需求的过程。设计阶段包含的重要活动有:
1.确定哪些需求应该用硬件实现,哪些需求应该用软件实现。
2.决定如何将软件划分成子系统,这些子系统如何相互影响。这个过程通常称为软件体系结构,即架构。
3.确定如何构造每个子系统中的详细内容。这些详细内容中包括数据结构、类、算法和过程。这个过程通常称为详细设计。
4.确定用户与系统交互的详细方式。这被称为用户界面设计。
5.确定数据库或文件中的数据如何在磁盘上存储。
三.建模
建模是创建表示领域或软件的过程。需求分析与设计可以使用各种不同的建模方法,其中包括:
1.用例建模。表示软件用户执行的一系列活动。
2.结构化建模。表示领域或软件中的类和对象。
3.动态和行为建模。表示系统可能出现的状态、可能执行的活动以及构件之间如何交互。
四.程序设计
五.质量保证
六.部署
部署包括发布与安装软件以及系统的其他部件。
七.过程管理。
第二章 面向对象概述:
面向对象范型定义:
面向对象范型是一种解决问题的方法,其中所有的计算都是针对对象进行的。对象是通常被称为类的程序设计结构的实例。类是一种数据抽象,它包含着作用于对象上的过程抽象。
确定对用户重要的对象,并找出这些对象的结构、关系与行为的过程称为面向对象分析(Object-Oriented Analysis , OOA )。
进行面向对象分析时,不需要首先了解对象是怎样用某种程序设计语言表示的细节,也不需要知道它们存储在内存还是硬盘。这些问题最好是在面向对象分析完成之后,转入面向对象设计(Object-Oriented Design, OOD)时再考虑。
第三章 基于重用技术进行软件开发:
如何可行,软件工程师应该避免再次开发别人已经开发出来的软件。换句话说,应该尽量重用他人的工作。
软件产品的质量等价于它所使用的质量最低的可重用构件的质量,这就是为什么许多开发人员会拒绝重用他们缺乏信心的构件。为了克服这一点,对可重用构件的开发应该象完整的应用程序开发那样。你需要为构件做适当的领域和需求分析,正确地进行设计并编写文档,通过测试和审查保证其质量。
框架是一个可重用软件,实现了一般问题的通用解决方案。它提供了可应用于不同应用程序的公共功能。
框架的关键原则如下:完成不同的但有相关性任务的应用程序往往有相似的设计-------特别是构件的交互模式往往是非常相似的。即使在完全不同的领域中的应用程序也符合这一规律。为了开发一个框架,需要识别出公共的设计元素,并且以可重用的方式开发软件实现这些设计元素。
第四章 需求工程:
领域分析:
领域分析是软件工程师了解背景信息的过程。
没有坚实的领域分析,任何重大的软件项目都不应当进行,对应用领域的深入理解极大地提高了成功的几率。
一旦软件工程师对领域有了真正的理解,他们就可以进行需求分析了,这包括定义待解决的问题以及开发什么软件来解决它。然而,领域分析永远也不应该结束:软件工程师有责任在开发过程中不断增进他们的理解。
需求:
需求是关于系统将要完成什么工作的一段描述语句,它们必须经过所有相关人员的认可,其目的是彻底地解决客户的问题。
我们将一组需求的集合称为需求文档。
需求可以划分成两种主要类型,即功能性的和非功能性的。需求文档通常包括这两方面的内容:
1. 功能性需求:
功能性需求描述系统应该做什么,即用户或其他系统提供的服务。
2. 非功能性需求
非功能性需求是开发过程中必须遵守的约束。它们限制可以使用的资源和软件质量的各个方面,所以它们往往会限制软件工程师做决策的自由度。
原型化:
原型是一段程序,它被快速地实现且仅包含一小部分完整系统预计实现的功能。它的目的是使软件工程较早地获得用户对其设计思想的反馈,从而完成需求收集。
最常见的原型类型是使用快速原型化语言建立对系统用户界面的“模拟”。
用户可以在一定程度上实际使用快速原型。但是,原型除了用户界面以外通常不包括其他内容------即它通常不执行计算、访问数据库或与其他系统交互。
大型系统的需求文档通常按照层次结构安排。顶级文档描述整个系统、各个子系统以及子系统之间的交互方式。还有独立的文档描述每个子系统,有时是子系统的子系统。当谈到“系统”时,指的是当前开发小组正在完成的任务。
第五章 用类进行建模:
UML有多种类型的图,包括:
1. 类图,描述类及类之间的关系
2. 交互图,包括两种类型:顺序图和协作图。这两种图通过描述对象之间如何交互来 展示系统行为。
3. 状态图和活动图,这两种图展示了系统内部是如何运作的
4. 构件和部署图,展示如何从逻辑上和物理上安排系统的不同构件。
建议的建模步骤:
1. 确定第一个候选类的集合
2. 从最重要的类开始,添加那些明显需要的关联和属性
3. 求出最清晰的泛化。
4. 列出每个类的主要职责。这是每个类所执行的函数的简单声明。
5. 根据职责,确定必须的操作。
6. 重复整个过程,检查模型。
确定类:
发现系统中领域类的初始集合的一个简单技术是查看需求描述这样的原始材料。从该材料中抽取名词和名词短语。
第九章 软件架构与设计
设计的定义:
在软件领域,设计是解决问题的过程,其目的是找到并描述一种方法,它实现系统的功能性需求,不违反由非功能性需求所引起的限制(包括预算和最后期限),同时还要遵循高质量通用原则。
在软件工程中,需求分析过程确定系统的职责。规格说明生成过程确定实现系统所需构件的接口。设计过程确定构件如何实现。