软件设计

软件体系架构阅读笔记(九)

爷,独闯天下 提交于 2019-12-25 03:17:58
软件架构设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。本文从架构师职责、软件架构定义、设计架构、评估架构、架构管理等方面来描述了解软件架构的含义和怎样设计软件架构。 一、软件架构师的职责 架构师分为以下几大类:业务架构师、主题领域架构师、技术架构师、项目架构师(J2EE架构师、.NET架构师等)、系统架构师。 1、架构师的职责主要体现 架构师的职责就是设计一个公司系统的基础架构,并提供关于怎样建立和维护系统的指导方针。具体来讲,架构师的职责主要体现在以下几方面: 1)、负责公司系统的架构设计、研发工作。 2)、承担从业务向技术转换的桥梁作用。 3)、协助项目经理制定项目计划和控制项目进度。 4)、负责辅助并指导系统分析开展设计工作。 5)、负责组织技术研究和攻关工作。 6)、负责组织和管理公司内部的技术培训工作。 7)、负责组织及带领公司内部员工研究与项目相关的新技术。 8)、管理技术支撑团队并给项目、产品开发实施团队提供技术保障。 9)、理解系统的业务需求,制定系统的整体框架(包括、技术框架和业务框架)。 10)、对系统框架相关技术和业务进行培训,指导开发人员开发。并解决系统开发、运行中出现的各种问题。 2、构架设计师必须具备的技能 经验:既包括在问题领域的经验(通过彻底了解需求)

软件工程期末考试知识点汇总

心已入冬 提交于 2019-12-23 01:43:38
1、软件工程学概述 软件危机 软件工程 软件生命周期 软件工程 2、可行性研究 可行性研究的任务 系统流程图 数据流图 数组字典 3、需求分析 需求分析的任务 分析建模与规格说明 4、总体设计 设计原理 高内聚,低耦合的系统有什么好处呢? 面向数据流的设计方法 5、详细设计 设计问题 过程设计的工具 程序复杂程度的定量度量 计算环形复杂度的方法 6、实现 软件测试基础 单元测试 单元测试 白盒测试技术 黑盒测试技术 调试 7、维护 软件维护的定义 软件的可维护性 8、面向对象方法学引论 面向对象方法学的优点 面向对象的概念 对象模型 用例图 9、综合其他章节 建立对象模型 软件重用 工作量估算 能力成熟度模型 10、简答题 来源: https://www.cnblogs.com/gede/p/11148120.html

KISS(Keep It Simple & Stupid)

∥☆過路亽.° 提交于 2019-12-22 19:21:37
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> KISS(Keep It Simple & Stupid) KISS(Keep It Simple & Stupid):保持精简,并且看起来很“愚蠢”。 在软件开发中,一个系统会变得越来越庞大, 系统熵(复杂度) 会变得越来越大,导致我们越来越难以hold整个系统(智商问题¯_(ツ)_/¯)。所以我们引入了 KISS原则 来使**系统熵(复杂度)**保持稳定的数值。 统一命名 一个好的统一命名风格,有利于系统的扩展和维护,推荐驼峰命名法。 使用静态语言 静态语言的合理使用,能最大程度的保证代码重构后的影藏问题,在编译期就可以fix。不过有些场合非常却不是这样子,比如说浏览器,Shell等。静态或者动态语言还是需要综合考量。 微服务架构设计 当系统变的越来越大的时候,我们不能简单的通过将单体架构运行在多个PC上做负载均衡来达到性能上的突破,而应该将整个集群看成一个系统,使用微服务的概念优化整体设计。 高内聚低耦合设计 高内聚 高内聚是指对程序中功能相近的点进行独立化, 如果两个模块之间的修改, 互不影响则说明模块之间是高内聚的。 高内聚意味可维护性,可重写性,因为模块对外部的依赖少(功能的完备性)。模块的内聚和其担当的职责成反比,即模块的职责越多,模块的内聚性越低。 如何划分出一个模块, 这就需要 关注点分离。

GRASP 通用职责分配软件设计模式 (原则)

