FrederickP.Brooks在1999年荣获美国计算机领域最具声望的图灵奖桂冠。美国计算机协会(ACM)称赞他“对计算机体系结构、操作系统和软件工程作出了里程碑式的贡献”。1人物简介Brooks博士是北卡罗莱纳大学KENAN-FLAGLER商学院的计算机科学教授。他被认为是“IBM360系统之父”,曾担任360系统的项目经理,以及360系统项目设计阶段的经理。在1961年年底,IBM开始打算实施“360系统电子计算机计划”,据当时的估算,整个计划投资约需50亿美元(这可是在上世纪60年代初,十几年前的“曼哈顿工程”才花了20亿),这是不折不扣的大手笔,要知道,当时IBM的年营业额还不到这个数字。360操作系统的开发用了5000个人年(人年就是一个人一年的工作量),由于从未有过开发这种大型软件的经验,开发组陷入了“有史以来最可怕的软件开发泥潭”,最终也没能完全实现当初的设想。Brooks后来根据这次开发任务的经验,写了一本《人月神话》,成为软件工程领域内的经典著作。2问题你认为什么是软件?你认为软件有没有生命周期?如果软件有生命周期,则生命周期中应包括哪些阶段?你认为软件开发中最难做的是什么?3什么是软件这里讨论的软件是几十人、上百人、上千人合作完成的软件,如Windows操作系统。开发软件不等于编写程序–开发软件应该完成的工作远远多于编写程序应该完成的工作软件=程序+数据+文档软件生命周期概括地说,软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段。软件生命周期的各个阶段1、问题定义–解决“问题是什么?”–通过调研,提出关于问题性质、工程目标和工程规模的书面报告,用户对这份报告确认–公司中对应的岗位:售前、市场部2、可行性研究–问题是否有行的通的解决办法?–从技术、经济、社会因素(如法律)等方面分析可行性–专家、系统分析师、经验丰富的程序员3、需求分析–对目标系统提出完整、准确、清晰、具体的要求–具备用户的专业知识和较好的软件开发能力–系统分析师4、概要设计–解决“怎样实现目标系统?”–实现一个目标系统,通常有几种方案,比较每种方案的优缺点,确定一种。–一个程序由若干个规模适中的模块按合理的层次结构组织成,所以要确定程序的体系结构,有哪些模块组成及模块间的关系。–系统设计师,高级程序员5、详细设计–详细设计每个模块,确定实现模块功能所需要的算法和数据结构。–高级程序员,经验丰富的程序员6、编码和单元测试–写出正确的容易理解、容易维护的程序模块。–程序员,软件工人7、综合测试–包括集成测试和验收测试–公司对应的岗位:软件测试人员、质量保证(QA)人员8、软件维护–通常有四类维护活动:改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化。完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件为将来的维护活动预先做准备。–每一项维护活动都应该经过提出(维护)要求,分析要求,提出方案,审批方案,确定计划,修改软件设计,修改程序,测试程序,复查验收等一系列步骤,实质上是经历了一次压缩和简化了的软件定义和开发的全过程。–修改多个bugs后,推出下一个版本(升级版、补丁包)软件测试的问题例子1:网站开发已经结束,测试人员提出意见:该网站服务对象不明确,无法吸引用户,战略上有失误。——可行性分析、需求分析例子2:网站开发已经结束,测试人员提出意见:某地方设计不好,应像**网站那样。——设计例子3:网站开发已经结束,测试人员提出意见:某功能无法使用。——编码软件开发中,最难的一步就是需求分析。职工信息管理系统1、问题定义随着企业规模的不断扩大、人员经常流动、人员信息个人较多较杂等现状,企业职工信息管理如若继续采用以前的手工管理或者半手工管理,不但工作效率低下、资金投入较高,而且对企业参与市场竞争也存在很大阻碍。因此,开发能对职工信息进行管理,即对职工信息进行插入、删除、查找、排序等功能的系统势在必行。112、可行性研究该软件自主研发,不存在软件侵权行为;采用C语言作为开发语言,个人已经掌握该语言基础知识也能综合运用到实例开发;开发过程中所需要的硬、软件已经具备。123、需求分析通过跟班作业、开座谈会、调研、发调查问卷等方式,得到职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。该系统的功能需求是:新增一名职工:将新增职工对象按姓名中字典顺序存储在职工信息文件中;删除一名职工:从职工管理文件中删除一名职工信息;查询:从职工管理文件中查询符合某些条件的职工;修改:检索某个职工对象,对其某些属性进行修改;排序:按某种需要对职工对象文件进行排序。134、概要设计本系统可以分为查找模块、修改模块、删除模块、添加模块及排序模块五部分。其结构关系如下所示:14职工信息管理系统查找模块修改模块添加模块删除模块删除模块5、详细设计15输入选项号开始判断选项号排序插入删除查找修改退出==0==1==2==3==4==5任务:请大家自行画出每个功能模块的流程图;试写出本系统中每个功能模块的程序代码;试进行软件测试。1617结束