-
软件工程设计概念与体系结构设计
2020-04-15 11:46:39软件工程第四次作业 11.1 当你编写程序时是否会设计软件?软件设计和编码有什么不同? 我在编写程序是并不会设计软件,编写程序和设计软件是不同的概念。当软件质量被确定好时才会设计软件。在设计软件的时候,首要...软件工程第四次作业
11.1 当你编写程序时是否会设计软件?软件设计和编码有什么不同?
- 我在编写程序是并不会设计软件,编写程序和设计软件是不同的概念。当软件质量被确定好时才会设计软件。在设计软件的时候,首要需求必须是被分析和被具体指定了。
- 在软件设计的过程中,设计工程是设计软件的概念之一。在开始软件设计时,需求应该被分析和建模。这个模型能够保证质量和在编码生成时能够进行改进。
- 在一个软件工程的内容中,首先需要的是改进项目的模型,而并不是项目本身。
软件设计和编码的不同
- 首先非常明确的是,软件设计不是编码,编码也不是软件设计。他们是项目不同组件所产生的。
- 设计是用来解决问题的逻辑的描述。
- 编码是实现设计的语言规范,他是运行在电脑上并提供预期结果的
11.17 简要描述设计模型的四个元素。
-
数据设计元素
-
在数据设计元素中,创建了在高抽象级上表示的数据模型和信息模型。数据结构通常是软件设计的重要部分。在数据设计元素中可以存放类图,分析包,CRC模型,协作图,数据流图,控制流图,处理过程说明等。
-
在体系结构级,数据设计关注文件或数据库,在构件级,数据设计考虑实现局部数据对象所需的数据结构
-
-
体系结构设计元素
-
软件的体系结构设计等效于房屋的平面图。软件体系结构设计元素提供了整个软件的整体视图。
-
体系结构模型从以下三个来源导出:1. 关于将要构建的软件的应用域信息。 2. 特定的需求模型元素,如数据流图或分析类,现有问题中他们的关系和协作。 3. 可获得的体系结构风格和模式
-
体系结构设计元素通常被描述成一组相互联系的子系统,且常常从需求模型的分析包中派生出来。
-
-
接口设计元素
-
软件的接口相当于一组房屋的门,窗和外部设施的详细绘图。软件接口设计元素描述了信息如何流入和流出系统,以及被定义为体系结构一部分的构件之间是如何通信的。
-
接口设计有三个重要元素:1. 用户界面(User Interface) 2. 和其他系统、设备、网络、信息生成者或使用者的外部接口。3. 各种设计构件之间的内部接口。能够使软件进行外部通信,还能使软件体系结构中的构件之间进行内部的通信和协作。这些接口设计元素能够使软件进行外部通信,还能使软件体系结构中的构件之间进行内部通信和协作。
-
UI设计使软件工程中的主要活动,包含美学元素,人机工程元素,技术元素等。
-
外部接口设计需要发送和接收信息实体的确定信息
-
内部接口设计和构件级设计紧密相关。
-
-
构建级设计元素
- 软件的构件级设计相当于一个房屋中的每个房间的一组详图(规格说明)软件的构件级设计完整地描述了每个软件构件的内部细节。为此,构件级设计为所有局部数据对象定义数据结构,为所有在构件内发生的处理定义算法细节,并定义允许访问所有构件操作的接口。
- 在面向对象的软件工程中,使用UML图表现的一个构件。能够反应整个构件图的整体规划。
12.2 举出2-3个例子,说明12.3.1节中提到的每一种体系结构风格的应用。
-
以数据为中心的体系结构:
数据存储位于这种体系结构的中心,其他构件会经常访问该数据存储,并对存储中的数据进行更新,增加,删除,或者修改。
例子:
图书目录查询系统:这里涉及到许多数据的管理,数据库的构建,存储等
线上购书系统: 购书记录也是需要不断对数据进行访问删除存储。
剪贴板:剪贴板是一个用来进行短时间的数据存储,并在文档/应用之间进行数据传递和交换的软件程序
-
数据流体系结构:
当输入数据经过一系列计算构件和操作构件的变换形成输出数据时,可以应用这种体系结构。
例子:
工程软件: 这里涉及到许多构件的前后关系,要经过一系列计算构件
科学软件
Unix 的Shell程序
-
调用和返回体系结构:
这种体系结构风格能设计出一个相对易于修改和扩展的程序结构。
例子:
任何I-O-P 申请。
C语言或C++语言中所用到的使用函数时的结构
-
面向对象体系结构
系统的构件封装了数据和必须用于控制该数据的操作,构件间通过信息传递进行通信与合作
例子:
所有面向对象的程序,C++,Java中的面向对象的程序的内容
基于GUI的应用程序,用来显示画面
-
层次体系结构
层次体系结构中定义了一系列不同的层次,每个层次各自完成操作,这些操作逐渐接近机器的指令集。
例子:
客户端服务器软件一般来说都是分层的
一些应用功能要从底层操作系统分离的应用程序。
12.7 使用本章描述的设计方法开发PHTRS的软件体系结构。
PHTRS系统是城市公共工程部门开发路面坑洼跟踪和修补系统。
PHTRS采用的是以数据为中心的体系结构。数据中心是包含有坑洼信息,报告信息,修补信息的数据库。
体系结构基本上分为4个层次:
-
用户界面层:是由网站和在用户桌面上的用户界面程序组成的。市民通过网站去登录并且报告一个坑洼信息。施工人员会用软件登录数据库并去生成工作顺序和损失报告。工程承包商用相同的软件去根据修补信息,比如修补员工的基本信息,特长,材料使用,修补时长等数据来更新坑洼情况。
-
业务层:业务层是业务逻辑存在的地方。它包括业务组件,所有业务实体和定义了管理业务工作流的规则。
-
数据访问层:这一层提供了更多的清晰性和数据安全性。数据只能够被类中定义的去访问数据库,并进行增删改。
-
最后是数据库。 是设计中的最后一层
-
软件工程设计图(总体设计、概要设计、详细设计)
2020-08-02 07:44:28敏捷开发一般不推荐详细设计,系统总体设计、概要设计可合并为架构(Architecture)设计。 一、What is UML? 二、Why UML Modeling? 三、14种UML图类型概述 常用的 UML 图可分静(态)图、动(态)图两类...敏捷开发一般不推荐详细设计,系统总体设计、概要设计可合并为架构(Architecture)设计。
常用的 UML 图可分静(态)图、动(态)图两类,静态图主要描绘软件的静态结构,而动态图主要描绘软件的动态行为。
常用 UML 动态图(5 个):
用例图,活动图,状态机图,序列图,通信图。
常用 UML 静态图(4 个):
类图,包图,部署图,构件图
对象图(1.x 起)、组成结构图、扩集图、交互概览图、时序图
四、UML 建模工具
sparxsystems,SysML、ArchiMate、ArchiMatetool, BPMN 等其他建模语言。
五、软件流程
5-1、规划阶段
BSP(business system planning)法中常用的子系统划分工具
5-2、可行性分析
是描述系统物理模型的一种传统工具。它是表达数据在系统各部件之间流动的情况,而不是对数据加工处理的控制过程
5-3、需求分析
DFD图(Data Flow Diagram):从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程.建立系统的功能模型,
使用 Visual Paradigm 快速轻松地创建 DFD
5-4、ERD(实体系图)
ERD(Entity-Relationship Diagram)图:当数据量很大并且数据间关系复杂时对于数据的分析就得用到它来刻画系统数据模型
5-5、IPO(输入输出)
IPO(input process output)图描述了输入数据、处理数据、输出数据之间的关系
5-6、STD(状态流转)
STD(State Transition Diagram)图:刻画系统响应外部事件的过程。为系统的行为建模
5-7、HIPO图-层次图+IPO图
HIPO图(Hierarchy Plus Input/Processing/Output)是表示软件结构的一种图形工具,以模块分解的层次性以及模块内部输入、处理、输出三大基本部分为基础建立的。它由两部分组成,H图(层次图),IPO图
5-8、N-S图
N-S图,也被称为盒图或NS图(Nassi Shneiderman图)。是结构化编程中的一种可视化建模
5-9、PAD(Problem Analysis diagram)图
PAD图:问题分析图-任何复杂的程序图都应由5种基本控制结构组成或嵌套而成
-
谈谈软件工程设计的艺术
2005-03-10 07:53:00谈谈软件工程设计的艺术如果生活的方式与你背道而驰,如果正确的行为被你视而不见,毁灭就会降临,难得保全。马基雅维利, 约1514年作为最重要的事情之一,如果不是唯一最重要的,一个系统的核心性质是它必须在其...谈谈软件工程设计的艺术
如果生活的方式与你背道而驰,
如果正确的行为被你视而不见,
毁灭就会降临,难得保全。
马基雅维利, 约1514年
作为最重要的事情之一,如果不是唯一最重要的,一个系统的核心性质是它必须在
其生命周期内保持一种 稳定的 结构。
艾瓦耳。雅可布森
以上的两段话,一是引自一位文艺复兴时期的实用主义政治学家,另一是引自一位
当代设计大师。这两段话很好的反映了软件设计工程所面临的困境,两个相反方向
的作用力,就象阴阳相生相克:一方面,软件设计需要尽一切可能减少开发时间,
使软件尽快面市,同时也对市场的和客户需求的变化作出 迅速的反应;而另一方面,
我们又必须花费足够的时间以保证软件的设计有一个好的架构,这样我们可以降低
软件的维护费用,而且软件可以有较长的生命期。
软件设计过分强调任何一个方面都会造成软件工程投资的极大浪费甚至失败。过分
强调软件开发的速度,而忽视软件架构的设计是那些对软件开发工程缺乏经验者最
容易犯的错误。糟糕的软件架构设计会导致所谓的1.0版现象,即软件只能开发到第
一版。后续开发往往因为修改原有代码过於困难而夭折。因为设计者缺乏长远的目
光和足够的项目开发经验而导致过於急躁的作出架构上的决策,因而导致软件结构
的支离破碎是很可悲的,往往很多好的软件设计创意就这样胎死腹中。
另一个极端同样会导致灾难,因为如果过於强调软件结构的优雅和可扩展性,导致
过多的开发时间放在软件架构设计上,结果使 软件的开发时间过长,等到软件推向
市场的时候,虽然设计上是完美的,但是竞争对手却早已占据了市场。软件设计的
完美主义者容易犯这样的错误。这种人通常是设计方面的
行家里手,而且对软件结构的完美有着不懈的追求。但是正是过於追求完美才是工
程开发方面的大忌。不是每一个软件的设计都有时间和精力(同时也是财力)做到象
STL那样的完美设计。
通常一个好的软件设计会努力在这两个互斥的极端之间达到一种平衡。就象儒家讲
的中庸。这两个极端之间的张力是随着软件开发的领域,环境,条件,时间,客户
的要求,竞争对手现有的水平,等等变化而变化的。就象水形之常变。但是若能领
会其中的道,能够把握其中的艺术,就能够象庖丁解牛一样“以无厚而入有间”,
游刃而有余了。但是关键在於经验的积累和对平衡的领悟。经验可以很大一部分从
前人那里得来,但是对道的把握却是另一度的思维空间了。 所以说软件工程既是科
学又是艺术。但是值得注意的是,这绝对不应当成为忽视软件工程规范的借口,就
象杨振宁可以谈论科学研究的艺术并不表示柯云路之流的所谓“生命科学”就不是
纯粹的胡扯。
设计一个容易维护并且有很强生命力的软件不是一件很容易的事;设计一个能够很
快实现的软件也不是小菜一碟。平衡这两者来给出一个可行的,健壮的设计,使软
件能够在市场上获得成功并生存下去是一件需要奇迹般力量的事业, 然而我们却必
须在普通的工作中用我们的创造力去完成这个奇迹。 -
软件工程设计方法----总结
2012-10-16 22:31:36上世纪60年代爆发了众所周知的软件危机,为了克服这一危机,于是诞生软件工程,进而形成了软件开 发方法,至今可归结为8中: 一、Parnas方法 由于当时软件在可维护性和可靠性方面存在着严重问题,因此Parnas提出...
上世纪60年代爆发了众所周知的软件危机,为了克服这一危机,于是诞生软件工程,进而形成了软件开
发方法,至今可归结为8中:
一、Parnas方法
由于当时软件在可维护性和可靠性方面存在着严重问题,因此Parnas提出的方法是针对这两个问题的。
Parnas提出了信息隐蔽原则:在概要设计时列出将来可能发生变化的因素,并在模块划分时将这些因素
放到个别模块的内部。 现在信息隐蔽原则已成为软件工程学中的一条重要原则。 Parnas提出的第二条
原则是在软件设计时应对可能发生的种种意外故障采取措施。 他没有给出明确的工作流程。所以这一方
法不能独立使用,只能作为其它方法的补充。
二、 SASD
SASD既结构分析结构设计方法,也是面向数据流的开发方法,。它首先用结构化分析(SA)对软件进行
需求分析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(SP)。这一方法不仅开发
步骤明确,SA、SD、SP相辅相成,一气呵成,而且给出了两类典型的软件结构(变换型和事务型)
三、 面向数据结构的软件开发方法Jackson方法
这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整
的程序结构图。 Jackson设计方法是一种面向数据结构的软件设计方法,Jackson分析方法是面向数据
流的分析方法。
Warnier方法
与Jackson方法类似
四、 问题分析法
PAM方法希望能兼顾Yourdon方法、Jackson方法和自底向上的软件开发方法的优点,而避免它们的缺陷。
它的基本思想是:考虑到输入、输出数据结构,指导系统的分解,在系统分析指导下逐步综合。
五、 面向对象的软件开发方法
随着OOP(面向对象编程)向OOD(面向对象设计)和OOA(面向对象分析)的发展,最终形成面向对象的
软件开发方法OMT(Object Modelling Technique)。这是一种自底向上和自顶向下相结合的方法,而且
它以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。
六、 可视化开发方法
可视化开发就是在可视开发工具提供的图形用户界面上,通过操作界面元素,诸如菜单、按钮、对话框
、编辑框、单选框、复选框、列表框和滚动条等,由可视开发工具自动生成应用软件。
七、 ICASE
ICASE(Integrated Computer-Aided Software Engineering) 的最终目标是实现应用软件的全自动开
发,即开发人员只要写好软件的需求规格说明书,软件开发环境就自动完成从需求分析开始的所有的软
件开发工作,自动生成供用户直接使用的软件及有关文档。
八、软件重用和组件连接
件重用是利用已有的软件成份来构造新的软件。它可以大大减少软件开发所需的费用和时间,且有利于
提高软件的可维护性和可靠性。 -
软件工程 毕业设计题目
2019-05-23 14:45:04软件工程毕业设计 题目汇总 【不断更新中】 1.微信小程序 校园表白墙微信小程序 2.房屋租赁管理系统 3.航空售票管理系统 4.高校会议室管理系统 5.高校就业管理系统 6.失物招领系统 7.图书销售系统 8.微信小程序 ... -
软件工程的设计意义
2013-11-07 00:14:28良好的软件工程设计具有不可比拟的意义,它胜于执行软件需求、软件编码、软件维护等任何一个环节,这就是设计的优越性。秉承设计优先这一原则,会让软件开发变得简单而高效,可以尽量避免掉因设计失误而导致的缺陷。... -
软件工程之软件设计
2014-10-05 11:27:08软件工程这一门学科主要是为了解决当代软件危机而诞生的, 学习软件工程的视频过后,终于让我揭开了它的神秘面纱,让我对软工设计有了一个初步的认识,软工设计从大体上来说主要包括两大部分,概要设计和详细设计。... -
软件工程—软件设计
2016-08-27 16:57:45软件设计阶段解决软件“怎么干”的问题,可以分为总体设计和详细设计两个阶段,最后形成系统设计说明书。 软件设计的目标是:根据需求进行数据设计,系统结构设计,过程设计。 数据设计:侧重数据结构的定义 ... -
软件工程——软件设计
2016-12-04 17:15:30软件设计包括概要设计和详细设计两部分。 概要设计的基本目的是回答“概括地说,系统应该如何实现”这个问题。这一阶段将会划分出组成系统的物理元素(程序、文件、数据库、人工过程和文档等)和设计软件的结构... -
软件工程总体设计
2018-11-22 09:16:13软件工程总体设计 1引言 1.1编写目的 该总体设计说明书目的在于根据学生宿舍管理系统需求分析提出该系统的概要设计。 1.2背景 开发目标为有效管理学生宿舍,实现学生宿舍信息的数据录入,查询,修改,方便学生的... -
软件工程详细设计
2018-11-28 15:17:18软件工程详细设计 1.引言 1.1编写目的 在前一阶段(概要设计说明书)中,已解决了实现该系统需求的程序模块设计问题。在本阶段中,确定应该如何具体地实现所要求的系统,从而在编码阶段可以把这个描述直接翻译成用... -
软件工程——软件设计总结
2018-07-19 16:52:22软件设计的概述(1)目标:根据SRS提出的目标,设计出软件的体系结构,接口,数据结构和处理流程并撰写SDS。(2)软件的设计模型 数据设计 ——> 体系结构设计 ——> 接口设计 ——> 过程流程 ... -
【软件工程】 软件设计阶段
2018-01-27 14:18:19在经历过计划阶段和需求分析的阶段接下来就到了软件设计的阶段,他是软件工程中非常重要的阶段,它主要是分两步来完成,一个是概要设计,一个是详细设计! 一、概要设计阶段 1、解析 概要设计主要是完成,... -
软件工程 之 系统设计
2012-12-01 09:02:04软件工程 之 系统设计 -
软件工程视频之软件设计
2014-02-10 14:50:12软件工程中关于软件设计这部分自己依据自己的理解,主要就是概要设计和详细设计。 Ø 概要设计 1) 概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。同时,... -
软件工程课程设计
2015-04-28 22:20:00软件工程课程设计 一 题目简介 五子棋 二 源码的github链接 https://github.com/zhangxin76/test/blob/master/wuziqi 三 所设计的模块测试用例、测试结果截图 四、问题及解决方案、心得体会 ... -
软件工程之软件设计阶段
2014-10-01 14:58:40软件设计阶段 -
软件工程(软件设计)
2013-12-26 17:12:54系统分析阶段完成了新系统的逻辑设计模型,回答了系统“是什么”的问题,接下来就是软件设计阶段了,解决“怎么干”,我们知道软件设计是整个系统开发过程中最为核心的部分,它可以分为总体设计(概要设计)和详细... -
软件工程之设计模式
2017-11-14 14:00:04设计模式的概念最早起源于建筑设计大师Alexander的《建筑的永恒方法》一书,尽管Alexander的著作是针对建筑领域的,但他的观点实际上适用于所有的工程设计领域,其中也包括软件设计领域。在《建筑的永恒方法》一书中... -
软件工程毕业设计选题
2020-10-10 14:16:27像软件工程毕业设计还是有很多选题的,有些选题可以在计算机网站上搜索一下, 【多套计算机软件成品下载】,就拿Java/JSP来说,比如宠物销售管理系统 、德鲁社区交友平台的设计与实现、特色实验室设备管理系统详细功能... -
软件工程-web软件设计
2016-03-30 23:09:45软件交互设计+系统总体设计+模块设计和实现(算法和数据结构、数据库设计) 系统总体设计:明确设计目标、确定子系统或模块、选择系统部署方案(与硬件关联)、定义设计策略、评审系统设计方案 系统设计目标:性能... -
【软件工程】——软件设计
2014-10-02 11:27:57软件设计是我们在项目的开发guo -
软件工程-设计
2014-09-10 20:36:26一个大的项目必须要先有设计,一定要先设计,而设计之前必须要做的事情就是需求分析。需求分析是了解用户“做什么”,需求分析包括...结构设计:定义软件系统各主要部件之间的关系。 数据设计:将模型转换成数据结构 -
软件设计工程——设计流程
2018-10-02 12:16:10软件设计流程 1.可行性分析 项目管理初始 项目评估 项目招投标 签署项目合同 选择生存期模型 项目管理文件 2.需求分析 需求分析 需求获取 需求建模 需求规约 生成需求规约说明书 ... -
【软件工程】软件设计流程
2018-09-23 16:14:29软件工程的信息量庞大,不同的领域的书,对其的解释也略有差异。站在《软件开发工具》这本书的肩膀上,我把软件设计的大体流程做了一个小小的总结,希望能给路过的你带来帮助! 分享 小结 翻书翻了几十遍,但... -
软件工程毕业设计集合
2018-04-02 21:56:17想学习分布式、微服务、JVM、多线程、架构、java、python的童鞋,千万不要扫码,否则后果自负~ 1.旅游社交系统 ...6.基于Java EE新闻管理系统的设计与实现 7.网上员工考试培训系统 如果大家想要... -
软件工程毕业设计
2020-03-31 00:34:37http://59.110.224.33:8082/ 校园外卖网 http://59.110.224.33:8081 仓库进销存管理系统 -
软件工程项目设计
2017-10-06 15:18:00软件系统名称:餐馆点菜系统