您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 2软件工程的核心概念与思想part1
2软件工程的核心概念与思想前次课内容回顾:软件工程概论•软件的基本概念•软件的分类、特性、发展过程•软件工程产生的历史根源•软件危机Æ软件工程•“软件神话”的可怕之处•软件工程的基本概念•什么是“软件工程”?•软件工程的范围和目标•软件工程的四大组成部分第一章概论软件工程第一章概论2软件工程的核心概念与思想2软件工程的核心概念与思想主要内容2.1软件工程的本质:不同抽象层次之间的映射与转换2.2软件工程所关注的目标2.3软件开发中的多角色2.4“软件工程”的背后(自学)2.5软件工程=最佳实践2.6软件工程的核心理论概念2.7软件工程的学习方法第一章概论2.1软件工程的本质2软件工程的核心概念与思想[课堂讨论1]•[课堂讨论1]每四人一组,通过讨论来回答。•背景:你要开发一段程序,输入班级所有人的成绩,按成绩由高到低的次序进行排序;•问题:你该如何去做?•时间:2分钟•随机选择三组,每组选择一名代表口头陈述本组的讨论结果2软件工程的核心概念与思想[课堂讨论1]•方法1:直接写程序;•方法2:先设计算法,然后再用程序语言实现;•方法3:先建立数学模型,然后转换为算法,然后编程实现;现实问题成绩排序系统现实问题成绩排序系统冒泡排序算法现实问题成绩排序系统冒泡排序算法数学模型2软件工程的核心概念与思想映射与转换•任何软件系统开发的共同本质在于:•从现实空间的需求到计算机空间的软件代码之间的映射与转换;现实空间的需求软件系统实现途径:映射与转换2软件工程的核心概念与思想单步映射与多步映射现实空间的需求软件系统单步映射中间状态1中间状态21/22/21/32/33/32软件工程的核心概念与思想[课堂讨论2]•[课堂讨论2]每四人一组,通过讨论来回答。•问题:单步映射与多步映射的优缺点分别都是什么?•时间:2分钟•随机选择三组,每组选择一名代表口头陈述本组的讨论结果2软件工程的核心概念与思想单步映射与多步映射现实空间的需求软件系统正确的实现途径实际的实现途径需求与软件实现的偏差2软件工程的核心概念与思想单步映射与多步映射现实空间的需求软件系统中间状态1中间状态2实际的实现途径正确的实现途径正确的实现途径实际的实现途径需求与软件实现的偏差需求与软件实现的偏差2软件工程的核心概念与思想软件工程的作用现实空间的需求软件系统中间状态1中间状态2需求与软件实现的偏差需求与软件实现的偏差2软件工程的核心概念与思想软件工程的两个映射之一:概念映射•概念映射:问题空间的概念与解空间的模型化概念之间的映射•例如:•“学生”ÆClassStudent(No,Name,Dept,Grade)•“计算机学院大三学生张三”ÆObjectStudent(1050310401,张三,计算机,大三)•“学生成绩”ÆStructStudentScore(StudentNo,CourseNo,Score)•“张三的软件工程课成绩为85分”ÆZS_SE_SCORE(1050310401,软件工程,85)2软件工程的核心概念与思想软件工程的两个映射之二:处理逻辑映射•处理逻辑映射:问题空间的处理逻辑与解空间处理逻辑之间的映射•例如:•计算某班学生的平均分数ÆdoublecalculateAverageScore(Struct[]scores){冒泡排序法;}学生平均成绩算法1计算学生平均成绩科目+年级/班学生成绩文件映射之后的处理逻辑2软件工程的核心概念与思想软件工程的作用•为了实现以上两个映射,软件工程需要解决以下问题:•需要设置哪些抽象层次——单步映射?多步映射?几步?•每一抽象层次的概念、术语与表达方式——公式?图形?文字?•相邻的两个抽象层次之间如何进行映射——需要遵循哪些途径和原则?2软件工程的核心概念与思想软件工程:不同抽象层次之间的映射过程问题空间需求模型设计模型实现模型部署与运行模型需求建模语言设计建模语言编程语言部署与运行配置语言验证/确认软件(解)空间需求分析方法系统设计方法程序设计方法部署与维护方法2软件工程的核心概念与思想软件工程:不同抽象层次之间的映射过程•需求分析:在一个抽象层上建立需求模型的活动,产生需求规约(RequirementSpecification),作为开发人员和客户间合作的基础,并作为以后开发阶段的输入。现实空间的需求Î需求规约•设计:定义了实现需求规约所需的系统内部结构与行为,包括软件体系结构、数据结构、详细的处理算法、用户界面等,即所谓设计规约(DesignSpecification),给出了实现软件需求的软件解决方案。需求规约Î设计规约2软件工程的核心概念与思想软件工程:不同抽象层次之间的映射过程•实现:由设计规约到代码的转换,以某种特定的编程语言,对设计规约中的每一个软件功能进行编码。设计规约Î代码•验证/确认:一种评估性活动,确定一个阶段的产品是否达到前阶段确立的需求(verification),或者确认开发的软件与需求是否一致(validation)。第一章概论2.2软件工程所关注的目标2软件工程的核心概念与思想软件工程所关注的对象•产品:各个抽象层次的产出物;•过程:在各个抽象层次之间进行映射与转换;•软件工程具有“产品与过程二相性”的特点,必须把二者结合起来去考虑,而不能忽略其中任何一方。软件需求软件系统软件工程方法2软件工程的核心概念与思想软件工程所关注的目标•功能性需求(FunctionalRequirements):系统能够完成所期望的工作的能力•完备性:软件能够支持用户所需求的全部功能的能力;•正确性:软件按照需求正确执行任务的能力;•健壮性:在异常情况下,软件能够正常运行的能力•容错能力;•恢复能力;——正确性描述软件在需求范围之内的行为,而健壮性描述软件在需求范围之外的行为。•可靠性:在一定的环境下,在给定的时间内,系统不发生故障的概率,或者是快速从错误状态恢复到正确状态的能力。2软件工程的核心概念与思想软件工程所关注的目标•非功能性需求(Non-FunctionalRequirements):系统能够完成所期望的工作的性能与质量•性能:软件的“时间-空间”效率;•易用性:用户使用软件的容易程度,用户容易使用和学习;•清晰性:易读、易理解,可以提高团队开发效率,降低维护代价;•安全性:在对合法用户提供服务的同时,阻止未授权用户的使用;•可扩展性:软件适应“变化”的能力,系统很容易被修改从而适应新的需求或采用新的算法、数据结构的能力;•兼容性:不同产品相互交换信息的能力;•移植性:是软件不经修改或稍加修改就可以运行于不同软硬件环境(CPU、OS和编译器)的能力;•经济性:开发成本、开发时间和对市场的适应能力。•商业质量:上市时间、成本/受益、目标市场、与老系统的集成、生命周期长短等。2软件工程的核心概念与思想[课堂讨论3]•[课堂讨论3]每四人一组,通过讨论来回答。•问题1:假设你是一家跨国公司的老板,你们需要建造一座100层的摩天大厦。你可能会提出哪些功能性需求与非功能性需求?•问题2:你认为Windows的下一个版本较之目前的版本应增加哪些功能性需求与非功能性需求?•时间:5分钟•随机选择三组,每组选择一名代表口头陈述本组的讨论结果第一章概论2.3软件开发中的多角色2软件工程的核心概念与思想[课堂讨论4]•[课堂讨论4]每四人一组,通过讨论来回答。•背景:你正在进行野外生存训练,身处一个热带原始森林,自然环境恶劣,你需要在此生存一周。•问题:你希望有哪些人加入你的团队才能完成此任务?他们应具备哪些能力?•时间:5分钟•随机选择三组,每组选择一名代表口头陈述本组的讨论结果2软件工程的核心概念与思想软件开发中的多角色•在软件开发过程中同样需要多种角色之间紧密协作,才能高质量、高效率的完成任务;•顾客企业:决策者(CxO)、终端用户、系统管理员;•软件开发公司:•决策者(CxO);•软件销售与市场人员;•咨询师、需求分析师;•软件架构师、软件设计师;•开发人员:开发经理、程序员;•维护人员。2软件工程的核心概念与思想[课堂讨论5]•[课堂讨论5]每四人一组,通过讨论来回答。•每人从上页列表中选择一个角色,并模拟一个实际的软件项目开发,从你扮演的角色的角度出发,列出自己所关心的方面都有哪些。•你与同组其他角色的关注点之间是否有重叠的情况?•你与同组其他角色的关注点之间是否有冲突的情况?•时间:5分钟•随机选择三组,每组选择一名代表口头陈述本组的讨论结果2软件工程的核心概念与思想视角不同,需求各有不同易集成性易集成性易用性易用性功能性功能性价格价格开发成本开发成本按时交付按时交付性能性能稳定性与可维护性稳定性与可维护性易调试性易调试性可修改性可修改性可测试性可测试性结构清晰性结构清晰性易安装性易安装性终端用户终端用户销售人员销售人员开发经理开发经理开发人员开发人员系统管理员系统管理员维护人员维护人员顾客顾客2软件工程的核心概念与思想视角不同,需求各有不同Logical/DesignView(逻辑/设计视图)ImplementationView(开发视图)ProcessView(进程视图)Deployment/PhysicalView(配置/物理视图)UsecaseView(用例视图)最终用户:功能需求系统集成人员:运行时性能、可扩展性、吞吐量等编程人员:静态软件模块(源代码、数据文件)的组织与管理系统部署人员:运行时系统拓扑、安装、通信等架构师:体系结构的设计与发现
本文标题:2软件工程的核心概念与思想part1
链接地址:https://www.777doc.com/doc-161799 .html