软件工程作业一

一、个人简介

https://github.com/liyanping0317/Self-Introduction

软件工程作业一_第1张图片

一、软件周期的含义

一个完整的软件生命周期包括以下阶段:

1、问题定义— 确定好要解决的问题是什么,通过对客户的访问调查,系统分析员扼要的写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。

2、可行性研究—确定该问题是否存在一个可以解决的方案。这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解决,是否有可行的解决办法。可行性研究的结果是客户做出是否继续进行这项工程的决定的重要依据,一般来说,只有投资可能取得较大的效益的那些工程项目才值得继续进行下去。

3、需求分析—深入具体的了解用户的需求,在所开发的系统要做什么这个问题上和用户想法完全一致。明确目标系统必须做什么,确定目标系统必须具备哪些功能。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。用《需求规格说明书》记录对目标系统的需求。

4、概要设计(总体设计)—概括的说,应该怎样实现目标系统,设计出实现目标系统的几种可能方案,设计程序的体系结构,也就是确定程序由哪些模块组成以及模块之间的关系。

5、详细设计—实现系统的具体工作,编写详细规格说明,程序员可以根据它们写出实际的程序代码。详细设计也称模块设计,在这个阶段将详细的设计每个模块,确定实现模块功能所需的算法和数据结构。

6、编码和单元测试(编码占全部开发工作量的10%-20%)

7、综合测试(测试占全部开发工作量的40%-50%)—分为集成测试和验收测试。

8、软件维护—通过各种必要的维护活动使系统持久的满足用户的需求:主要分为改正性维护、适应性维护、完善性维护、预防性维护。

一般软件的生命周期包括一个软件项目从开始到系统停止使用的整个过程,以某部门想利用在线公文系统代替纸质公文为例,一个完整的软件生命周期由此开始。软件开发方首先需要明确系统的边界,确定系统需要做到哪种程度,是只替代纸质公文还是用电子签章代替公章;然后需要研究可行性,包括技术可行性和使用可行性,比如电子数据的可靠性,电子签章的法律效力等;可行性确定后开始正式的需求调研,确定使用的细节比如签批流程等;需求明确后需要进行总体设计,这个阶段只需要确定系统的框架比如模块结构,模块之间的交互等;模块确定后进入具体的模块内部设计阶段,需要确定模块内部的细节;详细设计确定后应进行编码对模块进行实现,一般实现同时就要对模块进行测试;在模块测试完成的情况下应对多个模块集成进行综合测试,一直到对整个系统功能进行完整验证;验证通过后系统进入使用阶段,此时一般对软件的部分细节进行微调,解决测试中未发现的bug等,一直到软件停止使用或者进行升级改造为止。

二、软件灾难。

软件开发中可能出现的灾难主要包括以下方面,按照发生顺序排序

(1)开发的软件不能满足用户要求。开发初期对用户的要求了解不够明确,未能得到明确的表达。开发工作开始后,软件人员和用户又未能及时交换意见,使得一些问题不能及时解决,导致开发的软件不能满足用户的要求,因而导致开发失败。

(2)经费预算经常突破,完成时间一再拖延。由于缺乏软件开发的经验和软件开发数据的积累,使得开发工作的计划很难制定。主观盲目制定计划,执行起来与实际情况有很大差距,使得开发经费一再突破。由于对工作量估计不足,对开发难度估计不足,进度计划无法按时完成,开发时间一再拖延,严重的甚至被迫放弃开发。

(3)开发的软件可靠性差,使用中bug高发。由于在开发过程中,没有确保软件质量的体系和措施,在软件测试时,又没有严格的、充分的、完全的测试,提交给用户的软件质量差,在运行中暴露出大量的问题。

(4)开发的软件可维护性差。开发过程中没有同意的、公认的规范,软件开发人员按各自的风格工作,各行其是,开发过程无完整、规范的文档,发现问题后进行杂乱无章的修改。程序结构不好,运行时发现错误也很难修改,导致维护性差。

你可能感兴趣的:(软件工程作业一)