软件工程快速了解(软工1)

      (个人学习笔记)

      计算机科学与技术专业,在学校学习的时候,对于软件工程并没有太深的理解。当时想法很狭隘,一个函数,一个小小的ACM程序就是我对于软件最浅显的理解。

      到了后来开始做了一些项目包括网站开发,app制作发现之前所做的内容只不过是软件里面一个小小的函数罢了。同时对于面向对象的软件开发以及软件工程这门学科有了稍微深入的了解。

    1.为什么要使用软件工程开发软件

       并不是所有人都喜欢在条条框框限制下进行工作。个人且非大型化项目真的需要通过设计一系列软件工程的指导来进行开发吗?其实个人觉得是有必要的,软件工程相当于写作文时候列的提纲或者说是一个计划清单,当有了计划清单,就会发现每一步走的无比从容,才不至于在开发过程中乱了阵脚,养成良好的开发习惯。

     2.传统的非面向对象的软件工程

        在编写面向对象软件之前,需要画一些UML图形,例如静态模型:用例图、类图、时序图;动态模型:状态图、时序图;物理模型:构件图、部署图。这就是软件工程里面的非形式化方法:利用图表,文本等描述软件的系统架构。

        传统的软件工程,则是一系列贯穿整个软件生命周期一种科学的方法,指导软件在计划、开发、维护甚至到废弃每个阶段所需要干什么。避免了随意开发所带来的效率低下维护困难的问题。

        1.选择合适的软件开发模型

        在计划阶段的初期要选择好所需要跟随的软件开发模型(Software Development Model),这个模型相当于开发软件的大纲形式,就类似于我是选择英国的左边行驶还是美国中国的右边行驶,然后选择好后再根据这些规则下的交通法规来行驶车辆“开发软件”。常见的模型有:瀑布模型、快速原型模型、增量模型、螺旋模型以及其他的一些形式化模型和特殊模型。

 

                                                软件工程快速了解(软工1)_第1张图片

                                                                             图1.瀑布模型

 

        2.可行性分析

        当选择好了过程模型后,便需要对该软件进行可行性分析(Feasiblity Study)的研究,就像是市场调研一样,不调研就像在不是很富裕的村里开个星巴克,也不是不行,但是赚钱恐怕就困难了。可行性分析包括四个方面:经济,技术,运行,法律这几个层面。

        3.结构化分析

        当一切准备妥当之后,便可以进行结构化分析了,结构化分析(Structured Analysis)就是研究所需要开发的东西,给出这个项目的具体面貌,再根据这个面貌归纳出逻辑模型例如整个的数据结构设计、各个模块的联系、消息传递等,导出所需要的数据流图、数据字典、实体联系(E-R)图、状态变换图等,总结并完善最后做出系统需求规格说明书,最后再进行复审。

 

                       软件工程快速了解(软工1)_第2张图片

                                                                               图2.数据流图

 

         4.结构化设计

         在结构化设计(Structured Design)阶段,就相当于把在分析阶段这些虚无缥缈的逻辑模型转变成开发过程中实际软件所需要的设计,比如接口的设计、数据的设计、体系架构的设计、过程的设计等,这些都是总体设计相当于程序的框架。然后再通过转变好的设计架构逐步细化设计出程序的模块每个模块该怎么写,最终进行编码。

 

          以上就是传统化软件开发的所有内容。

你可能感兴趣的:(软件工程杂谈)