软件开发本身是一个复杂的工艺过程,牵涉到各种领域技术,大部分谈软件架构设计着重在软件系统架构本身,如何妥善的分工、如何解决开发上的各种问题、使用哪一种 Design Pattern 来解决问题、如何快速开发等等,只不过,真正有用的软件是对客户有用的软件、能替客户解决问题的软件,才是真正有价值的软件。
本篇文章,笔者介绍,在 UML 的系统分析设计领域里,如何从使用者需求出发,如何正确收集到使用者的需求,甚至与(Agile/Scrum)结合,在 Agile 或者 Scrum 强调的 Sprint ,我们再细分为,一个、到多个 反复设计 (Iterations),在每一个 Iteration 所要完成的需求里,又可以细切多个 Iteration Modeling。
文章中,将介绍如何正确地进行 Iteration Modeling. 与 Continuous Modeling,以便做到恰如其分的软件架构设计。
感谢许多人来上小弟的前次课程 ‘如何有架构性将现有 ASP.NET WebForm 转换为MVC? ’,这个课程也开到了第三梯次,小编预计在 2016/03/26 将在开全新的课程 ‘架构设计好简单系列 - 设计符合团队的范本精灵 (Project Template)’,这是小编重新设计的课程,若您没有听过小编的前一次‘如何有架构性将现有 ASP.NET WebForm 转换为MVC? ’课程也没有关系,因为前一课程比较偏重开发,本课程比较偏重管理面。
本课程的重点不在于转换为 MVC 这件事,重点在于架构性的思考,笔者会先带着大家将原本的网站分层、将各层 (Layer/Tier) 职责切割清楚,说明当我职责切分清楚时,前端其实不管是既有的 WebForm 应用程序,或是重新撰写的 MVC 应用程序,都可以操作这个Services层
架构师并不能只是了解自己的系统、元件、模组、.NET Framework、或是其他 Java Virtual Machine 软件执行平台即可,架构师最好还对 OS、甚至是网络系统、NLB、Load Balance 架构、Ap Server 或说是 (IIS/Apache) 、或甚至是硬件执行环境、RAID 等...有一定的了解,因为你所开发的是网站、你的网站会在这些环境中执行,一定会使用到这个硬件环境、网络资源 等等,那么当然你也得对网络相关通讯协定有些概念,否则、当出现问题时,你只能在旁边干瞪眼,而不知问题在哪,如何处理。
在进行架构设计时,善用一些 Third-Party 的工具或是元件,也可以达到笔者讲的:找出最省时、省力、又保有较佳的设计、维护姓、时效性,又兼顾团队的 Skill、以后维护也方便的一种方式。因为架构设计有时候也是一种全盘的考虑,不光是技术,有时,天、时、地、利、人和、环境,也会是考虑因素之一。
其实架构的设计是可以慢慢培养的,难是难在如何判断当下的情况,也就是说你的情况、专案的情况是如何,如何兼顾各种情况,又保有较佳的设计、维护姓、时效性,因为专案总是有 Schedule 的,同时有要考虑专案成员的 Skill。这就是架构设计的翘楚,因为许多状况都是非关技术,但也不代表技术不重要,技术可以靠书本取得,但许多当下判断你得靠经验来判断,这就不是书本上会告诉你的了。
在架构设计中,如果能够透过范本精灵的方式,如同微软的 Entity Framework 一样,提供一个 UI 界面,快速的将数据库拉出来为 实体 (Entity) ,也可以提供做为 MVC 的 ViewModel,且由 IDE 工具自动产生 Generator 好需要存取后端数据库的程式码,这样岂不是更完美
在这一次的公司内训中,笔者以 "Visual Studio 2012 与 ASP.NET 4.5 (新功能与开发介绍)" 这样的主题,介绍了整个在 Visual Studio 2012 中关于网页系统的开发与云端系统的开发与建置,其中,应观众要求,希望在课堂上的实作中,可以讲解关于 一般 ASP.NET Web Form 在开发上如何做简单的切割,并在需要时,又可以在最少的修改下,快速转换为 ASP.NET MVC