只谈情不闲聊 提交于 2019-12-22 19:21:06
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> GRASP ,全称为 General Responsibility Assignment Software Pattern ,即 通用职责分配软件模式 ,它由《 UML 和模式应用》 ( Applying UML and Patterns ) 一书作者 Craig Larman 提出。与其将它们称之为设计模式,不如称之为设计原则,因为它是站在面向对象设计的角度,告诉我们 怎样设计问题空间中的类与分配它们的行为职责,以及明确类之间的相互关系等 ,而不像 GoF 模式一样是针对特定问题而提出的解决方案。因此 GRASP 站在一个更高的角度来看待面向对象软件的设计,它是 GoF 设计模式的基础。 GRASP 是 对象职责分配 的基本原则,其核心思想是 职责分配 (Responsibility Assignment) ,用职责设计对象 (Designing Objects with Responsibilities) 。 它包含如下 9 个基本模式: 1. 信息专家模式 (Information Expert Pattern) (1) 问题: 给对象分配职责的通用原则是什么? (2) 解决方案: 将职责分配给拥有履行一个职责所必需信息的类,即信息专家。 (3) 分析: 信息专家模式是面向对象设计的最基本原则。通俗点来讲

UML(1)——概述

走远了吗. 提交于 2019-12-19 20:15:12
UML 是一种对软件系统进行规约、构造、可视化和文档化的,具有广泛适用性的建模语言。 (一)视图 UML 通过模型来描述系统的结构、静态特征、动态特征(行为),从不同视角为系统的架构建模形成系统的不同视图。其中的视图主要包括静态视图、用例视图、交互视图、实现视图、状态机视图、活动视图、部署视图、模型管理视图。 (1) 静态视图 静态视图是对在应用领域中的各种概念和系统实现相关的内部概念进行的建模。它不设计与时间有关的行为,是静态的。静态视图中的元素代表现实系统中有意义的概念。静态视图描绘的是客观世界的基本认知元素,是建立系统所需要的概念的集合。 (2) 用例视图 用例视图用于描述系统的参与者与系统进行交互的功能,是系统功能的模型图。用例视图用于捕获系统、子系统和用户执行的行为,将系统描述为参与者对系统的功能需求,其中的需求功能就是用例。 (3) 交互视图 交互视图描述了执行系统功能的各个角色之间互相传递消息的顺序关系,是描绘角色或功能交互的模型。表达对象之间协作完成一个功能的叫协作图;执行系统的和个角色之间相互传递消息的顺序关系叫序列图。 (4) 状态机视图 状态机视图通过对象的各种状态建立模型来描述对象随时间变化的动态行为。 (5) 活动视图 用于描述执行算法的工作流程中设计的活动。 (6) 物理视图 物理视图对应自身的实现结构建模,提供了将系统中的类映射为物理构件和节点的机制

这是博客

情到浓时终转凉″ 提交于 2019-12-19 02:18:54
s是 早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2 = 4,通过设计一个算法就可以解决当时的问题。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。面向对象是指一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的集合。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。 [2] 起初,“面向对象”是专指在程序设计中采用封装、继承、多态等设计方法。 [2] 面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。 [2] 面向对象的分析根据抽象关键的问题域来分解系统。面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成

面向对象与领域建模

独自空忆成欢 提交于 2019-12-17 21:32:03
面向对象与领域建模 板桥里人 http://www.jdon.com 2006/12/6(转载请保留) 多变且复杂的需求   如果没有多变的需求,也许就没有今天的面向对象软件,我们曾经试图通过需求管理、需求跟踪等等管理方式约束和减少需求频繁更新带给软件的冲击,可是这样下去的结果只有一个:使得软件更加僵化;或者程序员更加 劳累。   需求不但多变,而且经常是不可能第一次就能掌握,需求反映了某个领域的专业知识,例如数学、管理、财务或 电子商务等等,每个特定案例需求又有其特别复杂之处,几乎没有人能够第一次接触就可以深入掌握这些专业领域的 需求本质,就是专门的建模专家也不例外。   既然需求是多变而且复杂的,所以,就不能使用“堵”式方法对其进行控制和管理,只能顺势而为,通过灵活多变的 以及迭代反复的方式逐步抓住需求,并且作为需求的实现软件系统必须能够迅速应对需求变化,需求变化有多快,软件 变化就有多快。   因此,对于多变的需求,我们的解决之道是:引入灵活多变的架构,面向对象OO架构正是应对多变需求而生,强调软件的可维护性 和拓展性,OO可能不是最好方式,但是目前是最合适的;对于复杂的需求,我们的解决之道是:委派专门的建模专家跟踪理解需求, 在需求和需求实现之间搭建桥梁,项目方法上采取多次迭代的敏捷软件开发方式,逐步了解学习掌握需求。   在这里稍微说明一下,很多人总是将软件和数学、管理

