作业要求 | https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10584 |
---|---|
我在这个课程的目标是 | 学习软件工程,会独立编写程序 |
此作业在哪个具体方面帮我实现目标 | 阅读文章学习 |
其他参考文献 | https://www.cnblogs.com/xinz/p/3852390.html |
对软件工程方法论的思考
瀑布
合理的使用瀑布模型让原本杂乱的软件开发变得有序。我们能看到,瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
大泥球
所谓大泥球,是指杂乱无章、错综复杂、邋遢不堪、随意拼贴的大堆代码。这些年来,为了对付这个泥球,多种指导方法一起出现,然而实际情形没多大变化,“大泥球”看起来仍然是设计软件架构的最常见方法。我们现在惯用的敏捷性开发的很多方面会直接导致泥球,包括:缺少前期设计、应对需求变化过晚、应对架构变化过晚、碎片式增长。
那么我们如何发现烂代码?烂代码要不要改呢?应该怎么改?如果烂代码不是先天性的,那是不是可以预防?
程序是面向用户的,为了方便应用的更新,应提前设计好程序的结构,便于后续优化。
集市
集市模式是一种很有生命力的新兴开发模式采用集市模式开发软件的一些必要条件是Internet源码开放、遵循GPL规则.不以经济利益为追求目标等等.这是开放源码/自由软件运动的特征。所以集市模式对于开放源码软件的开发是一种适宜有生命力并有成效的开发模式,可以全力采用,当然要获得成功仍需多方面的努力。
教堂
对于大型软件特别是面向行业、面向领域的应用系统采用“教堂”模式有更多的必要性和可行性.在这种大型软件的开发初期它不仅需要有软件方面的知识更需要有领域或行业的知识,还可能有其它方面的知识。而且项目的最终要求涉及方方面面.这就需要精心地作总体规则、整体设计,然后作合理分划.并且为每一部分作出详细设计,包括模块设计、数据结构设计、模块之间接口设计、用户界面设计等等;然后是组织具体编程、测试,最后是集成/测试,和试用/修改/更新,再发布新版本等一系列过程。总之.对于需要专门领域、行业知识的大型应用软件(通常是商品软件)采用教堂模式,或许有更好的结果。
敏捷
敏捷方法有一些共同的特征。其中有两个最主要的特征是:轻量和简单。敏捷方法论包含最少的流程和文档,减少正式性。目的是做眼前能做的事情,而不去预测太远的未来,首先完成紧迫的事情。快速的、增量的开发能更快地交付客户使用,更快得到反馈。开发方法要称之为敏捷,需要具备4个基本特征:增量的、协作的、直接的、适应性强的。“增量”是指小版本、频繁发布。“协作”是指客户和开发人员之间紧密沟通,经常工作在一起。“直接”是指方法本身是容易学习和修改的。“适应”是指能把刚刚发生的改变考虑进来。
银弹
很显然,是没有的。但是,有些身居高位且急于求成的人,会对自己的属下去提这样的要求。
他们要求的内容是:要总结出一种管理办法,非常详细地,就像工艺规程指导工作作业一样,使新来的员工能像螺丝钉一样在管理办法的效用下被拧在项目上。我想很多程序员或者软件开发的管理人员都被要求或者本身也期望有这么一种方式,那么我就根据自己读的书,并结合已有的实践去谈一谈。如果我们把符合需求或真实提高了业务效率的软件系统定义为成功的系统,那么大多数成功的系统都具有如下的特点:是演进式的,具有良好的设计,具有良好的测试。除了少数投资巨大、几乎可以称为不计成本的项目,大多数系统的建设和开发应是演进式的,通过不断的迭代反馈,持续校正系统和需求的偏离。这种方式的规律虽然一直,但是每一次迭代的范围、周期,都是要结合具体项目情况去判断的,判断失误将产生极为恶劣的后果。如果应该在早起迭代进系统的功能没能及时添加,后期迭代的很多功能都将受到不同程度的影响。
总结
阅读了这些文章,我了解了软件工程方法论的知识,认识到了为了更好地发展和改进软件工程技术,我们有必要从方法论的各个角度分析软件工程的方法、工具和过程,从而有的放矢地改进软件工程中各个过程的思想、方法、模式和规则。