软件构架师

          从一个架构师的工作来看,他面对的基本上有七大问题:商业问题、系统问题、子系统问题、构件问题、技术问题、流程问题、项目管理问题。其中,前五项是一个架构师主要负责解决的。这里我尝试提几个问题,让大家检验一下自己是否具备解决这些问题的能力。   

 

软件构架师的职责:确保系统设计能满足客户的要求。

如果让你来设计一个“基于Web的应用“,你首先问我们的页面布局和导航树,还是问下面的问题:

1.谁提供应用主机托管?托管的环境有什么技术限制吗?

2.你想运行在Windows服务器上还是在LAMP栈上?

3.你想支持多少并发用户?

4.应该需要怎样的安全性?有需要保护的数据吗?应用将运行在公网上还是在私有的内部网上?

5.你能为这些答案排列优先级吗?例如,用户数是否比响应时间更重要?

说明:什么是LAMP?

LAMP 架构 LAMP(linux,apache,mysql,php)是 linux 系统下最常用的网站架构。 搭建 LAMP 环境有两种 LAMP 的架构的搭建,rpm软件包搭建LAMP环境,源代码包安装搭建LAMP环境。

 

作为一名构架师,你首先问我们想从系统中得到什么?有怎样的优先级,在实际项目中,你会找出其他的利益相关人。典型的利益相关人和他们的关注点包括:
1.投资人:他们想知道项目是否能够在给家的资源和进度约束下完成。
2.构架师、开发人员和测试人员,他们首先考虑的是最初的构建和以后的维护与演进。
3.项目经理,他们需要组织团队,制定迭代计划。
4.市场人员,他们想通过品质特点实现与竞争者的差异化。
5.用户,包括最终用户、系统管理员,以及安装、部署、准备、配置人员
6.技术支持人员,他们关注帮助平台电话呼入的数目和复杂性。


构架师应该关注以下的关键点:
1.功能性,产品向它的用户提供了哪些功能?
2.可变性,软件将来可能需要哪些改变?哪些改变不太可能发生,不需要特别容易进行这些改变?
3.性能,产品将达到怎样的性能?
4.容量,多少用户将关发使用该系统?该系统将为用户保存多少数据?
5.生态系统,在部署的生态环境中,该系统将与其他系统进行哪些交互?
6.模块化,如何将编写软件的任务分解为工作指派(模块),特别是这些模块可以独立地开发,并能够准确面而容易地满足彼此的需要?
7.可构建性,如何将软件构建为一组组件,并能够独立实现和验证这些组件?哪些组件应该复用其他的产品,哪些应该从外部供应商处获得?
8.产品化,如果产品将以几种变体的形式存在,如何开发一个产品线,并利用这些变体的共性?产品中的产品以怎样的步骤开?在创建一条软件产品线时,要进行哪些投资?开发产品线中不同变体的选择,预期会得到怎样的回报?特别是,是否可能先开发最小的有用产品,然后再添加(扩展)组件,在不改变以前编写的代码情况下,开发产品线的其他成员?
9.安全性,产品是否需要用户认证,或者必须限制对数据的访问?数据的安全性如何得到保证?如何抵挡“拒绝服务”攻击或其他攻击?

最后,一个好的构架师会认识到,架构会影响组织机构。一个好的架构可能对组织机构产生影响,让组织机构发变化,从而更有效地从该架构构建出系统。

 

 参考:

怎样才是真正的架构师

http://www.programmer.com.cn/2975/

你可能感兴趣的:(apache,工作,linux,windows,项目管理,产品)