软件工程之结构化设计篇
1 软件设计的基本概念
完成了需求分析,回答了软件系统能“做什么”的问题后,软件的生命周期就进入了设计阶段。软件设计阶段,研发人员将集中精力研究如何把需求规格说明书里归纳的分析模型转换成功可行的设计模型,将解决方案记录到相关的设计文档中。软件设计是回答“怎么做”才能实现软件系统的问题。即把软件系统能做什么的逻辑模型转换成怎么做的物理模型。
软件设计在开发中处于核心地位。
1.1 软件设计的意义和目标
软件设计是保证质量的关键步骤,提供了可以用于评估质量的软件表示,是我们能够将用户需求准确转化为软件产品或系统的唯一方法,它也是一个迭代的过程,通过设计过程,需求被变换为用于构建软件的蓝图。
1.2 软件设计的原则
1 模块化
模块的公共属性:1、每个模块都有输入、输出的接口,接口都指向相同的调用者。2、每个模块都具有特定的逻辑功能,完成一定的任务。3、模块的逻辑功能由一段可运行的程序来实现4、模块还用有属于自己的内部数据。注意:1、模块的规模要适中2、提高模块的独立性3、提高模块的内聚程度4、加强模块的保护性
2 抽象
3 逐步求精
4 信息隐藏
5 复用性设计
6 灵活性设计
1 降低耦合并提高内聚2 建立抽象3 不要将代码写死4 抛出异常5 使用并创建可复用的代码
1.3 软件设计的分类
1 从活动任务分类
软件设计是对软件需求进行数据设计、体系结构设计、接口设计、构件设计和部署设计
2 从工程管理分类
软件设计分为概要设计(总体设计)和详细设计。前期进行概要设计,得到软件系统的基本框架,后期进行详细设计,明确系统内部的实现细节。
2 数据库结构设计
数据库结构设计包括概念结构设计、逻辑结构设计和物理结构设计
3 用户界面设计
3.1、设计驱动开发
3.2、目标用户群体
3.3、简洁与清晰
3.4、实现模型与心智模型
3.5、设计的规范性
3.6、设计的可用性与易用性
3.7、设计的一致性
3.8、设计的容错性
4、体系结构设计
4.1 表示软件结构的图形工具
1、层次图和HIPO图
2、结构图
4.2 面向数据流的设计方法
1、变换型数据流
2、事务性数据流
4.3 面向数据结构的设计方法
Jackson方法和Warnier方法,
Jackson方法把数据结构分为3种基本类型:顺序型结构,选择型结构,循环型结构。
5、接口设计
5.1 接口设计包括:用户接口、外部接口、内部接口。
5.2 界面设计
1、3个黄金原则:
- 置用户于控制之下。
- 减少用户的记忆负担
- 保持界面一致
2、核心活动 - 创建系统功能的外部模型
- 确定为此完成此系统功能的人和计算机应分别完成的任务
- 考虑界面设计种的典型问题
- 借助CASE工具构造界面原型
- 实现设计模型
- 评估界面质量
3、4个模型
- 由软件工程师创建的设计模型
- 由人机工程师(或软件工程师)创建的用户模型
- 终端用户对未来系统的假想
- 系统实现后得到的系统映像
4、界面设计考虑4个问题
- 系统响应时间
- 用户求助机制
- 出错信息
- 命令方式
6、数据设计
两个部分:
- 程序级的数据结构设计
- 应用级的数据库设计
数据库的主要特点:
- 可以实现数据共享
- 减少数据的冗余度
- 数据具有独立性
- 可以实现数据集中控制
- 数据具有一致性和可维护性,以确保数据的安全性和可靠性
- 出现故障可以恢复
基本结构分为三个层次:1、物理数据层;2、概念数据层;3、逻辑数据层
数据库不同层次之间的联系的通过映射进行转换的。
5个步骤:
1、需求分析
2、概念设计
3、逻辑设计
4、物理设计
5、验证设计
数据库常用的存取方法如下:
1、索引方法
2、聚簇索引方法
3、HASH方法
7、过程设计
7.1 用到的工具
程序流程图
优势:简单,结构清晰,逻辑性强,便于描述,容易理解
劣势:不利于逐步求精,箭头随意移动,与结构化程序设计精神违背N-S图(合图)
特点:不允许随意控制转移,有利于严格的结构化程序设计,可以很方便确定一个个特定的控制结构的作用域,以及局部数据和全局数据的作用域,可以很方便地表示嵌套关系以及模块之间的层次结构PAD图(问题分析图)
特点:自左向右,自上而下,结构清晰,层次分明,只能用于结构化的程序设计,不仅可以表示程序逻辑,还能表示数据结构。过程设计语言(PDL),伪代码
特点:关键字的固定语法,自然语言的自由语法,数据说明的手段,模块定义和调用的技术。
优点:可以作为注释直接写在源程序中间,可以普通的编辑器编写,如果有自动处理程序,可以自动由PDL生成程序代码。
软件工程之结构化设计篇相关推荐
- 【软件工程】软件工程系统设计——结构化设计
halo~我是bay_Tong桐小白 本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言.指点 软件工程系统设计--结构 ...
- 软件工程结构化建模的方法和工具_软件工程系列-结构化设计方法2
本系列文章为笔记,内容根据北京大学<软件工程>MOOC 初始化模块结构图精化的启发式规则 常见的启发式规则 什么叫做"启发式" 根据设计准则,从长期的软件开发实践中,总 ...
- 软件工程导论第二篇学习心得
通过这门课程,自己对于软件的认识更加深入.例如软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.这些问题表现在以下几个方面: (1)用户对开发出的软件很难满意. (2)软件产品的质量往 ...
- 大二下学期软件工程概论总结
软件工程概论这门课可以算是我本学期最辛苦的一门课了.但与此同时这门课给我带来的收获和其他课程相比,也不是一个量级的. 这学期我通过课上的学习与作业项目的完成过程,了解到软件开发由项目的确定到项目的需求 ...
- 一、软件/软件工程/软件开发模型概述
文章目录 一.软件 1.软件的定义 2.软件的分类 3.软件危机 3.1软件危机的主要问题 3.2软件危机产生原因(6点) 二.软件工程 1.软件工程定义 2.软件工程目标(6点) 3.软件工程研究的 ...
- 浙江工业大学计算机/软件工程 考研
浙江工业大学计算机考研 软件工程 看到这篇文章的小伙伴们祝大家都能一战成硕,相约工大! 一.个人浅谈: 关于软件工程方向的复习规划,网上已经有很多经验贴可供大家参考,所以这里就不再涉及到整体的复习规划 ...
- MYSQL交通系统查询,城市公交查询系统的设计与实现(SSH,MySQL)(含录像)
城市公交查询系统的设计与实现(SSH,MySQL)(含录像)(开题报告,毕业论文15000字,程序代码,MySQL数据库,答辩PPT) 本文针对公交站的查询实际情况(百度地图),按照软件工程的结构化设 ...
- php火车订票系统设计论文,基于JSP的火车票订票系统 JSP146(毕业设计+论文)
摘 要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分使用计算机对火车信息进行管理,具有手工管 ...
- ChinaSoft 论坛巡礼 | 软件工程研究与实践
2022年CCF中国软件大会(CCF ChinaSoft 2022)将于2022年11月25-27日在线上举行举行.预期将有林惠民.陈左宁.邬江兴.何积丰.梅宏.吕建.柴洪峰.王怀民.郑纬民.蒋昌俊等 ...
最新文章
- Docker 入门系列(7)- Dockerfile 使用(FROM、RUN、CMD、EXPOSE、ENV、ADD、COPY、ENTRYPOINT、VOLUME、WORKDIR)
- synchronized和ReentrantLock区别
- 区块链100讲:据说,80%的人都搞不懂哈希算法
- spoj 	Help the Military Recruitment Office!
- uva1347Tour
- idea 导出war包_使用IDEA实现远程代码DEBUG调试教程详解
- 【机房收费系统】---导出Excel表
- module 'inn' not found:No LuaRocks module found for inn
- 解决使用elementUI框架el-upload跨域上传时session丢失问题
- linux 多CPU
- Linux_Qt:-1: error: cannot find xxx/lib: file format not recognized
- 计算机个人职业生涯规划
- 5个音效素材网站,赶紧收藏
- 【算法java版09】:利用java实现对二进制数进行AMI编码
- 自己建设网站需要学习什么?
- win7 计算机登录用户密码,Win7电脑无需知道密码绕过密码登录的操作方法?
- Gluster管理命令的总结与归纳
- 启明欣欣STM32开发板 --- 运行LWIP (无RTOS)
- 管理博文 畅购商城--oauth---09
- php tcpdf修改pdf内容,php-使用TCPDF将空间写入PDF文件