软件工程导论学习笔记——(2)项目启动阶段(含三四五章课后题答案)

本文主要是介绍软件工程导论学习笔记——(2)项目启动阶段(含三四五章课后题答案),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

引言

三、项目可行性研究

3.1数据流图

3.1.1数据流图的基本符号

3.1.2数据流图的绘制方法

3.1.3绘制数据流图的注意事项

3.2数据字典

3.2.1数据宇典的用途和内容

3.2.2定义数据字典

四、软件需求分析

4.1需求分析建模

六、参考答案

6.1第三章课后参考答案

6.1.1练练手

6.1.2动动脑

6.2第四章课后参考答案

6.2.1练练手

6.2.2动动脑

6.3第五章课后参考答案

6.3.1练练手

6.2.2动动脑


引言

尊敬的读者:
您好!在此次博客中,我将分享一些有关软件工程导论的重要观点和理论。这些内容均摘自清华出版社出版的《软件工程导论》一书。在此,我郑重声明,本次分享的目的是为了传播和普及软件工程领域的知识,绝非抄袭或剽窃。以下为本书的相关信息,以兹证明:
书名:《软件工程导论》
编著:吴艳 曹平
出版社:清华大学出版社
出版日期:2021.2(2022.7重印)
希望本次分享能够为您带来收获,并激发您对软件工程领域更深入的研究。再次感谢您的关注与支持!
敬请期待后续内容,我们将一同探索软件工程的奥秘。
顺祝商祺!


续前文:https://blog.csdn.net/Prayer41/article/details/135363825

三、项目可行性研究

        做任何软件项目前,都必须进行可行性研究,即确定项目是否能开发、是否值得开发等。

3.1数据流图

        数据流图(数据流程图)(Data Flow Diagram,DFD)是描述系统中数据流程的一种图形化技术,它描绘信息流和数据从输入移动到输出过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程,描述的是业务数据的来龙去脉及加工规则。

3.1.1数据流图的基本符号

图1 数据流图基本符号的含义
  • 数据流       

        数据流是数据在系统内传播的路径,因此,数据流由一组成分固定的数据组成,如订单由买家昵称、买家ID、订单编号、日期、发货地址、收货地址等数据项组成。由于数据流是流动中的数据,所以数据流必须有流向,除与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。

  • 数据源或终点

        数据源或终点代表系统之外的实体,可以是人、物或其他软件系统(不能是自身系统)。

  • 对数据的加工(处理)

        加工就是对数据进行处理。它接收一定的数据输入,对其进行处理,并产生输出。加工不一定是一个程序,可以代表一系列程序、单个程序或某个模块。通常,在数据流图中 忽略出错处理,基本要点是描绘“做什么”,而不是“怎么做”。

  • 数据存储

        数据存储表示信息的静态存储,可以代表文件、文件的一部分、数据库的元素等。

3.1.2数据流图的绘制方法

        数据流图依据“自顶而下,从左到右,由粗到细,逐步求精”的基本原则进行绘制。(详细步骤略,如需进一步了解,请查看《软件工程导论》一书)

3.1.3绘制数据流图的注意事项

绘制数据流图时,要注意以下几个事项:
(1)命名。
        不论数据流、数据存储,还是加工,合适的命名使人们易于理解其含义。
(2)画数据流,而不是控制流。
        数据流反映系统“做什么”,不反映“如何做”,因此,箭头上的数据流名称只能是名词或名词短语,整个图中不反映加工的执行顺序。
(3)一般不画物质流。
        数据流反映能用计算机处理的数据,因此,目标系统的数据流图一般不画物质流。
(4)保证数据守恒。
        每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果,且输入流不同于输出流(否则,加工相当于一个管道,毫无意义)。
(5)编号。
        如果一张数据流图中的某个加工分解成另一张数据流图时,则上层图为父图,直接下层图为子图。子图及其所有的加工都应按层次级别编号。
(6)父图与子图的平衡。
        子图的输入输出数据流必须同父图相应加工的输入输出数据流一致(在数量和名字上相同),此即父图与子图的平衡。
(7)局部数据存储。
        当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。
(8)提高数据流图的易懂性。
        注意合理分解,要把一个加工分解成几个功能相对独立的子加工,这样可以减少加工之间输入、输出数据流的数目,增加数据流图的可理解性。
(9)分解要掌握适度。
        当分解涉及具体的实现一个功能时就不应该再分解了;每次只对一个功能进行分解。

3.2数据字典

        数据字典(Data Dictionary)是关于数据的信息集合,也就是对数据流图中包含的所有元素的定义的集合。
        数据流图和数据字典共同构成系统的逻辑模型,没有数据字典,数据流图就不严格;然而,没有数据流图,数据字典也就失去了解释的内容,难以发挥其作用。只有将数据流图以及数据流图中每个元素的精确定义结合在一起,才能共同构成系统的规格说明。

3.2.1数据宇典的用途和内容

        数据字典最重要的用途是作为分析阶段的工具。在数据字典中建立的一组严密一致的定义有助于改进分析员和用户之间的通信,因此会消除许多可能的误解,同时也有助于改进在不同的开发人员或不同的开发小组之间的通信;此外,如果要求所有开发人员都根据公共的数据字典描述数据和设计模块,则能避免许多麻烦的接口问题。
        数据字典对数据流图中的每个构成要素做出具体的定义和说明,是系统分析阶段的重要文档。数据字典一般由4类元素的定义组成:数据流、数据文件、数据项和加工。

