系统设计基础
计算机是一种设备。相比之下,计算系统是一个动态实体,用于解决问题并与其环境交互。计算系统由硬件、软件以及它管理的数据组成。计算机硬件是构成机器的物理元素的集合:盒子、电路板、芯片、电线、磁盘驱动器、键盘、显示器、打印机等。计算机软件是提供计算系统执行的指令的程序集合。计算机的核心是它管理的信息。没有数据,硬件和软件就毫无用处。
通信
应用程序
操作系统
编程
硬件
信息
1.2.1 定义术语:硬件、软件、外设、网络、人力资源。
计算系统就像一个食人魔,由许多层组成。每层在系统的整体设计中都扮演着特定的角色。这些层在右侧的图中进行了说明。
每一层本身并不复杂。事实上,计算机实际上只执行非常简单的任务——它只是执行这些任务的速度快到令人眼花缭乱,以至于许多简单的任务可以组合起来完成更大、更复杂的任务。当将各种计算机层组合在一起时,每层都发挥着各自的作用,这些基本概念的组合可以产生惊人的效果。
最内层,信息,反映了我们在计算机上表示信息的方式。在许多方面,这纯粹是概念性的。计算机上的信息使用二进制数字(1 和 0)进行管理。要理解计算机处理,首先必须理解二进制数系统及其与其他数系统的关系。
下一层,硬件,包括计算机系统的物理硬件。计算机硬件包括门和电路等设备,它们以基本的方式控制电流的流动。核心电子电路产生了专门的硬件组件,例如计算机的中央处理单元 (CPU) 和内存。在计算机在日常事务中发挥实际作用的家庭环境中,硬件还包括外部外设,例如鼠标、键盘和屏幕。
编程层处理软件,即用于完成计算和管理数据的指令。程序可以采取多种形式,在许多级别上执行,并用许多不同的语言实现。然而,尽管编程问题种类繁多,但目标仍然相同:解决问题。
每台计算机都有一个操作系统 (OS) 来帮助管理计算机的资源。像 Linux 这样的操作系统可以帮助我们与计算机系统交互并管理硬件设备、程序和数据交互的方式。了解操作系统的功能是理解计算机的关键。
之前的(内部)层专注于使计算机系统正常工作。相反,应用程序层专注于使用计算机来解决特定的现实世界问题。我们运行应用程序来利用计算机在其他领域的能力,例如帮助我们设计建筑物或玩游戏。面向领域的计算机软件工具的范围非常广泛,涉及计算的特定子学科,例如信息系统、人工智能和模拟。
1.2.2 描述计算机在网络世界中可以扮演的角色。
计算机不再孤立地存在于某人的桌面上。我们使用计算机技术进行通信,而这种通信是计算系统运行的基本层。计算机被连接到网络中,以便它们可以共享信息和资源。例如,互联网演变成一个全球网络,因此地球上几乎没有地方无法通过计算机技术进行通信。万维网使这种通信相对容易;它彻底改变了计算机的使用,并使其为公众所用。
计算机在当今互联网中可以扮演的角色是简单的客户端或最终用户;Web 服务器;电子邮件服务器,处理电子邮件消息的计算机;DNS 服务器,将域名(如 wikibooks.org)转换为对计算机友好的地址(如 91.198.174.193)的计算机;路由器或处理网络数据的计算机;或防火墙,负责控制允许和禁止连接的计算机,通常用于安全目的。
使用计算机技术会导致安全风险增加。一些安全问题在整个计算机系统的低级别得到解决。然而,许多问题涉及保持个人信息的安全。
1.2.3 讨论与网络世界相关的社会和伦理问题。
许多讨论的高级问题是信息安全,即组织或个人执行的一套技术和策略,以确保对受保护数据的适当访问。信息安全确保只有经过授权的人才能读取或修改数据,并且在需要时,授权用户可以访问这些数据。
信息安全可以描述为机密性、完整性和可用性的综合。虽然信息安全的这些方面相互重叠和交互,但它们定义了看待问题的三种具体方式。任何对信息安全问题的良好解决方案都必须充分解决这些问题。
- 机密性是指确保关键数据免受未经授权的访问。例如,您不希望任何人都能了解您储蓄账户中有多少钱。
- 完整性是指确保数据只能通过适当的机制进行修改。它定义了您可以对信息的信任程度。当然,您不希望黑客能够修改您的银行余额,但您也不希望出纳员(具有授权访问权限)以不当的方式或未经您的批准修改您的余额。此外,您不希望您的余额因电源波动而发生变化,也不希望在数据电子传输过程中受到损害。
- 可用性是指授权用户在需要时能够访问合法目的的适当信息的程度。即使数据受到保护,如果您无法访问它,它也没有用。如果未采取措施备份数据和维护冗余访问机制,则硬件问题(例如磁盘崩溃)会导致可用性问题。此外,黑客可能会发起攻击,用无用的传输“淹没”网络,从而阻止合法用户连接到远程系统。
从商业角度来看,信息安全规划需要风险分析,即确定哪些数据需要保护、识别对这些数据的风险以及计算风险成为现实的可能性。风险分析完成后,可以实施计划来相应地管理风险。风险是威胁与漏洞的组合。我们希望最大限度地减少对可能让我们面临最大风险的威胁的漏洞。这些威胁可能是恶意的,例如黑客造成的威胁,也可能是意外的,例如系统崩溃。
信息安全专家采用的另一个原则是将可用的数据管理权限分开,以防止任何个人拥有对系统产生重大影响的权限。该原则通常通过要求关键活动需要冗余检查和/或批准来实施。例如,大型金融交易通常需要单独的授权流程。管理员应只为个人分配执行其工作职能所需的权限。
确保未经授权的用户无法访问您的帐户对于数据的机密性和完整性至关重要。
开发新系统
[edit | edit source]1.2.4 在规划新系统时,确定相关的利益相关者。
组织中的利益相关者是指任何影响或受组织目标影响的群体或个人。利益相关者可能负责设计,拥有经济利益,或负责与客户组织的维护。
利益相关者的示例包括:用户、开发人员、立法者和决策者。
当前软件质量方法
[edit | edit source]1.2.5 描述从利益相关者那里获取需求的方法。
有很多方法可以从利益相关者那里获取需求。
一种方法是观察:这涉及到在系统工作时监控系统。例如,开发人员可能会在工会工作人员在一天中注册新成员时进行观察,并记录下流程(以及提出的问题、所需信息等)。虽然这种方法不会产生可量化的数据,但观察可以让开发人员对流程产生人类洞察力,而其他方法可能无法获得。此外,在没有观察的情况下,不可能改变系统。
调查是收集数据的更容易方法。由于它们可以远程进行,因此它们更便宜且耗时更短。调查会产生清晰的数字,易于进行统计。例如,可以向图书馆的所有客户发送电子邮件,询问他们如何使用当前(非计算机化)借书系统。然而,回复率可能很低,或者回复可能会存在偏差。
访谈可以让研究人员与利益相关者互动。它们是收集数据的更直接方法。但是,较小的样本量仍然是一个风险,以及利益相关者面临的社会压力。
重要的是要牢记利益相关者的隐私。例如,如果为报告政府机构腐败的系统设计系统,则可能不希望在设计过程中公布采访举报者的身份,以保护消息来源。
1.2.6 描述收集信息以获得可行解决方案的适当技术。
如果有一个被替换的旧系统,必须首先检查当前系统。此外,可以分析类似的竞争产品。此外,有必要考虑组织能力(例如,组织拥有的资金、资源等)并有时执行文献搜索(例如,谷歌它)以获得适当的技术。
软件工程
[edit | edit source]1.2.7 构建合适的表示以说明系统需求。
流程图
[edit | edit source]流程图是一种类型的图表,它表示算法、工作流程或过程,显示步骤作为各种类型的框,并通过连接它们以箭头来显示它们的顺序。
数据流图
[edit | edit source]数据流图与系统流程图非常相似,只是它们没有显示正在做出的决策。它们只显示数据采取的不同路径,数据保存的位置以及数据处理的位置。
结构图
[edit | edit source]结构图将计算机系统分解为其子模块。它们代表了计算机科学的模块化方面。(碎片化/专业化之间的平衡)
社会和伦理方面
[edit | edit source]1.2.11 讨论与引入新的 IT 系统相关的社会和伦理问题。
- 可靠性:系统必须提供与现实相符的准确数据。过时或不正确的数据可能会导致严重的社会问题。例如,一个银行系统表明客户没有偿还贷款 - 尽管他们在现实中已经偿还了 - 可能会给最终用户造成重大压力。
- 安全:确保数据的机密性和完整性是一个重要的伦理方面,尤其是在处理敏感信息的组织中(例如无国界医生)
- 隐私和匿名:考虑洋葱路由项目,他们开发了洋葱浏览器。在阿拉伯之春期间,抗议者使用洋葱路由访问社交媒体并报告针对抗议者的罪行,当时政府封锁了社交媒体。确保保护这些抗议者的身份是洋葱路由开发人员在设计洋葱路由时非常重要的考虑因素。
- 知识产权:像海盗湾这样的文件共享网站挑战了传统的版权理念。这些是当今互联网上激烈争论的热门话题。
- 监视:随着计算机系统在日常生活中越来越普遍,重要的是确保从用户那里跟踪和收集数据的可能性保持受控并保护用户。
- 全球化:随着计算机系统在世界范围内越来越普遍,重要的是考虑与世界各地交换数据相关的潜在问题。例如,将数据分发给不同时区的人员会带来挑战。不同语言的字符编码在 1980 年代也是一个重大问题。
形式验证
[edit | edit source]1.2.8 描述原型用于向客户展示拟议系统的目的。
软件原型是创建软件应用程序原型的活动,即正在开发的软件程序的不完整版本。原型有几个优点:软件设计师和实施人员可以在项目早期从用户那里获得宝贵的反馈。客户和承包商可以比较所制作的软件是否符合软件规格。
1.2.9 讨论设计过程中迭代的重要性。
原型通常与迭代设计流程一起使用,以快速构建适合客户需求的产品。迭代设计允许根据测试结果快速改进和完善产品。例如,Windows 8.1 是在 Windows 8 失败后不久发布的。
1.2.10 解释在设计过程中没有让最终用户参与的可能后果。
最终用户的不满,因为他们的需求可能无法得到满足。
人机交互
[edit | edit source]1.2.12 定义可用性一词。
可用性是指人造物品的易用性和易学性。使用对象可以是软件应用程序,也可以是任何人类交互的对象。一个程序越有效、越令人满意和越令人难忘,它就越可用。
1.2.13 识别常用数字设备中的一系列可用性问题。
考虑数码相机。它们通常有很小的按钮,身体残疾的用户很难使用。此外,盲人用户无法使用取景器。
1.2.14 确定可以用来提高系统可访问性的方法。
可访问性定义了系统如何才能被访问以进行信息交换和操作。这通常涉及键盘、鼠标和屏幕。但是,对于某些人来说,使用这些方法访问系统是困难或不可能的。
改进系统可访问性的方法
Touch screens Voice recognition Text-to-speech Braille keyboards Braille printers
例如,请参见史蒂芬·霍金。其他方法包括:改进语言范围,使用户界面更直观/更友好,减少术语和复杂术语的使用,使系统通过互联网可用,并降低系统的成本(让更多人使用它)。
1.2.15 确定系统中出现的一系列可用性问题。
语音识别系统经常误解口音/方言,并且不能很好地处理环境噪音。
1.2.16 讨论人类与机器之间互动在道德、伦理、社会、经济和环境方面的意义。
- 环境:数据中心使用大量电力。但是,像冰岛这样的国家已经投资了 100% 可再生能源数据中心。计算机还通过引入远程办公减少了旅行的污染成本。
- 道德: 拖网监控程序,例如美国国家安全局的 棱镜计划 和 XKeyScore 计划,可以说侵犯了全球互联网用户的隐私权。
- 社会: 文化全球化。使来自世界不同地区的人们能够即时见面。为所有人提供便捷、廉价的娱乐。
- 经济: 人们可能会失去工作。打字员是典型的例子。