软件工程的目的是为了控制复杂性,而不是为了增加复杂性
在软件领域,架构就是为客户构建系统
1. 软件架构:
1)在ANSI/EEE标准中,软件架构的关键点事软件应该符合项目干系人的期待。
项目干系人指:对创建系统感兴趣或者关注的人,包括系统的创建者(架构师、开发人员、测试人员)以及产品接受方、最终用户、分析师、审计人员、CIO等;
期待 = 功能性需求 + 非功能性需求 (需求由架构师进行处理,随后告知开发团队并进行实现)
软件架构必须着眼于系统的组织以及系统的基础设施的分布,随后即可开始对系统进行设计和描述。(设计系统需要在早期做一些决定,而描述系统需要给出多角度下的样子,每个描述都会覆盖到系统的一些职责)
2)人们对软件系统的普遍理解是指为完成某类特定功能的一系列组建的组合和集成
架构的核心在于其包含的组件和类型,以及其最终映射成的二级制文件、相互的关系和依赖、使用场景和关键操作的工作流程
在好的架构中,所有给出的不会轻易改变的决定都是正确的 (封装特定行为为黑盒,达到了架构和实现的边界)
架构设计要基于对需求的分析,分析会决定系统将要做什么,而架构则决定系统如何做
2. 架构师:
1)架构师是指那些负责系统架构的人、团队或组织。架构师将与分析师和项目经理进行沟通,评估系统并对系统提出开发建议,随后与开发团队协调
2)架构师会参与开发的全过程中,包括分析需求和架构设计、实现、测试、集成以及部署。
具体职责如下:接受需求、拆分系统、确定并评估技术以及编写详细说明书
3)架构师与以下角色有差异,但可以兼任:
分析师、项目经理、程序员
(架构师的角色,以及架构师和开发团队处理需求的态度在很大程度上依赖于是用的开发方法--敏捷方法或传统方法)
3. 软件开发模型:
1)瀑布模型(传统方法)
软件开发流程会按照绝对的顺序从一个步骤走向下一个步骤(只有当第N步已经100%完成了,才能开始第N+1步。改进版本:设计和实现有一定的重叠)
2)迭代模型(敏捷方法:XP、Scrum)
迭代开发是一个循环的过程,它主要强调用渐进的方式开发软件(迭代开发是敏捷开发的基石)
3)MSF(微软解决方案框架)
角色:项目经理、架构师、开发者、测试人员、发布经理、DBA、业务分析师
词汇:迭代、发布、阶段、Work Item
开发模式:MSF for Agile(适用于小型团队以迭代形式开发)、MSF fro CMMI(适用于大型且水平参差不齐的团队,其开发迭代时间较长且更加关注软件质量的项目)