1、一、软件危机与软件工程1、软件危机 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。(正常、不正常运行软件都具有这种问题) 2、软件危机的原因1)软件本身特点造成;程序规模庞大;程序复杂性随着程序规模的增加而呈指数上升。2)软件开发与维护的方法不正确。主要表现: (a)忽视软件需求分析; (b)认为软件开发就是写程序并使之运行; (c)轻视软件维护;3、解决软件危机的途径:1、组织管理:软件开发不是某种个体劳动的神秘技巧,软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。2、方法:应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索
2、更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。3、工具:应该开发和使用更好的软件工具。在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。4、软件工程包括哪7条基本原理?1. 用分阶段的生命周期计划严格管理;2. 坚持进行阶段评审;3. 实行严格的产品控制;4. 采用现代程序设计技术;5. 结果能清楚地审查;6. 开发小组的人员应该少而精;7. 承认不断改进软件工程实践的必要性。5、软件开发流程?1)、问题定义2)、可行性研究3)、需求分析4)、总体设计5)、详细设计6)、编码和单元测试7)、综合测试
3、8)、软件维护6、软件开发模型瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、rational统一过程、敏捷过程与极限编程、微软过程二、可行性研究1. 系统流程图 系统流程图是概括地描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况。 2. 数据流图 数据流图描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。3. 数据字典 数据字典:对数据流图中包含的所有元素的定义的集合;三、需求分析1、需求分析目的及作用需求分析是软件分析时期的最后一个阶段,它的
4、基本任务是准确地回答“系统必须做什么?”这个问题。需求分析的作用是对目标系统提出完整、准确、清晰、具体的要求。2、需求分析的过程1)、 访谈 正式访谈:系统分析员提出事先准备好的问题。 非正式访谈:提出一些用户可以自由回答的开放性问题,鼓励被访者说出 自己的想法。 需要访问大量人员时,利用调查表访问较佳。2) 、面向数据流自顶向下求精 借助数据流图、数据字典、IPO图等,细化、完善详细的数据流图,等到各处理环节对应的功能。3) 、简易的应用规格说明技术 面向团队的需求收集法: (用户与开发者配合)l 初步访谈;l 开发者和用户分别写出“产品需求”;l 开会讨论,各自展示需求列表;l 得出一致意
5、见,为需求列表制定小型规格说明;l 根据会议成果,起草完整的软件需求规格说明。4)、快速建立软件原型 快速建立能演示目标系统主要功能的程序。(1)第四代技术 包括:数据库查询和报表语言、程序和应用系统生成器以及其他非常高级的非过程语言,其可以快速生成可执行代码(2)可重用的软件构件使用一组已有的软件构件来装配原型 (3)形式化规格说明和原型环境四、总体设计1、软件设计软件设计一般包括( 总体设计 )和详细设计阶段等两个阶段,在软件设计过程中应该遵循的基本原理和相关概念有( 模块化 )、( 抽象 )、( 逐步求精 )、( 信息隐藏和局部化 )和( 模块独立 )。2、面向数据流的设计方法面向数据流
6、的软件设计方法,一般是把数据流图中数据流划分为( 变换流 )和( 事务流 ),再将数据流图映射为软件结构。3、启发式规则1) 改进软件结构提高模块独立性2) 模块规模应该适中3) 深度、宽度、扇入和扇出都应适当4) 模块的作用域应该在控制域之内5) 力争降低模块接口的复杂程度6) 设计单入口单出口的模块7) 模块功能应该可以预测4、模块间深度:表示软件结构中控制的层数、往往能粗略的标志一个系统的大小和复杂程度。宽度:是软件结构内同一层次上的模块总数的最大值。宽度越大系统月复杂扇出:是一个模块直接控制(调用)的模块数目,扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块扇入:表明有多少个上
7、级模块直接调用它,扇入越大则共享该模块的上级模块数目越多。作用域:为受该模块内一个判定影响的所有模块集合。七、测试1、测试:为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误测试方案;成功的测试时发现了至今尚未发现的错误的测试。2、测试种类(对象):单元测试(模块)、白盒测试(结构测试)、黑盒测试(软件功能)、集成测试(发现与接口有关的问题)、确认测试(验证软件的有效性)3、调试:作为成功测试的后果出现,也就是说,调试时在测试发现错误之后排除错误的过程。八、软件维护1、软件维护:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程2、软件维护特点
8、1)机构化维护与非结构化维护差别巨大:非结构化维护、结构化维护2)维护代价高昂3)维护的为题很多九、面向对象方法学引论:1、面向对象:既使用对象有使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。2、三大模型:对象模型、动态模型、功能模型。十一、面向对象设计:1、面向对象设计准则1). 模块化面向对象的软件开发模式,支持了系统模块化的原则:对象就是模块。它把数据结构和操作(方法)紧密地结合在一起构成模块。2). 抽象 类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的规格说明(协议),这种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类的实例中包含的数据进行操作。
9、3). 信息隐蔽 在面向对象方法中,信息隐蔽通过对象的封装性实现:类结构分离了类的接口与类的实现,从而支持了信息隐蔽。4.) 弱耦合 弱的耦合可以提高软件模块的独立性,避免某一部分模块发生变化对其它模块有较大的影响。5.) 强内聚 面向对象设计中存在三种内聚: A服务内聚:一个服务应该完成一个且完成一个功能。 B类内聚:一个类应该只有一个用途,它的属性和服务应该是高内聚的。 C一般特殊内聚:即基类派生类的内聚。6.) 可重用 使用已经存在的类(包括开发环境提供的类库,及以往开发相似系统时创建的类),可以提高软件重用性,提高软件生产率。十二、面向对象实现语言及工具1、简述选择面向对象语言时应该着
10、重考虑哪4个实际因素? 1. 将来能否占主导地位 2. 可重用性 3. 类库和开发环境4. 其他因素 有否提供技术支持?提供开发人员什么开发平台?对机器性能的需求?集成已有软件的容易程度2、良好的向对象程序设计风格主要有哪些准则? 三种准则:1、 提高可重用性 2、提高可扩充性 3、提高健壮性 十三、管理技术:1、软件配置:软件配置管理是在软件的整个生命期内管理变化的一组活动,具体说这组活动用来标识变化、控制变化、确保适当的实现变化、向需要知道这类信息的人报告变化。2、简述保证软件质量的三个要点 软件需求是度量软件质量的基础,与需求不一致就是质量不高。 指定的开发标准定义了一组指导软件开发的准则,如果没有遵守这些准则,肯定会导致软件质量不高。 通常,有一组没有显式描述的隐含需求(例如,软件应该是容易维护的)。如果软件满足明确描述的需求,但却不满足隐含的需求,那么软件的质量仍然是值得怀疑的。THANKS !致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考