1.软件设计的任务与目标
软件设计的任务:根据 SRS 提出的系统目标,设计出软件系统的体系结构、接口、数据结构和处理流程,形成软件的具体实现方案,并撰写 SDS。
软件设计目标:正确性、健壮性、灵活性、可重用性、高效性
1、正确性:满足应用程序的需求。
2、健壮性:指软件对于规范要求以外的输入情况的处理能力,即在异常情况下,软件
能够正常运行的能力。
3、灵活性:允许代码修改平稳地发生,而不会波及到很多其他的模块。
4、可重用性:代码可重复使用。
5、高效性:一般指两个方面,执行效率,以及存储效率。
良好设计的特征:可扩展性、灵活性、可插入性
1、可扩展性:新功能容易加入,而且不会影响已有功能,即不“僵硬”
2、灵活性:修改一个地方,不会影响其他,即不“脆弱”
3、可插入性:用一个容易替换另一个类,只要它们实现相同接口即可,即低“黏度”
面向对象的三大特征:继承性、封装性、多态性
1、继承性:特殊类的对象具有其一般类的对象的全部属性和行为,即称特殊类对一般
类的继承。
2、封装性:把对象的属性和行为组合成为一个独立的单位或部件,并尽可能隐蔽对象
的内
部细节,而只保留必要的对外接口,使之与外部发生联系。
3、多态性:是指不同类型的对象接收相同的消息时,产生不同的行为
2.软件体系结构的内涵与主要类型
一个系统的高层次的组织结构,表现为系统的组件、组件之间的相互关系、组件与环境之间的相互关系以及设计和进化的原理。体系结构设计是软件设计第一步,重点关注:
1)如何对一个系统的组件进行组织;
2)如何对当前系统的总体结构进行设计。
体系结构模式(Architecture Pattern):根据软件设计开发经验总结出来,且命名的,针对某一类型软件具有通用性和推广价值的设计方案。
逻辑架构 (Logical Arch.):软件逻辑单元(函数类)的组成及其关系进程架构 (Process Arch.):系统运行时进程(线程)的构成及其控制。与系统性能有关。
开发架构 (Development Arch.):软件物理单元(动态库、文件、可执行程序、程序包)的组成及其关系。与软件开发管理及程序员有关。
1
《软件工程》第四章学习 告 西安邮电大学软件工程专业
物理架构:系统的 络拓扑结构、硬件构成以及软件的部署方案。与系统工程师规划部署方案有关。该架构又称为系统架构(System Arch.)
3.软件设计的流程、内容与主要的技术
步骤一:
市场调研:技术和市场要结合才能体现最大价值。
步骤二:
需求分析 这个阶段需要出三样东西。
1.用户视图 :数据词典和用户操作手册。用户视图是该软件用户(包括终端用户和管理用户)所能看到的页面样式,这里面包含了很多操作方面的流程和条件。
2.数据词典 :指明数据逻辑关系并加以整理的数据,完成了数据词典,数据库的设计就完成了一半多。用户操作手册是指明了操作流程的说明书。用户操作流程和用户视图是由需求决定的,因此应该在软件设计之前完成,完成这些,就为程序研发提供了约束和准绳。
3.需求分析 :作为项目设计者应当完整的做出项目的性能需求说明书,技术专家和需求方(客户或公司市场部门)能够有真正的沟通和了解
步骤三:
概要设计:将系统功能模块初步划分,并给出合理的研发流程和资源要求。作为快速原型设计方法,完成概要设计就可以进入编码阶段了,通常采用这种方法是因为涉及的研发任务属于新领域,技术主管人员一上来无法给出明确的详细设计说明书,但并不是说详细设计说明书不重要,事实上快速原型法在完成原型代码后,根据评测结果和经验教训的总结,还要重新进行详细设计的步骤。
步骤四:
详细设计 :详细设计说明书应当把具体的模块以最‘干净’的方式提供给编码者,使得系统整体模块化达到最大;一份好的详细设计说明书,可以使编码的复杂性减低到最低,实际上,严格的讲详细设计说明书应当把每个函数的每个参数的定义都精细的提供出来,从需求分析到概要设计到完成详细设计说明书,一个软件项目就应当说完成了一半了。换言之,一个大型软件系统在完成了一半的时候,其实还没有开始一行代码工作。
步骤五:
2
《软件工程》第四章学习 告 西安邮电大学软件工程专业
编码 :在规范化的研发流程中,编码工作在整个项目流程里最多不会超过 1/2,
通常在 1/3 的时间,设计过程完成的好,编码效率就会极大提高,编码时不同模块之间
的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度,让
很多程序员因此被迫停下工作等待,这种问题在很多研发过程中都出现过。编码时的相
互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug 永远存在,必须永远
面对这个问题
步骤六:
测试
测试有很多种:按照测试执行方,可以分为内部测试和外部测试;按照测试范围,可以分为模块测试和整体联调;按照测试条件,可以分为正常操作情况测试和异常情况测试;按照测试的输入范围,可以分为全覆盖测试和抽样测试。测试同样是项目研发中一个相当重要的步骤,对于一个大型软件,3 个月到 1 年的外部测试都是正常的,因为永远都会又不可预料的问题存在。
完成测试后,完成验收并完成最后的一些帮助文档,整体项目才算告一段落,当然日后少不了升级,修补等等工作,要不停的跟踪软件的运营状况并持续修补升级,知道这个软件被彻底淘汰为止
软件开发方法:
软件开发方法(Software Development Method)是指软件开发过程所遵循的办法和步骤。软件开发活动的目的是有效地得到一些工作产物,也就是一个运行的系统及其支持文档,并且满足有关的质量要求。软件开发是一种非常复杂的脑力劳动,所以经常更多讨论的是软件开发方法学,指的是规则、方法和工具的集成,既支持开发,也支持以后的演变过程(交付运行后,系统还会变化,或是为了改错,或是为了功能的增减)。
关于组成软件开发和系统演化的活动有着各种模型(参见软件生存周期,软件开发模型,软件过程),但是典型地都包含了以下的过程或活动:分析、设计、实现、确认(测试验收)、演化(维护)。
有些软件开发方法是专门针对某一开发阶段的,属于局部性的软件开发方法。
特别是软件开发的实践表明,在开发的早期阶段多做努力,在后来的测试和维护阶段就会使费用较大地得以缩减。因此,针对分析和设计阶段的软件开发方法特别受到重视。其它
3
《软件工程》第四章学习 告 西安邮电大学软件工程专业
阶段的方法,从程序设计发展的初期起就是研究的重点,
已经发展得比较成熟(参见程序设计,维护过程)。除了分阶段的局部性软件开发方法之外,还有覆盖开发全过程的全局性方法,尤为软件开发方法学注意的重点。
对软件开发方法的一般要求:当提出一种软件开发方法时,应该考虑许多因素,包括:
① 覆盖开发全过程,并且便于在各阶段间的过渡;
② 便于在开发各阶段中有关人员之间的通信;
③ 支持有效的解决问题的
④ 支持系统设计和开发的各种不同途径;
⑤ 在开发过程中支持软件正确性的校验和验证;
⑥ 便于在系统需求中列入设计、实际和性能的约束;
⑦ 支持设计师和其他技术人员的智力劳动;
⑧ 在系统的整个生存周期都支持它的演化;
⑨ 受自动化工具的支持。此外,在开发的所有阶段,有关的软件产物都应该是可见和可控的;软件开发方法应该可教学、可转移,还应该是开放的,即可以容纳新的技术、管理方法和新工具,并且与已有的标准相适应。
4.软件设计说明书的用途和主要内容
内容:
1.前言
1.1 编写目的
1.2 项目概述
1.3 术语定义、缩写词
1.4 引用文档
2.设计约束
2.1 设计目标
2.2 设计原则
2.3 设计约束
2.3.1 遵循标准
2.3.2 环境与工具
2.3.3 技术限制
3.逻辑架构设计
3.1 设计决策
3.2 软件单元
3.3 处理流程
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91628 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!