软件工程——软件开发步骤
概念介绍:
1.软件工程:软件工程是指导计算机软件开发和维护的一门工程学科。
2.软件危机:软件危机指在计算机软件的开发和维护过程中遇到的一系列严重问题。
产生原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
3.生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃,要经历的时期称为软件的生命周期。
软件定义分3个阶段:
1)问题定义
要解决的问题是什么?
2)可行性研究
对于上一个阶段所确定的问题有行得通的解决方法吗?通常以以下3点进行研究:
1)技术可行性 :使用现有系统能实现这个系统吗?
2)经济可行性 : 这个系统的经济效应能超过它的开发成本吗?
3)操作可行性 : 系统的操作方式在这个用户组织内行得通吗?
3)需求分析
为解决这个问题,目标系统必须做什么?主要是确定目标系统必须具备哪些功能,从以下几点着手:
1)功能需求:指定系统必须提供的服务;
2)性能需求:通常包括响应时间,信息量速率,主存容量,磁盘容量,安全性等方面;
3)可靠性和可用性需求:例如,机场雷达系统在一个月内不能出现2次以上故障(可靠性);在任何时段机场雷达系统至少有一个是可用的(可 用性)
4)出错处理要求:对环境错误应该怎样响应,注意,上述这类错误并不是由该应用系统本身造成的;
5)接口需求:
6)约束:设计或实现应用系统时应遵守的限制条件;
7)逆向需求:说明软件系统不应该做什么;
8)将来可能提出的要求:应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。
软件开发分4个阶段:
1)总体设计
怎样实现目标系统?也就是确定程序由哪些模块组成以及模块间的关系。
2)详细设计
详细设计也称为模块设计,在这个阶段将详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。
3)编码和单元测试
4)综合测试
4.系统流程图:系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序、文档、数据库、人工过程等)。系统
流程图表达的是数据在系统各部件之间的流动的情况,而不是对数据进行加工处理的控制过程。
5.数据流图:数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
几个常用生命周期模型:
1.快速原型:快速建立起来的可以再计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。通常,用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速的修改原型系统,然后再次请用户试用......一旦用户认为可以了,开发人员便可以据此书写规格说明文档,根据这份文档开发出的软件便可以满足用户的真是需求。
快速原型模型是不带反馈环的,这也是这种模型的主要优点。
原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。
2.喷泉模型:
喷泉模型是典型的面向对象软件过程模型之一。
1)“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。图中代表不同阶段的圆圈相互重叠,这明确表示两个活动之间存在交迭;
2)用面向对象方法开发软件时,在分析、设计和编码等项开发活动之间并不存在明显的边界;
3)图中在一个阶段内的向下箭头代表该阶段内的迭代(或求精);
4)图中较小圆圈代表维护,圆圈较小象征着采用了面向对象范型之后维护时间缩短了。
以下部分仅仅是个人学习总结:
软件开发步骤:
1.问题定义
2.可行性研究
3.画数据流图(参考数据流图篇)
4.设计阶段:
1)设想供选择的方案:需求分析阶段得出的数据流图是总体设计的极好的出发点;
2)选取合理的方案:应该从前一步得到的一系列供选择方案中选取若干个合理的方案,通常至少选取低成本,中等成本,高成本的3种方案。
对每个合理的方案,都应该准备下列4分材料:
1)系统流程图;
2)组成系统的物理元素清单;
3)成本/效益分析;
4)实现这个系统的进度计划。
3)推荐最佳方案:综合分析对比各种合理方案的利弊,推荐一个最佳的方案。
4)功能分解:通常分为两个阶段完成:
1)结构设计:确定程序由哪些模块组成,以及这些模块之间的关系;(总体设计阶段任务)
2)过程设计:确定每个模块的处理过程(详细设计阶段任务)
5)设计软件结构:通常程序中的一个模块完成一个适当的子功能。应该把模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层
模块调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。软件结构(即由模块组成的层次系统)可以用层次图或
结构图来描绘。
模块设计的启发规则:
1)改进软件结构提高模块的独立性:力求降低耦合提高内聚;
2)模块规模应该适中:过大的模块往往由于分解不充分,分解后不应该降低模块的独立性;过小的模块开销大于有效操作,而且模块数过多将使
系统接口复杂;
3)深度、宽度、扇出和扇入都应当适当:深度表示软件结构中终止的层数;宽度表示用一个层次上的模块总数的最大值;扇出是一个模块直接
控制的模块数目;扇入表示有多少个上级模块直接调用它;
4)模块的作用域应该在控制域之内;
5)力争降低模块接口的复杂度;
6)设计单入口单出口的模块;
7)模块功能应该可以预测。
6)设计数据库:对于需要使用数据库的那些应用系统,应该在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据库,画ER图。
7)指定测试计划
8)书写文档:内容包括:
1)系统说明
2)用户手册
3)测试计划:包括测试策略,测试方案,预期的测试结果,解释进度计划等
4)详细的实现计划
5)数据库设计结果
面向对象的几个概念:
1.封装(encapsulation):
面向对象理论:“封装”是将客观世界实体所具有的“属性”和“方法”包裹在一起,对外界屏蔽细节。
面向对象编程:“封装”就是类中所定义的“数据”和“函数”放在对象的内部。对外界屏蔽细节(信息隐藏),通过接口对外界提供“服务”。
综上:对象具有封装性的条件如下:
(1)有一个清晰的边界。所有私有数据和实现操作的代码都被封装在这个边界内,从外面看不见更不能直接访问。
(2)有确定的接口。这些接口就是对象可以接受的消息,只能通过向对象发送消息来使用它。
(3)受保护的内部实现。实现对象功能的细节不能再定义该对象的类的范围外访问。
2.继承(inheritance):
面向对象理论:“继承”是指一个对象直接使用另一个对象的属性和方法。
面向对象编程:“继承”就是子类自动的共享基类中定义的数据和函数的机制。
3.多态(polymorphism)
面向对象理论:“多态"是指各层类可以共享同一种方法名称,而各层类的方法内容可以完全不同。
面向对象编程:子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象,当运行时刻才根据接受消息的对象所属的类,
决定到底执行哪个特定的版本,这称为动态联编,也叫滞后联编。
4.类定义:
软件工程——软件开发步骤相关推荐
- 软件工程 软件设计 步骤_好的软件设计特点 软件工程
软件工程 软件设计 步骤 For good quality software to be produced, the software design must also be of good qual ...
- 软件工程-软件开发的工程思维
软件工程-软件开发的工程思维 目录 软件工程-软件开发的工程思维 前言 什么是软件工程? 定义 出现的背景 软件工程核心知识 与项目管理的区别 软件工程的目标 为什么需要软件工程 如何做好软件工程:原 ...
- 都快2021了,你还不知道怎么成为优秀程序员?大牛推荐6个软件开发步骤
准备编写你的第一个程序?确保遵循这些关键的软件开发步骤. 开始一个新的软件项目可能会很麻烦.将流程分解为更小的,更易于管理的步骤可能会有所帮助.传统上,软件开发分为六个步骤.使用此过程可以减少大型项目 ...
- 用UML进行面向对象的分析设计的软件开发步骤
用UML进行面向对象的分析设计的软件开发步骤 UML(Unified Modeling Language的缩写)统一建模语言,曾经红极一时,备受软件开发人员的推崇,不少工具宣称从设计到代码映射的强力支 ...
- 北京大学 软件工程1 软件 软件工程 软件开发 软件工程框架
软件的定义 重新定义软件 新一代信息技术 区块链 创造性思维 软件的特点 软件的种类 支撑软件:VC++,PyCharm等 应用软件:QQ,微信 软件工程的起源 软件开发的三个阶段 软件工程概念的提出 ...
- 软件工程——软件开发阶段(概要设计、详细设计)
需求分析确定了系统的开发目标,下一步工作就是软件设计.软件设计可以进一步地 分为两个阶段:总体设计和详细设计.确定系统的具体 实现方案.给出软件的模块结构.编写各个文档 目的是什么? 承上(需求)启下 ...
- 3天搞定的小型B/S内部管理类软件定制开发项目【软件开发实战10步骤详解】
十一休假,杭州西湖边逛了一圈只能用人山人海来形容,浙大紫金港校区也逛了一圈风景如画,建设得真不错很棒,假期就去了这2个地方,然后在家里陪老婆.看孩子.洗尿布.打了几局星际争霸,在网上接了一个B/S架构 ...
- 工业液晶串口屏人机界面组态软件开发指南
介绍工业串口液晶显示触摸屏与人机界面组态软件HMImaker的开发指南,工业液晶显示触摸屏是一种包含TFT LCD显示屏.LCD控制器.触摸屏.人机界面组态软件系统和单片机TTL电平串口,RS232, ...
- ThinkSNS揭秘软件开发流程
2019独角兽企业重金招聘Python工程师标准>>> 作为一个经验丰富的老司机--ThinkSNS(http://www.thinksns.com)软件开发团队,今天我们来聊聊软件 ...
- 软件工程方法论对我们经软件开发有多大用处?
文章目录 一.软件过程 二.软件工程方法论 三.软件过程模型 1.瀑布模型 2.快速原型模型 3.增量模型 4. 螺旋模型 5.喷泉模型 6.Rational统一过程 7.极限编程 8.微软过程 四. ...
最新文章
- 前端一HTML:十六: 权重有关的练习
- 人工智能-基于U^2-Net的肖像画生成算法
- 杨攀:融云专注极致技术 不忘初心打造极简体验
- python 实现语音转文字_python3实现语音转文字(语音识别)和文字转语音(语音合成)...
- 七 内置锁 wait notify notifyall; 显示锁 ReentrantLock
- android computescroll_Android Scroller与computeScroll的调用机制关系
- hdu 1232 畅通工程 最小生成树 并查集
- 端到端测试哪家强?不容错过的Cypress
- 【算法导论】【排序】—— 计数排序(counting sort)
- 浮点数 字符串 java_Java如何将浮点数转换为字符串
- ECMAScript 6细说转码的常见的几种方案
- 内核和用户空间异步通信
- 数据结构题集第一章(严蔚敏)
- d盘信号灯超时时间已到_20下教师资格证笔试成绩什么时候公布?今年面试是什么时候?这些时间节点抢先了解!...
- 计算机信息技术知识点思维导图,信息技术复习课之思维导图课例研究
- js拆字分图程序 _拆分字帖_使用方法
- linux重置ilo,HP DL380 Gen9 服务器ilo密码忘记如何重置
- 微型计算机第十一章答案,计算机习题答案总.docx
- 跳出横向的、孤立的牵绊,真正站在新的角度来看待Web3.0
- 电影html css页面,纯CSS3构建的电影屏幕效果