本人软件工程毕业,虽说有2年工作经验,但也没用上啥软件工程方法,文档都是代码干出来再补,可能文章的观点纯属虚构,大概说说软件设计,至于软件管理 没有。
设计过程来说,需求、分析、设计、编码、测试,当然按照RUP讲得,这些阶段是贯穿整个软件过程,而且不断增量迭代;
大概分开说说,需求收集,用例图,流程图,数据字典啥的;分析阶段,领域模型,数据流图,ER图,时序图,状态图;设计阶段,逻辑架构、物理架构、运行架构、数据架构、开发架构,编码阶段、测试阶段体会不深,请参照《RUP-统一软件过程》。
设计的各个阶段,每个阶段的建模都是阶段产品,然后输入下个阶段再搞;建模本身而言,是一种思维工具,而且不限于哪个阶段,你在需求阶段,也会做原型,画数据流图,编码的时候,也可以画状态转换图。|
来张图:
本人除了做了几个企业项目,还写了一个框架,一个中间件,先声明:下面观点纯属虚构。
作为小程序员,具体的实施没辣么复杂,你把数据流图、领域模型做完,需求跟设计阶段就差不多完了;然后设计阶段, 把逻辑、物理、数据、开发架构做完,基本就搞完了。
换个角度来讲,面向对象来说,对象-对象协作-组件-组件协作-系统,当然面向服务本文没有;再简单点说,确定了对象和线程,不就好了嘛 -- 你有了职责(需求),搞出对象来,对象协作应用点设计模式(其实一般用不上);然后推导出算法流程,确定线程模型,把你的对象跟线程结合,收工。
稀里哗啦说了半天,其实你去看看ThreadPoolExecutor,辣个东西就是对象+线程,简单又好理解;要是想再了解下子,也可以瞅瞅tomcat,当然别忘了zookeeper,这两不是一个线程模型。
来张图:
最后来总结下子,确定职责、推导对象,确定算法、推导线程,这地方的算法不是数据结构+算法模式,而是解决问题的步骤,技术点来说网络IO、磁盘IO、各种计算。
不好意思还没编完,设计就是组件+协作,线程就是充分利用cpu,其实设计里面包含线程(运行架构),但是线程模型实在太重要,如果对象设计的不好,可以慢慢重构,线程模型选择错误,就得推倒重来,当然这是基于咱小程序员来讲,最后一句,我们web开发一般不会自己处理线程模型。
转载于:https://my.oschina.net/lobo/blog/850172