惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
腾讯CDC
T
Threatpost
L
Lohrmann on Cybersecurity
P
Proofpoint News Feed
The Cloudflare Blog
博客园 - 聂微东
MyScale Blog
MyScale Blog
M
MIT News - Artificial intelligence
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
SegmentFault 最新的问题
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Project Zero
Project Zero
Simon Willison's Weblog
Simon Willison's Weblog
S
Schneier on Security
Spread Privacy
Spread Privacy
The GitHub Blog
The GitHub Blog
D
DataBreaches.Net
S
Securelist
Schneier on Security
Schneier on Security
Microsoft Azure Blog
Microsoft Azure Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
博客园 - 叶小钗
量子位
I
InfoQ
J
Java Code Geeks
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
博客园_首页
C
CERT Recently Published Vulnerability Notes
I
Intezer
Y
Y Combinator Blog
T
Tailwind CSS Blog
Microsoft Security Blog
Microsoft Security Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
A
About on SuperTechFans
A
Arctic Wolf
阮一峰的网络日志
阮一峰的网络日志
P
Proofpoint News Feed
G
Google Developers Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Vercel News
Vercel News
PCI Perspectives
PCI Perspectives
The Last Watchdog
The Last Watchdog
月光博客
月光博客

博客园 - 旭日东生

微软项目开发团队每个角色的一天是如何度过的【转】 如何对软件项目团队成员进行角色和岗位的划分【转】 C# 委托的妙文【转】 NHibernate初体验[转] 配置NHibernate有三种常见的配置方法[转] - 旭日东生 - 博客园 软件系统与管理工作的执行、监督问题 面向对象设计的一些个人认知阶段性总结 代码编码规则检查工具Microsoft StyleCop 4.2 [转]为什么用例不是“功能”? ms-sql递归调用 有关数据完整性的教训和转一篇文章 转《马云和爱迪生:究竟谁“欺骗了世界”》以及我的个人想法 转而告之:马云给雅虎员工作的精彩演讲:爱迪生欺骗了世界! 哈佛管理论丛:谁背上了令人讨厌的猴子 关于《敏捷软件开发:原则、模式与实践(C#版)》 更新数据库所有表的某一个指定字段 功能自动化测试工具列表大全【转】 企业内部实现软件测试自动化的方案探讨 一些有用Transat-SQL技巧 [持续更新中]
有关UP(unified process)的疑问和胡思乱想
旭日东生 · 2008-07-21 · via 博客园 - 旭日东生

在UP(unified process)中,迭代过程对于需求的收集和分析都是渐进式的,特别是在初始阶段,在需求并不是十分确定和明确,仅仅分析了10%的用例的情况下就开始实际的编码工作,是否会造成编码工作的重复和浪费呢?在某些情况下,接下来的迭代周期新发现和收集的需求和业务流程可能会大量的调整甚至推翻前面所做的编码工作。存在多数的情况可能是:因为第一次迭代对需求了解、分析不够全面,导致第一次迭代中所作的设计并没有留足足够的变化性和可扩展性,当有新的需求加入或者进一步的分析后,发现某些因为存在可预见的变化需求时,想要封装此些变动时就需要更改前面实现了的代码,当然,也可以说这是一种必然的重构了,但是,如果在项目开始之初就了解多一点需求并深入一点的分析也许是可以避免这种重构的啊。
    面向对象设计原则:        面向抽象编程而不是面向实现编程。
        对扩展开放对修改封闭。
    这两个原则都是需要我们能够提炼出抽象部分,并明确潜在的变化部分才能够对症下药的,我们不可能假设系统所有的地方都是潜在变化的,并创建抽象类留足扩展空间的,这样设计出来的系统是不可想象的,所以我么必须找到系统中相对稳定的部分,当然,全面的需求收集是不可能的,因为需求永远都在变化中,但是,在一段可预见的时间和版本控制上,我们必须假定系统的需求到某一个程度是应该封住并在假定的某些条件下是不再演化了的,如果不这样就不能停止开发也不能发布相关的版本,对一个系统来说,不可能所有的需求(业务)在一定时间内都在变化,总会存在着一些相对稳定的业务,如果对需求(业务)不做充分的收集和分析,又怎么能够抽象出系统相对稳定的部分和相对容易变化的部分,并做好相应的设计方案,封装变化点呢?所以对UP这个在需求的把握上我还是存在很多疑问,希望继续深入能找到答案。
    也许使用UP过程的团队对正在开发的项目的业务领域有相当的经验,这样在需求收集不是很充分,分析不是很深入的情况下开始编码可能根据经验可以留出适当的扩展空间,在这里就彰显经验的重要性了,一个老到的系统分析和结构师会比较容易嗅出需求(业务)中比较容易变化的地方,桥过多了,路还走的少吗?这也可以解释一般的软件公司都会专注于某一块领域里的软件开发的原因,第一个是有沉淀下来的基础框架,第二就是经验了,第三:客户也比较容易开拓
    在没有得到更好的答案前,我只能这么想:UP也好,瀑布也好都是软件工程的一种方法过程,不一定在所有的项目中都必须使用相同的软件工程方法,应该量体裁衣,寻找适合的方法即可,多一种方法只是多一种选择而已,软件工程没有银弹,当是可以有很多子弹。
    对于UP还必须继续多看书。

posted on 2008-07-21 00:14  旭日东生  阅读(243)  评论()    收藏  举报