跟我学软件系统需求工程——软件项目设计、开发和实现的总体流程
1.1跟我学软件系统需求工程——软件项目设计、开发和实现的总体流程
在本单元中希望重点了解和掌握软件项目设计、开发和实现的总体流程和Web网站建设和开发过程,包括获得需求阶段、系统(需求)分析与系统设计阶段、系统实现阶段、测试阶段和维护阶段中的各个工作的重点和所应该解决的问题和目标。
1.1.1总体流程概述
1、软件工程
(1)软件工程
它是一套关于软件开发各阶段的定义、任务、作用的,建立在理论上的一门工程学科。它对解决软件危机,指导人们利用科学、有效的方法来开发软件,提高及保证软件开发的效率和质量起到了一定的作用。
(2)软件工程所涉及的内容
软件工程学包括计算机科学、数学、工程科学和管理科学等方面的知识,其中的计算机科学和数学用于构造模型和算法,而工程科学用于制定规范、设计范型、评估成本及确定权衡,而管理科学则用于计划、资源、质量和成本的管理。
(3)软件业一直在探讨,如何使软件实现如同传统产业一样地大规模生产软件工程的提出,便是为了实现这个愿望。然而,虽然软件工程至今已经有了很大的发展,软件的大规模工业化生产仍然没有实现。原因何在?
1)从软件的本质属性来说,软件的复杂性是软件的本质属性,在这个属性没有改变之
前,软件便不会实现同传统产业一样的工厂化生产。
2)从软件生产的介质来说,传统产业生产都是有形的物质产品,人的生产活动都受制
于生产资料这些物质介质;然而,软件生产的介质,却是无形的人类的思维。
3)从生产过程来看,对于传统产业来说,产品的设计和生产是分开的。然而,对于软
件产业来说,软件的生产过程便是设计的过程,纯粹的生产过程几乎不存在,这使
得软件的生产形态同传统产业必然存在区别。
4)优秀的软件开发技术的采用,能够弥补我们在工程化方面的不足,从而使得软件开
发更加可控,软件质量更加有保障。
2、软件生命周期(Life Cycle)
软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生命周期。软件生存期的六个阶段:
(1)制订计划阶段
确定要开发软件系统的总目标,给出功能、性能、可靠性以及接口等方面的要求,完成该软件任务的可行性研究,估计可利用的资源 (硬件,软件,人力等)、成本、效益、开发进度,并制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查。(2)获得和分析需求(Requirements Capture and System Analysis)阶段对用户提出的要求进行分析并给出详细的定义,得到系统逻辑模型,可用数据流程图、数据字典和简要算法加以表示。
编写软件需求说明书或系统功能说明书及初步的系统用户手册,提交管理机构评审(3)系统设计(System Design)阶段
1)概要设计- 把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明
确的模块,每个模块都和某些需求相对应。
2)详细设计- 对每个模块要完成的工作进行具体的描述,为源程序编写打下基础。
通常用的HIPO(层次图加输入/处理/输出图)或PDL(过程设计语言)描述。
编写设计说明书,提交评审。
(4)系统实现(Implementation)阶段
把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”。写出的程序应当是结构良好、清晰易读的,且与设计相一致的。(5)测试(Testing)阶段
1)单元测试----查各模块在功能和结构上存在的问题并加以纠正
2)集成测试----将已测试过的模块按一定顺序组装起来,按规定的各项需求,逐项进
行有效性测试,决定已开发的软件是否合格,能否交付用户使用,亦可称为验收测
试。
(6)运行与维护(Maintenance)阶段。
1)改正性维护:运行中发现了软件中的错误需要修正。软件工程学什么
2)适应性维护:为了适应变化了的软件工作环境,需做适当变更。
3)完善性维护:为了增强软件的功能需做变更。
4)预防性维护:修改软件为将来的维护做准备。
3、各个阶段的工作重点
(1)系统需求
系统应该有什么功能。主要涉及如何获得用户的需求、描述用户的需求
(2)分析需求
我们应该解决什么问题,重点在于理解问题并对理解的结果加以分析。主要重点涉及对所实现的系统的结构和行为两方面进行。
(3)系统设计
通过某种特定的平台,而达到完成整体软件的功能。主要包括概要设计(静态结构)和详细设计(动态结构)。
3.1 概要设计
3.1.1 系统构架设计
3.1.2各个功能模块的设计、J2EE Web开发中常用的设计模式的应用
3.1.3 数据源的设计(逻辑)
3.1.3.1 设计数据库
3.1.3.2 设计各个数据库表之间的实体关系
3.1.3.3 设计系统中的各种人员的角
3.1.4制定规范:主要涉及代码体系、接口规约、命名规则。
因为,这些是项目小组今后共同开发的基础,有了开发规范和程序模块之间和项目成员彼此之间的接口规则、方式和方法,大家就有了共同的工作语言、共同的工作平台,使整个软件开发工作可以协调有序地进行。
3.2 详细设计
(4)系统实现
重点在于明确所要解决的问题并采用什么技术和手段(语言、工具)来实现前面的设计方案以满足用户的需求。
4.0 开发工具和服务器平台
应用服务器的选择(如采用Tomcat还是BEA Weblogic 8.1)、数据库服务器的选择(如本项目中采用MSSqlserver2000)并采用连接池技术;
4.1 构建数据源(物理)
4.1.1 设计出该项目中数据库的各个数据表
4.1.2 在Tomcat等应用服务器中配置出对应的JDBC数据源
4.2 在JBuilder中建立出本项目的Project文件
4.3 在该Project中设计和实现Web 应用程序
4.4 编程实现各个模块
4.4.1 设计和实现MVC的表示层JSP页面以向Servlet控制器发送各种http请求、
包括各种实现视图助手的各个JavaBean类和标签库的标签。
4.4.2 设计和编程实现MVC的控制层ActionServlet控制器和各种业务处理的控