目录
一、软件工程概述
软件工程是关于开发高质量软件的学科,旨在提高软件开发过程的效率和质量。它的发展历史可以追溯到20世纪60年代,从那时起,软件工程一直是计算机科学领域中最重要的研究方向之一。
软件工程课程旨在向学生介绍软件开发的基本原理和技术,包括软件需求分析、设计、编码、测试和部署等方面的知识。通过学习软件工程课程,学生将能够了解如何构建高质量的软件,并掌握开发团队的协作能力和项目管理技术。
二、可行性报告
软件工程可行性报告是一份详细说明一个软件项目的可行性,包括技术、经济、法律和操作上的可行性分析。它通常由项目经理和软件工程师的团队编写,以帮助业主和投资者确定软件项目是否有意义和可行。
可行性报告通常涵盖以下几个方面:
- 项目概述:介绍软件项目的背景和目的。
- 目标和目标用户:明确软件项目的目标和目标用户。
- 技术可行性:分析项目所需要的技术是否能够实现。
- 经济可行性:分析项目的成本和收益,以确定项目是否经济可行。
- 法律可行性:评估项目是否符合法律和法规要求。
- 操作可行性:分析项目在实施过程中是否能够顺利进行。
三、需求分析
系统需求是这个系统必须执行/支持的所有活动和必须满足的约束条件。通常分为功能需求和非功能需求。
功能需求:系统必须执行的活动。以工资管理系统为例,可能包括电子支付、计算工资、计算工资税、维护员工相关信息、社保、医保、公积金缴纳等等。
功能需求是根据公司开展业务交易的过程和业务规则确定的。有时这些规则详细记录与文档,从而易于确定和描述;而另外的一些规则可能隐蔽而难以被发现。而尽早发现这类规则是需求分析的重要任务。
非功能需求:是系统的固有特征,它不同于系统必须执行或支持的活动。区别功能/非功能需求并不容易,人们开发了一些架构来识别和分类需求的方法,如FURPS+架构(功能、可用性、可靠性、性能、可支持性的首字母),
常用的需求信息收集技术包括:
- 用户/系统干系人访谈
- 发放和收集调查问卷
- 检查输入、输出和文档
- 观察和记录业务流程
- 收集活跃用户的用户评论和建议
四、用例
用例是一种软件工程技术,用于描述系统如何与利益相关者(例如用户)交互以实现某种目标。在软件开发过程中,用例是描述系统功能需求和行为的一种有效的方式。
用例包含以下几个方面:
- 用例名称:用于描述用例的名称,通常用动词和名词组成。
- 角色:用于描述参与用例场景的利益相关者,例如用户或系统管理员。
- 前置条件:用于描述执行用例之前必须满足的条件,例如用户必须已经登录。
- 后置条件:用于描述用例执行成功后的结果,例如订单已经创建成功。
- 基本流程:用于描述用例的主要流程,也称为正常流程。其中包含了参与者的交互以及系统的响应。
- 替代流程:用于描述用例的替代路径,也称为异常流程。其中包含了可能导致用例失败的交互和系统的响应。
- 异常流程:用于描述用例的异常路径,也称为错误流程。其中包含了系统无法处理的错误和异常情况,例如系统崩溃或网络连接中断。
- 参考资料:用于描述用例所依赖的参考资料,例如用户手册或系统规格说明书。
以下为用例图之间的四种关系:
五、软件设计模型
软件设计有许多不同的模型,以下是其中的一些:
- 瀑布模型(Waterfall Model):这是一种线性的模型,软件开发过程按照特定的阶段进行,每个阶段完成后才能进行下一个阶段。这个模型适用于开发比较简单的软件,但在处理复杂的软件项目时存在一些问题。
2. 原型模型(Prototype Model):这个模型主要是为了快速开发原型而设计的。软件开发人员可以在开发周期的早期阶段创建一个原型,用于演示软件的某些功能,以便用户和开发人员可以更好地了解软件的需求。
3. 增量模型(Incremental Model):这个模型将软件开发过程分成小的增量,每个增量都是一个可工作的软件。在每个增量完成之后,软件开发人员和用户都可以对软件进行评估和反馈,以便在下一个增量中进行改进。
4. 螺旋模型(Spiral Model):这个模型是一种迭代式的模型,软件开发人员会在每个迭代中评估和改进软件,以便在开发周期的后期阶段获得更好的结果。
5. 敏捷模型(Agile Model):这个模型强调快速响应需求变化和软件开发过程中的灵活性和协作。软件开发人员和用户密切合作,以便在开发过程中及时反馈和改进软件。
每种模型都有自己的优点和局限性,应根据具体情况选择合适的模型或组合多个模型使用。例如,需求模型可以帮助确保系统满足用户需求和业务要求,行为模型可以帮助开发人员更好地理解系统的行为和反应,设计模型可以帮助开发人员更好地组织代码和模块。总之,采用多种模型可以使软件设计更加全面和准确,有助于实现高质量的软件系统。
六、软件测试
软件测试的基本流程
1、根据项目、产品的需求提炼测试需求。
2、根据测试需求和项目的整体计划,制定测试计划,测试方案等,包括测试的时间节点安排,人力资源安排,测试策略等,并进行评审。
3、根据测试需求以及相关的设计文档,编写测试用例,即明确每个测试点的具体的操作步骤,预期结果等内容,并对用例进行评审。
4、准备测试环境和测试数据,包括测试系统部署的硬件环境和软件环境。
5、执行测试用例,提交测试过程中发现的bug,并通过版本迭代进行回归测试,验证相关的bug。
6、完成内部软件系统的功能测试,系统测试之后,系统趋于稳定,提交客户进行验收测试。
7、编写软件测试报告。
8、对测试过程进行总结,并将测试过程中的所有文档进行归档。