首页 > 软件工程专业1

软件工程专业1

任何软件系统开发的共同本质:

– 从现实空间的需求到计算机空间的软件代码之间的映射与转换;

软件工程本质:

用严格的规范和管理手段来缩小偏差,通过牺牲“时间”来提高“质量”。

 软件工程的两个映射:

概念映射:问题空间的概念与解空间的模型化概念之间的映射

业务逻辑映射:问题空间的处理逻辑与解空间处理逻辑之间的映射

软件工程的作用:

为了实现以上两个映射,软件工程需要解决以下问题:

– 需要设置哪些抽象层次——单步映射?多步映射?几步?

– 每一抽象层次的概念、术语与表达方式——公式?图形?文字?

– 相邻的两个抽象层次之间如何进行映射——需要遵循哪些途径和原则?

软件工程:不同抽象层次之间的映射过程

 需求分析:在一个抽象层上建立需求模型的活动,产生需求规约(Requirement Specification) ,作为开发人员和客户间合作的基础,并作为以后开发阶段的输入。

软件设计:定义了实现需求规约所需的系统内部结构与行为,包括软件体系结构、数据结构、详细的处理算法、用户界面等,即所谓设计规约(Design Specification) ,给出了实现软件需求的软件解决方案。

实现:由设计规约到代码的转换,以某种特定的编程语言,对设计规约中的每一个软件功能进行编码。

验证/ 确认:一种评估性活动,确定一个阶段的产品是否达到前阶段确立的需求(verification) ,或者确认开发的软件与需求是否一致(validation)。

软件工程所关注的对象

产品:各个抽象层次的产出物;

过程:在各个抽象层次之间进行映射与转换;

软件工程所关注的目标

功能性需求(Functional Requirements)(FR):软件所实现的功能达到它的设计规范和满足用户需求的程度。

– 功能1、功能2、…、功能n。

– 完备性:软件能够支持用户所需求的全部功能的能力;

– 正确性:软件按照需求正确执行任务的能力;

– 健壮性:在异常情况下,软件能够正常运行的能力

• 容错能力;

• 恢复能力;

——正确性描述软件在需求范围之内的行为,而健壮性描述软件在需求范围之外的行为。

– 可靠性:在给定的时间和条件下,软件能够正常维持其工作而不发生故障的能力。

 非功能性需求(Non-Functional Requirements)(NFR):系统能够完成所期望的工作的性能与质量。

– 效率:软件实现其功能所需要的计算机资源的大小,“时间-空间”;

– 可用性:用户使用软件的容易程度,用户容易使用和学习;

– 可维护性:软件适应“变化”的能力,系统很容易被修改从而适应新的需求或采用新的算法、数据结构的能力;

– 可移植性:软件不经修改或稍加修改就可以运行于不同软硬件环境(CPU、OS和编译器)的能力;

– 清晰性:易读、易理解,可以提高团队开发效率,降低维护代价;

– 安全性:在对合法用户提供服务的同时,阻止未授权用户的使用;

– 兼容性:不同产品相互交换信息的能力;

– 经济性:开发成本、开发时间和对市场的适应能力。

– 商业质量:上市时间、成本/受益、目标市场、与老系统的集成、生命周期长短等。

 

不同目标之间的关系——折中(tradeoff)

不同类型的软件对质量目标的要求各有侧重:

– 实时系统:侧重于可靠性、效率;

– 生存周期较长的软件:侧重于可移植性、可维护性;

多个目标同时达到最优是不现实的:目标之间相互冲突

软件开发中的多角色

在软件开发过程中同样需要多种角色之间紧密协作,才能高质量、高效率的完成任务。

顾客企业(Client ,甲方) :

– 决策者(CxO)、终端用户(End User)、系统管理员;

软件开发公司(Supplier ,乙方) :

– 决策者(CxO);

– 软件销售与市场人员;

– 咨询师、需求分析师;

– 软件架构师、软件设计师;

– 开发人员:开发经理/项目经理、程序员;

– 维护人员。

转载于:https://www.cnblogs.com/sx1106/p/9997721.html

更多相关:

  • 它的主要特点有: • 使用了kuwo.cn(酷我音乐盒)的网络资源, 内容非常丰富. • 可以播放/下载mp3或者ape格式的歌曲, 也可以直接播放MV(有mp4和mkv两种格式), 并且播放时文件会自动缓存到本地, 不需要再次下载, MV也会缓存到硬盘的, 很方便. • 可以收听电台. • 可以显示歌词. • 酷我音乐盒拥有的其...

  •   经过几天的阅读,终于将这本书看完了,读完了整个故事,我进行了简单的总结,感觉不仅仅是在写代码与计算机或软件交流,更多的是做事行为。   首先是做事得有目标。无论做什么事情都要有目标和动力,这样做起事来无论是在质量还是时间上才会有跟假的效果,就像我们做软件一样,我们的目标是什么,要做一个什么样的软件,要有怎样的预期效果,需要多少时间...

  •   类把属性和方法作了封装!   总结: 面向过程程序设计:数据结构 + 算法 主要解决科学计算问题,用户需求简单而固定 特点: 分析解决问题所需要的步骤 利用函数实现各个步骤 依次调用函数解决问题 问题: 软件可重用性差 软件可维护性差 构建的软件无法满足用户需求 面向对象程序设计:由现实世界建立软件模型 将现实世界中的事物直接...

  • 计算机科学和软件工程同属计算机类专业,他们的联系确实非常紧密,但还是有很多区别的。 计算机科学:   偏重于硬件与计算机理论方面的学习研究,像计算机原理,计算机系统结构等方面的内容。当然也会涉及软件方面,但不是太深。而软件工程则主要偏重于应用与实践,主要是培养适应国内外软件产业市场需求的高素质、多层次、实用型软件人才,这也是教育部专...

  • 需求...

  • 这个月开始对《需求分析与系统设计》的阅读,在读这本书之前我先看了看网上对这本书的书评,了解到这本书论述了需求分析和系统设计的迭代增量式过程,并讨论了软件生命周期的其他阶段(包括实现、测试和变化管理)。本书提出了运用UML(统一建模语言)进行信息系统分析和设计的方法,以克服大型系统模型的复杂性;改进软件体系结构;提高软件可维护性和可扩展...

  • 在第一部分中我们就引入了复变函数的概念,但由于复变函数是二维点集之间的映射,所以作出复变函数的图像并不简单。事实上,研究复变函数的图像性质,主要是观察它将 平面上的平面图形映成 平面( )上的什么图形——也就是研究两个平面之间的图像的大小、方向、形状之间的关系。在这一章的内容中,不必太过纠结代数上的严谨性和证明的完备性。即使前面...

  • 2010年5月17日 简介: 前面的笔记着重讲解了实体类以及其class-mapping options,本章笔记将关注值类型的形式以及其OR映射选项。 值类型一般可分为两类:JDK类型和用户自定义类型。本章首先从实体类的使用JDK类型的properties开始,讲解基本的映射元素和映射属性;然后关注自定义的value-type的c...

  • CreateFileMapping   VB声明   Declare Function CreateFileMapping Lib "kernel32" Alias "CreateFileMappingA" (ByVal hFile As Long, lpFileMappigAttributes As SECURITY_ATT...