ITPub博客

首页 > Linux操作系统 > Linux操作系统 > OO过程与UML应用(1)

OO过程与UML应用(1)

原创 Linux操作系统 作者:chenliangqiao 时间:2009-01-04 16:54:45 0 删除 编辑

this article writen by www.writely.com

这是一个培训的笔记,上课的时候随便记的,没有经过整理。请跳跃式的阅读。

这位老师很能吹,特别鄙视中国的软件开发行业,崇拜国外的开发方式。
(能吹就可以做讲师吗?)


休息。

几个绝对不准
需求绝对不准变更
分析员绝对不准写代码
程序员绝对不准变更设计
任何代码绝对要经过单元测试
(可行与否?是不是也要做具有中国特色的软件开发管理?鬼子的东西有些是好的,但是也不能一味的照搬套用吧)

flashget被收购。

软件的成本很高。


可用性与可靠性

可用性,可以认为是对系统的整体评价。可靠性,指的是单个部件的可依赖程度。


需求是指系统必须符合的条件或具备的功能
功能性:系统无需考虑物理约束而必须能够执行的动作
非功能性
可用性
可靠性
性能
可支持性
设计约束
实施需求
接口需求
物理需求

需求都有改进的可能性。
需求的工作流程:
确定系统边界->确定用户界面
查找主角,查找用例,编写用例规约
一个好的用例:
Use Cases
Use cases are narrative descriptions of domain processes. They describe the sequence of
events an actor (user) performs to complete a task. They tell a story about the interaction
between a user and the software system. Uses cases help advance the design by aiding in
identification of classes, methods, and attributes (Larman 49).
The following use cases were written describing typical functions to be performed by the
Resource Management Software. These use cases were written using the requirements of the
system as outlined in the specifications document and as presented by our client. Note they are
essential use cases, meaning that they describe the user/system interaction without mentioning
any specific technologies.

Select Item
Purpose
The purpose of this use case is to allow the user to select an item such as: Client,
Project, Resource Allocation, Timeslot, Consultant, Machine, or Room. This use case will be
needed as a predecessor to most of the “Modify” and “Delete” use cases.

Overview
Any user will be able to perform. this use case. The use case begins when the user
selects an item from the list of items that the GUI displays (which will most likely be in the form
of a graphical tree component). After selecting an item, the system will verify that the item still
exists since it is possible that the user’s display is obsolete (out-of-sync with the actual
database). If this verification fails, the user’s display will be updated. Otherwise, the system will
collect the information about the selected item, and display it in view-only mode using the lowerright
panel of the GUI. The system will determine whether or not the user has permission to
modify the information. If so, a button labeled “Modify” will be displayed. The system will also
display the Project-View graph if a project was selected. This would be done by initiating the
“Generate Project-View Graph” use case.

Typical Course of Events
Actor Action
1. This use case begins when a user selects
an item shown in the display.


System Response

2. The system verified that the item still exists.
3. The system retrieves information about the
selected item. Some information deemed
“confidential” will be unavailable based on the
type of user.
4. The system will determine whether or not
the user has permission to modify the selected
item.
5. The system will display the information in
read-only mode. The “Modify” button will
optionally be displayed.
DESIGN REPORT – RESOURCE MANAGEMENT SOFTWARE PAGE 5
6. If a project was selected, the “Generate
Project-View Graph” use case will be initiated
by the system. Otherwise, this use case ends.
Alternative Courses
• Line 2: The item no longer exists. The display is refreshed and the information panel
located at the lower-right of the display will be cleared. This use case ends.
• Line 5: The system is unable to access the database. The system displays an error
message and the use case ends.

Alternative Courses
• Line 2: The item no longer exists. The display is refreshed and the information panel
located at the lower-right of the display will be cleared. This use case ends.
• Line 5: The system is unable to access the database. The system displays an error
message and the use case ends.

这个用例非常的详尽,很难做到这种程度。

用户:系统外部的,根系统进行交互的人或者物。是抽象出来的系统使用者。不一定跟现实中的人一一对应,是所有使用者的抽象。
与系统交互的用户
与系统交互的外部系统
与系统交互的外部硬件
特别注意:有些时候时间触发器也可看作主角(Actor)
凡是系统无法自主控制的部分,我们都可以认为是主角。
下面是一个时间触发器和电源同意作为主角的实例。(时间触发器和电源是系统无法控制的)



用例,我们把用例内部的流程成为事件流,使用序列图来描述。把用户传送给用例的信息,称为事件。
用例可以认为是系统的一个功能。

系统边界:系统能作什么,不能作什么。
系统的边界在许可的范围内定义得越小越好,可以减少系统的复杂度。
避免系统边界模糊和系统边界盲目扩大(往往有这样的问题,希望在一个产品上集成很多功能,这就会造成系统边界的
不断扩大,最后导致核心功能不突出,系统复杂度增大。)
数据:增,删,改,查

又开始举ATM的老例子了。用ATM交电话费,水费,电费的扩展。
说明用例Use Case-事件流
使用结构化的叙述格式每个use case只描述没有大的分支的行为的单个线索。
在事件流里要对事件流进行结构化说明
基本事件流
描述每个情节的行为者:目标语句对的顺序
假设之前的每一步都是成功的
备选事件流
将失败情节作为延伸部分
对于失败中的失败,用更长的前缀标记更深一层的失败情节

用例之间的关系:
泛化:
扩展:
包含:

泛化:
将特定用例抽象为更一般的用例,子用例继承父用例的属性、操作以及行为顺序,可以增加自己的属性和操作。
子用例与父用例有相同的业务目的

扩展:功能的延伸
一种依赖关系,客户用例依赖于基用例
客户用例向基用例(扩展点)插入额外的动作序列来增加增量行为
购物的扩展是查看帐单

包含:在客户用例的控制下,对提供者用例在客户用例的交互顺序中的行为顺序的包含
购物包含付帐

用例与场景
场景是用例的一个实例。

需求阶段:
区分内外,确定边界
明确事件,分析数据
确定角色,注意抽象和现实
划分用例,描述事件流

业界比较有名的几个类库:boost,stl,ace


Object Oriented Design

面向结构 vs. 面向方法
面向结构= 算法+数据结构
模块化,自顶而下。
抽象,复用。
复用:函数复用,类库的复用,组件的复用

拆分:纺锤状
用户接口-lib-系统接口
(委托,接口模式)

面向结构的经典代码:qmail,apache,

面向对象:
封装
相关的算法和数据结构封装到一个类中
继承
进行复用
多态
用来作行为复杂性,降低行为复杂度


更大规模的开发:组件,或者构件

架构模式
Layers:分层架构模式,系统分解成不同级别的抽象。各个层次可以便于更换,或者复用。
越接近硬件的在底层,越接近用户的在顶层
Model-view-controller (M-V-C):
Pipes and filters:用于服务器
Software Bus:软件总线,插件机制的基础,总线负责插件之间的通讯。网络扩展,总线在网络上,
机器作为节点。典型的软件如Eclipse,CORBA,ICE(CORBA的继承者),定规则的方法行不通,
可能的解决方案是webservice,XML不是任何语言,基于描述的。

MVC是最常用的架构模式:


Link URL: http://imcc.itpub.net/post/20778/198842

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17237043/viewspace-526521/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2009-01-04

  • 博文量
    69
  • 访问量
    510283