3.2.2定义数据字典

  • 数据流定义

        数据流定义主要说明数据流由哪些数据项组成,包括数据流编号、名称、来源、去向、组成、时间、数量以及峰值等。其中,数据流名、组成(包含的数据项)必不可少。
常用的表示数据流组成的符号有以下几个。

  • a+b;表示a与b。
  • [a|b]:表示a或b,即选择括号中的某一项。
  • m{a}n:表示a可以重复出现,至少出现m次,最多出现n次。
  • (a):表示a可以出现0次或1次,即括号中的项可选可不选。

四、软件需求分析

        软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。

        需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰和具体的要求。

4.1需求分析建模

        建立事物模型能更好、更有效地理解复杂事物。所谓建模,就是对事物做出一种象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的则组成。
        结构化分析实质上是一种创建模型的活动。为了开发出复杂的软件系统,系统分师应从不同角度抽象出目标系统的特性;使用精确的表示方法构造系统的模型;验证模是否满足用户对目标系统的需求;并在设计过程中逐渐把和实现有关的细节加进模型中直至最终用程序实现模型。
        根据结构化分析准则,需求分析过程需要建立3个模型。

  • 数据模型。实体-联系图(E-R图)描绘数据对象及数据对象之间的关系。
  • 功能模型。数据流图描绘数据在系统中移动时被变换的逻辑过程
  • 行为模型。状态转换图描绘了系统的各种行为模式和在不同状态间转换的方式。
图2 需求分析3个模型之间的关系

        数据字典是分析模型的核心,它描述软件使用或产生的所有数据对象。
        数据流图,它描绘当数据在软件系统中移动时被变换的逻辑过程,指明系统具有的变换数据的功能,因此,数据流图是建立功能模型的基础。

        E-R图描绘数据对象及数据对象之间的关系,是用于建立数据模型的图形;描述行为模型的状态图,指明了作为外部事件结果的系统行为,为此,状态转换图描绘了系统的各种行为模式(称为“状态”)和在不同状态间转换的方式,状态图是行为建模的基础。


六、参考答案

6.1第三章课后参考答案

6.1.1练练手

(1)(2)(3)(4)(5)
CDCAC
(6)(7)(8)(9)(10)
AAABA
(11)(12)(13)(14)(15)
ABDCA

6.1.2动动脑

  1. 根据3.3.1.4中教材案例的数据流程图初步绘制出软件结构图。

【解答】

根据机票预订系统的数据流图可以得出以下的软件结构图。

      2.完成案例《机票预订系统》的可行性研究报告。

【解答】

请参见《机票预订系统可行性研究报告》模板


6.2第四章课后参考答案

6.2.1练练手

(1)(2)(3)(4)(5)
ABBCDACD
(6)(7)(8)(9)(10)
CABBA
(11)(12)(13)(14)(15)
DBACBEC

6.2.2动动脑

        1.某学校欲开发一个学生跟踪系统,以便更自动化、更全面地对学生在校情况(到课情况和健康状态等)进行管理和追踪,使家长能及时了解子女的到课情况和健康状态,并在有健康问题时及时与医护机构对接。

该系统的主要功能如下所示。

1)采集学生状态。通过学生卡传感器,采集学生心率、体温(摄氏度)等健康指标及其所在位置等信息并记录。每张学生卡有唯一的标识(ID)与一个学生对应。

2)健康状态告警。在学生健康状态出问题时,系统向班主任、家长和医护机构健康服务系统发出健康状态警告,由医护机构健康服务系统通知相关医生进行处理。

3)到课检查。综合比对学生状态、课表以及所处校园场所之间的信息对学生到课情况进行判定。对旷课学生,向其家长和班主任发送旷课警告。

4)汇总在校情况。定期汇总在校情况,并将报告发送给家长和班主任。

5)家长注册。家长注册使用该系统,指定自己子女,存入家长信息,待审核。

6)基础信息管理。学校管理人员对学生及其所用学生卡和班主任、课表(班级、 上课时间及场所等)、校园场所(名称和所在位置区域)等基础信息进行管理;对家长注册申请进行审核,更新家长状态,将家长ID加入学生信息记录中使家长与其子女进行关 联,向家长发送注册结果。一个学生至少有一个家长,可以有多个家长。课表信息包括班 级、班主任、时间和位置等。

要求:用结构化方法对学生跟踪系统进行分析与设计,并绘制0层和1层数据流图。

【解答】

0层(顶层)数据流程图

1层数据流图

        2.完成案例《机票预订系统》的软件需求规格说明书。

【解答】

按照软件需求规格说明书模板,参考《机票预订系统可行性研究报告》模板。


6.3第五章课后参考答案

6.3.1练练手

(1)(2)(3)(4)(5)
ACABA
(6)(7)(8)(9)(10)
ACBAB

6.2.2动动脑

  1. 完成案例《机票预订系统》的项目计划。

【解答】

请参见《机票预订系统项目计划》模板

     2.如果要开发一个支持多种操作系统的手机阅读软件,你如何去组织开发小组?

【解答】


这篇关于软件工程导论学习笔记——(2)项目启动阶段(含三四五章课后题答案)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/643835

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

springboot3打包成war包,用tomcat8启动

1、在pom中,将打包类型改为war <packaging>war</packaging> 2、pom中排除SpringBoot内置的Tomcat容器并添加Tomcat依赖,用于编译和测试,         *依赖时一定设置 scope 为 provided (相当于 tomcat 依赖只在本地运行和测试的时候有效,         打包的时候会排除这个依赖)<scope>provided

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]