什么是面向对象?

我的梦境 提交于 2019-12-17 10:50:42
面向对象(Object Oriented,简称OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD 技术 、人工智能等领域。 表面来看,面向对象这个术语的意思是,把软件组织成一系列离散的,合并了数据结构和行为的对象。这与以前软件开发方法中数据结构和行为只是松散关联是不同的。关于OO方法确切需要哪些特征学术界是有争议的,但大致上它们都包含四个方面:标识(identity),分类(classification) ,继承(inheritance),多态(polymorphism)。 标识:数据被量化成称为对象的离散的,可辨别的实体。每个对象都有它自己的内部标识。换言之,即使所有的属性都相同,两个对象也是有差别的。 分类:拥有相同数据结构(属性)和行为(操作)的对象被分组成为一个类。 继承:多个类基于一种分层关系,共享类间的属性和操作(合称为特征)。 多态:对于不同的类来说相同的操作会有不同的动作。 面向对象的基本概念: (1)对象。 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。 (2)对象的状态和行为。 对象具有状态,一个对象用数据值来描述它的状态。

UML简单介绍-如何看懂UML(一)

冷暖自知 提交于 2019-12-17 00:25:59
在计算复杂的数学题时,我们必然会打草稿计算 在绘画课中,我们可以素描出来看到的事物 那么在程序设计中呢? 如何描绘传达你脑海中的关于这个程序 ,设计的蓝图草稿 ? OOP的程序设计中,最多的自然是类、接口层次接口的设计 简单的设计,可能在脑海中想象下就过了,比如A继承B 但是复杂的呢? 对于OOP程序设计中,类的层次、关系设计如何描绘? 用文字么? A继承B A实现C,A中有一个D的引用 显然,图形化的方式更加直观,简洁 那么到底如何表示OOP中的事物与关系?每个人有每个人的书写方式,如何进行交流? 你画了一个三角形说这是一个接口,我花了一个圆形,跟你讲这个是接口?这其中的问题不言而喻。 UML起源 1997年, OMG 组织(Object Management Group对象管理组织)发布了 统一建模语言(Unified Modeling Language,UML) UML 是一种为面向对象开发系统的产品进行说明、可视化、和编制文档的标准语言 UML 作为一种模型语言,它使开发人员专注于建立产品的模型和结构 UML 是不同于其他常见的编程语言,如Java等,它是一种绘画语言,用来做软件蓝图 UML 提出了一套 统一的,标准的建模符号 首先它提供了一套建模符号,用于类的层次结构设计 另外,统一的也就意味着只要按照标准构图,就可以无障碍的通过UML图进行沟通 计算机软件的世界里面

[UML]UML 教程

本秂侑毒 提交于 2019-12-16 23:22:46
统一建模语言(UML)已经迅速变成建立面向对象软件的事实标准。本教程提供了Enterprise Architect支持的13种UML图的技术概览。UML 2 详细的语义解释请看新的 UML 2 教程 。 首先... 什么是UML? OMG组织规范声明 : "统一建模语言(UML)是一种图形化的语言,用于软件密集系统要素的可视化、制定规范、构建对象和编写文档。UML提供了一种标准的方式来描述系统的设计图,既包括概念方面,例如业务过程和系统功能,也包括具体事务,如编程语言语句,数据库图示和可重用的软件组件。 这里着重指出的是UML是一种说明性的“语言”,而不是一种方法或程序。UML通常用来定义软件系统与细化、编写、构造系统中的要素,是“写”设计图的语言。UML可以用不同的方式来支持软件开发方法(例如:统一软件开发过程)-但是它本身并不指定某种方法或过程。 UML 定义了下列领域的标注和语义: - 用户交互或 用例模型 -描述系统和用户之间的界定和交互。在某些方面对应于一个需求模型。 - 交互或通信模型 -描述系统中的对象彼此之间如何进行交互以完成工作。 - 状态或 动态模型 -状态图表描述随着时间变化,类所呈现的状态和条件。活动图则描述系统即将执行的工作流程。 - 逻辑或类模型 - 描述构成系统的类和对象。 - 物理 组件模型 - 描述构成系统的软件(有时也包含硬件)。 -