软件工程专业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);

– 软件销售与市场人员;

– 咨询师、需求分析师;

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

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

– 维护人员。

posted @ 2018-11-21 20:43  要去东南方向的  阅读(163)  评论(0)    收藏  举报