软件系统设计-12-软件设计体系结构概述

1. 背景

1.1. 为什么要研究软件设计体系结构y Study Software Design & Architectureh2>
  1. 软件(IT)系统无处不在 Software(IT) systems are everywhere
  2. 每个软件密集型(组成的)系统都有一个软件设计和体系结构 Every software intensive system has a sofftware design and architecture
  3. 软件设计和体系结构是实践,教育和研究中越来越重要的领域 Software design and architecture are an increasingly important area of practice, education, and research
  4. 专业:软件架构师 As a profession: Software Architect
  5. 作为研究领域 As a research area
    1. 最初于1960年左右开始 Originally started around 1960
    2. 自1990年以来备受关注 Attracting major attention since 1990
  6. 本课程是关于 This course is about
    1. 软件设计和体系结构的概念,原理,方法和模式 Concepts, principles, methods, and patterns of software design and architecture
    2. 软件设计和体系结构的最新实践 State-of-the-art practices of software design and architecture

1.2. Learning Objectives 将要学习到的东西

  1. 理解软件设计和体系结构的概念和原理 Understand concepts and principles of software design and architecture
  2. 通过考虑需求或通过反向体系结构来创建软件体系结构 Create software architecture by taking requirements or through reverse architecting
  3. 在创建软件体系结构和设计的时候应用设计模式、风格、中间件技术和框架 Apply tactics, patterns, styles, middleware technologies and frameworks in creating software architecture and design
  4. 分析软件设计和评估软件体系结构的系统性 Analyze software design and evaluate software architecture systematically
  5. 理解艺术式的设计是如何应用到软件设计与体系结构中的 Understand state-of the-art methods applied in software design and architecture
  6. 理解软件设计与软件体系结构之间的关系,以及其他软件工程的领域话题 Understand relationships between software design and software architecture, and other software engineering topic areas

2. 介绍

2.1. Understanding Software Engineering 理解软件工程

  1. Software 和 Engineering
  2. Software 和 Hardware
    1. 软件是不可见的:软件是虚拟的,而硬件是实体的。
    2. 软件制作出来就是为了被修改和改变的(软件的演化是他的本质属性)
  3. Science vs. Engineering:科学的研究是研究这个世界既有的部分,而工程是研究的是人类创造新的世界(是不是因为人才产生的),下面的图是很重要的。

开发和设计是在做减法

3.5. 软件设计过程 Software Design Process

3.8. 体系结构生命周期 Architecture Lifecycle

软件系统设计-12-软件设计体系结构概述

3.9. 软件体系结构和体系结构知识领域 Software Design & Architecture Knowledge Areas

  1. 软件设计基本原理 Software Design Basic Concepts
    1. 整体设计原理 General design concepts
    2. 上下文:软件发展生命周期-需求、设计、编码和测试 Context: software development life cycle – requirements, design, construction and testing
    3. 设计过程:决策、活动、可运行产品 Design process(role, activity, work product)
    4. 软件设计的使能技术 Enabling techniques for software design
  2. 核心问题(技术):一致性、事件控制和处理、分发、异常处理、交互系统、持久化 Key Issues (technical): concurrency, control and handling of events, distribution, exception handling, interactive systems, persistence
  3. 软件结构和体系结构 Software Structure and Architecture
    1. 体系结构结构和视点 Architecture Structures and viewpoints
    2. 体系结构风格和模式(宏观体系结构) Architectural styles and patterns (macro-architecture)
    3. 设计模式(微观体系结构) Design patterns (micro-architecture)
  4. 软件设计方法Software Design Methods
    1. 体系结构方法,比如属性驱动的设计 Architecture Methods (e .g., Attribute- Driven Design)
    2. 设计方法,比如动态系统发展方法 Design Methods (e.g., Dynamic System Development Method)
  5. 软件设计的质量分析和评估 Software Design Quality Analysis and Evaluation
    1. 质量属性 Quality attributes
    2. 质量分析和评估方法、技术和工具 Quality analysis and evaluation methods, techniques and tools
      1. 设计回顾:比如SEI的体系结构权衡分析方法 Design reviews (e.g. SEI’s Architecture Trade-off Analysis Method)
      2. 静态分析和动态分析 Static analysis and dynamic analysis
      3. 模拟和原型 Simulation and prototyping
    3. 度量 Measures:
      1. 矩阵:体系结构级别 Metrics: Architecture level
      2. 技术特有度量指标 Technique specific measures
  6. 设计建模和展示 Design Modeling and Representation
    1. 体系结构和设计符 (体系结构描述语言,Architecture Description Languages,ADL)Architecture and Design Notations (Architecture Description Languages(ADL))
    2. UML Unified Modelling Language (UML)
    3. 设计文档(意见或其他) Design Documentation (Views & Beyond)
    4. 其他:在活动、关注点和领域上的不同,比如ACME,Rapide。 Others: differ in ability, focus and domain (e.g. ACME, Rapide)

4. 讨论

  1. 科学和工程有什么不同at is Difference between Science and Engineering
    1. 科学的研究是研究这个世界既有的部分
    2. 工程是研究的是人类创造新的世界(是不是因为人才产生的)
  2. 软件和硬件有什么不同at is Difference between ‘Software’ and ‘Hardware’
    1. 软件是不可见的:软件是虚拟的,而硬件是实体的。
    2. 软件制作出来就是为了被修改和改变的(软件的演化是他的本质属性)
  3. 体系结构和设计有什么不同at is Difference between Architecture and Design
    1. 所有的体系结构都是软件设计,但是不是所有的软件设计都是体系结构
    2. 体系结构是设计过程的一个过程。
    3. 其他观点
      1. 体系结构是更高层的设计,是为了修改的
      2. 体系结构是设计决策的组合
  4. 体系结构和结构有什么不同at is Difference between Architecture and Structure
    1. 体系结构定义了组件(Component)的接口,Component之间如何交流以及如何相互依赖,Component的职责。
    2. 体系结构提供了设计的更高层抽象视角,隐藏设计的复杂性和实现,更强调非功能性需求。
    3. 【标准】架构是包括结构信息的,因为结构是一种静态的、逻辑的、是关于系统如何构成。但是架构除了包含结构,还会增加组件的相互之间的关系接口,还会定义一些动态的行为(一个组件可能和谁进行交互)

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月6日
下一篇 2022年3月6日

相关推荐