软件工程开发
第一章 软件工程基本观念
1.1 软件工程的目标与常用模型
软件工程的目标是提高软件的质量与生产率,最终实现软件的工业化生产。对开发人员而言,如果非得在质量与生产率之间分个主次不可,那么应该是质量第一,生产率第二。
软件工程的主要环节如图1所示,软件开发过程一般包括可行性与需求分析、系统设计、程序设计、测试和维护。
图1 软件工程环节
常见的软件工程模型有:线性模型,渐增式模型,螺旋模型,快速原型模型,形式化描述模型等等。虽然线性模型比较简单,太理想化,但是每一个非线性的模型都能转化为一系列简单的线性模式,因此在其他模式中需要灵活运用线性模式。
1.2 软件开发的基本策略
1.2.1 复用
在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中。我们将具有一定集成度并可以重复使用的软件组成单元称为软构件。软件复用可以表述为:直接使用已有的软构件,即可组装(或加以合理修改)成新的系统。这样可以提高生产率和质量。
图2应用软构件产生应用软件
1.2.2 分而治之
我们可以把复杂的问题分解成N个简单的问题,再逐个寻求解决方法。但是最终的目的是要保证单个的简单问题可以通过程序实现,组装后能够使原本复杂的问题得到合理解决。
1.2.3 优化——折衷
优化是用以优化软件的各个质量因素,但不能面面俱到,应折衷,其目标就是协调各个质量因素,实现整体质量最优。而不能盲目得拆东墙,补西墙。
第二章 软件开发过程各个环节介绍
2.1 可行性分析与需求分析
2.1.1 可行性分析要求
可行性分析是从经济、技术、市场与政策及人员方面分析这个项目做还是不做。
2.1.2 需求分析要求
当确定做之后,我们就要与客户交流,进行需求分析,但由于客户表达不清、需求自身经常变动或分析人员理解有误,都会导致需求分析困难。因此,有必要通过请教行家或者分析同类型产品,来做进一步的分析。
2.2 系统设计
2.2.1 体系结构设计
体系结构就如同人体中的骨架,是软件系统中最本质的东西。其中层次结构和客户机/服务器结构是两种非常通用的软件体系结构。每个系统均有一个体系结构,我们在没有必要地情况下不可以修改。
2.2.2 模块设计
模块设计过程不仅要考虑本身提供什么样的功能,还要考虑该模块与其他模块如何交流。常用以下三个特征进行模块优劣的评价:“信息隐藏”、“内聚与耦合”和“封闭—开放性”。
模块的信息隐藏可以通过接口设计来实现,执行模块的功能或与模块交流信息必须且只须通过调用公有接口来实现。
内聚是模块内部各成分之间的关联度,而耦合是模块间的依赖程度,在模块设计时应做到强内聚,弱耦合。
2.2.3 数据结构与算法设计
在算法设计时我们主要要从时间和空间的角度考虑软件的效率。时间与空间的优化也应该采取折中的方式。
2.2.4 用户界面设计
人机界面设计应从合适性、风格和广义美上着手。做到吸引眼球和谐,才能吸引客户。
2.3 程序设计
本节主要讲述了编程的一些小注意事项,需养成良好的编程规范。
1、命名约定
(1)宏定义用大写字母加下划线表示,如MAX_LENGTH;
(2)函数用大写字母开头的单词组合而成,如SetName, GetName ;
(3)指针变量加前缀p,如 *pNode ;
(4)BOOL 变量加前缀b,如 bFlag ;
(5)int 变量加前缀i,如 iWidth ;
(6)float 变量加前缀f,如 fWidth ;
(7)double变量加前缀d,如 dWidth ;
(8)字符串变量加前缀str,如 strName ;
(9)枚举变量加前缀e,如 eDrawMode ;
(10)类的成员变量加前缀m_,如 m_strName, m_iWidth ;
2、使用断言:使用assert函数可以追踪断点,检查程序是否有出错。
3、new、delete与指针:在C中是malloc与free,在申请内存后,要记得释放。要防止指针指向已释放的内存。
4、使用const :const可定义有类型的常量,可确保此常量不被改变。
5、不要将BOOL值TRUE和FALSE对应于1和0进行编程。
2.4 测试与改错
2.4.1 测试
测试的目的在于发现尽可能多的错误,而不是为了说明程序中没有错误。
测试可分为α测试和β测试。α测试是公司内部人员进行的测试,其中开发人员要做白盒测试,就是已知各模块的结构进行单步调试,而测试小组要做黑盒测试,主要是看模块接口是否正确,输出结果是否正确。β测试是请用户过来试用,发现在试用中出现的一些问题,提交测试报告。
2.4.2 改错
在发现错误之后需要及时大胆得修改,但是修改之后还要重新测试,以免引入新的错误。
2.5 维护与再生
2.5.1 维护
软件维护划分为主要的三类:纠错性维护、适应性维护和完善性维护。
(1)纠错性维护。由于前期的测试不可能找出所有潜在的错误,用户在使用软件时仍将会遇到错误,诊断和改正这些错误的过程称为纠错性维护。
(2)适应性维护。由于新的硬件设备不断推出,操作系统和编译系统也不断地升级,为了使软件能适应新的环境而引起的程序修改和扩充活动称为适应性维护。
(3)完善性维护。在软件的正常使用过程中,用户还会不断提出新的需求。为了满足用户新的需求而增加软件功能的活动称为完善性维护。
2.5.2 再生
再生工程主要出于如下愿望:(1)在商业上要提高产品的竞争力;(2)在技术上要提高产品的质量。再生工程与维护的共同之处是没有抛弃原有的软件。再生工程主要有三种类型:重构、逆向工程和前向工程。 重构是再原程序上修改,不改变体系结构。而逆向工程是从其他同类产品中提取有用信息,再加以修改。前向工程也称预防性维护,则会根据需求对软件进行预防功能的完善,减少未知错误发生。
第三章 小结
看完《软件工程思想》之后的一些感受。
1、 在软件编程的时候不要过分依赖一些开发书籍,要在尊重原程序的基础上,添加自己的想法,而不是生搬硬套。
2、 需求分析很重要,要先明确需求,然后要在设计的时候一边编程一边根据需求的改变而改变,越早修改,代价越小。
3、 编程的时候越简洁越好,这样便于后人阅读理解修改,不要过多得使用编程中鲜为人知的技巧,适当添加解释性的注释。
4、 在编程中,错误无大小,要正视自己的不足,吸取经验教训,及时改正。
5、 做项目的是团队而非个人,在整个团队中,每个人都必须将自己的工作认真完成好,引用一个公式:成功=意愿*方法*行动,如果每个人每一步只及格的话,最后就只完成了21.6%,而团队里面每个人相乘,所做的工作就更少了,因此每个人都必须付出100%的激情与努力。
6、将自己经常犯的编程错误记录下来,制成表格贴在计算机旁边。
分享到:
相关推荐
《ISO9001在软件工程开发中的应用与实践》 ISO9001是国际标准化组织(ISO)制定的质量管理体系标准,它为各种类型和规模的组织提供了一套通用的质量管理原则和要求。在软件工程领域,ISO9001的实施能够帮助提升软件...
"软件工程开发文档模板(全)" 提供了从项目初期到后期维护所需的各种文档模板,涵盖了软件开发的全过程。以下将详细介绍这些模板的重要性和主要内容。 1. 可行性研究报告:这份报告是项目启动前的初步评估,主要...
本资源包“软件工程开发的详细过程和完整案例”提供了深入理解这一过程的关键步骤,以及一个实际项目的实例,以帮助学习者或开发者更好地理解和应用软件工程原则。 1. **需求分析**:这是软件工程的起点,包括与...
这个名为“软件工程开发实例”的压缩包提供了全面且详尽的项目文档,对于初涉软件开发的人来说极具价值。下面,我们将深入探讨这些实例可能涵盖的关键知识点。 1. **需求分析**:软件开发的第一步通常是需求分析,...
||软件工程开发模式||三层架构 ||软件工程开发模式||三层架构 ||软件工程开发模式||三层架构||软件工程开发模式||三层架构 ||软件工程开发模式||三层架构 ||软件工程开发模式||三层架构 ||软件工程开发模式||三层...
《Java软件工程开发的思想》一书,由林锐撰写,是一部深入浅出、生动活泼地阐述软件工程原理与实践的作品。该书不仅是一本技术指南,更是一部充满个人感悟与经验分享的心血之作,旨在引领读者理解软件工程的核心思想...
软件工程整个开发过程的开发文档,包括需求分析、总体设计、详细设计等
大型软件工程开发监理文档要求 大型软件工程开发监理文档要求是软件工程监理工作的核心组成部分,对软件工程开发的每个阶段进行监理,确保软件产品的质量和可靠性。本文将详细讲解软件工程监理文档要求,包括需求...
本篇文章深入探讨了大数据系统软件工程开发中的关键技术,并分析了其管理模式,为大数据系统软件工程开发管理提供了专业指导。 首先,文章分析了大数据系统软件工程开发中需要关注的关键技术,包括软件服务工程技术...
【标题】"川大软件工程开发与环境黄武的作业全"揭示了这是一份来自四川大学(简称“川大”)的软件工程课程的作业集合,由教师黄武教授指导。这个标题暗示了这份资源可能包含了多个学期或年份的作业,因为提到“每年...
国标软件工程开发文档(GB8567) 包含: 1、操作手册 2、用户手册 3、测试分析报告 4、测试计划 5、概要设计 6、详细设计 7、开发进度月报 8、可行性研究报告 9、软件需求说明书 10、数据库设计说明书 11、模块开发...
背景: 假设你正在从事软件开发工作。某私立职业学校财务科长请你研究用学校拥有的微型计算机生成工资明细表和各种财务报表的可能性。
在《软件工程开发案例》中,我们有幸目睹了一个私立职业学校财务科工资支付系统开发的全过程,通过案例学习,我们能够对软件工程的结构化方法有一个更深层次的理解。 问题定义阶段是整个软件工程开发的起点,它要求...
**软件工程开发面临的问题** 1. **用户需求的快速变化**:用户需求往往随着对软件理解的深入而发生变化,开发人员需灵活应对,及时调整开发计划。 2. **用户心理因素**:用户的疑虑和不熟悉新技术可能会对开发产生...
### 软件工程开发方法与工具 #### 第1章:软件工程概述 **软件工程定义** 软件工程是一种系统化的、规范化的处理软件开发、维护、管理与组织的方法论。它强调通过科学的方法和工具来规划、开发、测试、部署及维护...
包含ISO9001 标准文档模板 21个 包含ISO软件工程文档示例 11个 包含软件设计开发文档 国家标准 16个 包含软件设计开发文档示例 12个 已经很全了。
ISO 9001- 软件工程开发标准文档模板 ISO9001-软件工程开发标准文档模板 ISO9001-软件工程开发标准文档模板 ISO9001-软件工程开发标准文档模板 ISO9001-软件工程开发标准文档模板 ISO9001-软件工程开发标准文档模板
软件工程项目开发文档模板(全套). 01.项目需求说明书 02.项目需求规格说明书(全) 03.项目评审报告(模板) 04.系统概要设计说明书 05.系统详细设计说明书 06.系统设计报告评审记录 07.技术测试报告模板范例 08.系统...