进行软件开发的基础知识

本文探讨了软件开发的基础知识,包括软件过程的控制与管理,采用迭代+瀑布模型+测试驱动开发的方法,强调面向对象和面向服务的设计,选择合适的技术框架和语言,利用IDE和工具提高效率,重视环境部署、软件发布和用户反馈,同时指出构建高质量软件的原则和良好开发习惯的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



      软件开发:需要做什么? 如何做? 用什么去完成?


       一、过程:控制和管理软件开发活动

        软件过程用来控制和管理软件团队的开发活动和进度,对于个人来说,也需要使用一定的过程方法来规范化自己的开发流程。

        一个值得尝试的方案是:迭代+瀑布模型+测试驱动开发。 这种方案首先将系统分成多个迭代故事,然后,针对每个迭代故事使用瀑布模型并融入测试驱动开发理念。

        具体做法:

        S1:将系统开发分解为多个故事的迭代,每个故事中包含若干个模块。

        S2:针对每个故事中的模块,使用 “需求分析---设计---测试用例---编码调试---测试---模块整合---用户反馈---迭代的子故事”的流程来完成;每个模块完成后,整合成一个迭代的子故事。


      二、方法: 用什么来构建软件模块和应用程序

        计算机中最基本的要素是数据逻辑,这对应于早期的机器语言和汇编语言时代。然而,这样不利于大型软件的开发和管理,程序中容易充斥大量混乱的goto跳转逻辑,因此,出现了结构化程序设计方法,主要思想是:程序=数据结构+算法+模块组织。首先,用规范的控制语句(顺序,条件,循环)消除容易混乱的goto跳转逻辑;其次,用模块化的思想来管理软件的构造。这种方法的基础是:管道与重定向。管道是指一个程序的输入可以充当另一个程序的输出。重定向是将数据源或数据目的地指定为所期望的流(标准I/0,文件等)。通过对程序的静态分析,通常就能准确推理出程序的行为。

        随后,出现了面向对象的程序设计方法,将应用程序分解为对象及对象之间的交互和通信。对象是数据与紧密相关的逻辑的良好封装。面向对象的程序设计的一个复杂性表现在,无法通过静态的程序分析来推理程序的行为;其原因之一是使用了多态机制。

        为了各种系统之间的互操作,出现了面向服务的理念。使用面向过程或对象的方法,将某些功能打包成服务提供给外界。这需要有相应的应用协议来辅助,比如数据交换格式XML面向服务: 面向对象(过程) +服务模块+应用协议

        未来还将会出现怎样的程序设计和软件构造方法学呢?拭目以待。


        三、语言、框架和可用库:选择现有技术和框架构建应用和服务

        为了能够快速建立应用,通常不会重新发明轮子,而是直接选择合适的现有框架和库、语言。比如,javaweb开发可能选择Struts+ hibernate + spring 来完成,C++STL,MFC等,C有大量的标准库函数可用,PHPPerl都有海量的模块可供选用。有时可能需要开发自己专有的库,以避免依赖于其它商业公司的决策行为。

        令人欣慰的是,通常能够找到好的开源工具和软件作为开发的基础。当然,来而不往非礼也,利用开源的优势和服务,也应当尽力用某种方式回馈开源社区。


      四、工具与IDE:选择合适的工具并能高效使用

       磨刀不误砍柴功。构建自己喜爱的工具箱是高效开发应用的要素之一。Windows下的程序编辑工具有UltraEdit,SourceInsight等,Linux下的程序编辑工具有Emacsvim ;编译工具有gcc, g++,javac;运行调试工具gdb,测试框架有XUnit等,部署工具有ant,make, maven等;建模工具有草图,UML,还有代码分析工具lint,profile,代码控制CVS, SVN. 选择一款好的IDE也是非常重要的。比如Eclipse,就是一款非常不错的JavaIDE


      五、环境部署与软件发布、反馈

        软件开发出来后,必须进行运行环境部署。首先,必须知道软件将要运行的平台:Windows ,Linux, Unix , Mac, 还是跨平台?其次,如果是客户/服务器模型,还必须配置好相应的服务器和客户端软件,比如web应用中的apache, tomcat,JBOSS, 浏览器IE, firefox等。

      过去的软件发布主要是单机形式,而随着网络时代的来临和云计算的兴起,未来的软件发布将更多地集中于几个主流平台上,通过网络应用商店的形式发布。在发布之后,要用心倾听用户的反馈以不断完善软件的功能与服务。 


      六、内功: 快速领悟新技术

       无论从事计算机的哪个行业,深厚的内功是非常重要的。扎实的专业基础、敏捷缜密的思维有助于快速领悟新技术。专业基础包括:1. 对计算机系统深入而整体的理解;2. 操作系统、数据结构、算法设计、数据库、程序网络通信等。

      要做好实际开发工作,从两个方面入手:1. 熟悉掌握开发领域的动态和技术;2. 博览群书,广泛涉猎,从任何可能的地方去汲取有益的启示。

 
     七、原则: 构建怎样的软件?

              1.  构建必需的服务; 

              2.  不做不需要的功能,但为可扩展性留下后路;

              3.  及时交付软件;

              4.  可重用、可维护、可扩展;

              5.  安全性、可靠性;


     八、习惯:构建高质量软件的开发习惯和职业素养 

              1.  与同伴交流,了解他们正在做什么及其意义

              2.  善于问题分析与建模

              3.  敏捷与应对变化

              4.  保持条理性和抓住重点

              5.  不要为了短暂的便捷破坏良好的开发习惯

              6.  通过编写代码来表达思想

              7.  不断学习

              8.  配置管理和源代码控制

              9.  单元测试

            10.  持续集成

            11.  维护短期迭代   

            12.  评估开发速度   

            13.  追踪问题




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值