在信息系统项目管理师的知识体系中,软件开发是常规信息系统集成技术的核心组成部分之一。它不仅是构建信息系统的基础,也是项目管理成功与否的关键。本节将围绕软件开发的主要技术要点,结合2019年考试大纲的要求,进行系统性的梳理与分析。
一、软件开发模型与方法论
软件开发模型决定了项目的组织方式与流程。掌握主流模型的特点及适用场景至关重要。
- 瀑布模型:经典的线性顺序模型,阶段划分明确,适用于需求明确、变更较少的项目。但灵活性差,后期变更成本高。
- 迭代模型与增量模型:将整个项目分解为一系列小的迭代或增量,每次迭代都产生一个可运行版本。能较早获得用户反馈,降低风险。Rational统一过程(RUP)是典型的迭代模型。
- 螺旋模型:强调风险分析,每个迭代周期都包含制定计划、风险分析、实施工程和客户评估四个阶段。适用于大型、高风险项目。
- 敏捷开发模型:以人为核心、迭代、循序渐进的开发方法。强调快速交付、持续改进和响应变化。Scrum和极限编程(XP)是其中最具代表性的框架。在当前的软件开发实践中占据主流地位。
项目管理师需根据项目特点(如需求明确度、技术风险、团队规模)选择合适的模型,并能在项目过程中进行裁剪和调整。
二、软件需求工程
需求是项目的基石。需求工程包括需求获取、分析、规格说明、验证和管理。
- 需求获取:通过访谈、问卷、原型等方法,从用户、干系人处收集需求。
- 需求分析:结构化分析(如数据流图、数据字典)与面向对象分析(如用例图、类图)是两大主流技术。目标是建立清晰、无歧义的需求模型。
- 需求管理:涉及需求跟踪、变更控制、版本管理。使用需求跟踪矩阵(RTM)是确保需求不被遗漏、验证覆盖的有效工具。
三、软件设计
设计阶段将需求转化为系统的蓝图,分为总体设计(架构设计)和详细设计。
- 软件架构设计:决定系统的高层结构、组件及其关系。常见的架构风格包括分层架构、客户端-服务器架构、事件驱动架构、微服务架构等。架构设计需关注性能、安全性、可扩展性、可维护性等质量属性。
- 详细设计:定义每个模块/类的内部实现细节,包括算法、数据结构、接口等。常用工具包括程序流程图、盒图(N-S图)、PAD图、类图、时序图等。
- 设计原则与模式:遵循高内聚、低耦合等基本原则。熟悉常用的设计模式(如工厂模式、单例模式、观察者模式等),能提高代码的复用性和可维护性。
四、软件实现(编码)与测试
- 软件实现:
- 编程语言与范式:了解主流语言(如Java, C#, Python, JavaScript)及其适用的领域。理解面向过程、面向对象、函数式等编程范式。
- 编码规范:统一的编码规范是保证团队协作和代码质量的基础。
- 集成策略:包括一次性集成(Big Bang)、自上而下、自下而上、三明治集成等,需根据项目情况选择。
- 软件测试:
- 测试级别:单元测试、集成测试、系统测试、验收测试。
- 测试类型:功能测试、性能测试、安全测试、兼容性测试、用户界面测试等。
- 测试方法:黑盒测试(等价类划分、边界值分析等)与白盒测试(逻辑覆盖、路径测试等)。
- 自动化测试:是提高测试效率、支持持续集成/持续部署(CI/CD)的关键。
五、软件维护与配置管理
- 软件维护:包括改正性维护、适应性维护、完善性维护和预防性维护。维护成本通常远高于开发成本,因此设计时的可维护性至关重要。
- 软件配置管理(SCM):贯穿整个生命周期,管理软件的变更。核心活动包括配置标识、版本控制、变更控制、配置审计和状态报告。Git、SVN等是常用的版本控制工具。
六、新兴技术与趋势(2019年视角)
在2019年的技术背景下,以下趋势值得关注:
- DevOps与持续交付:强调开发与运维的紧密协作,通过自动化工具链实现软件的快速、可靠构建、测试与发布。
- 微服务架构:将单体应用拆分为一组小型、松耦合的服务,每个服务独立开发、部署和扩展。
- 容器化技术:以Docker为代表的容器技术,提供了轻量级、一致性的运行环境,极大促进了微服务和DevOps的落地。
- 低代码/无代码开发平台:通过可视化方式快速构建应用,提升开发效率,应对业务快速变化。
###
对于信息系统项目管理师而言,深入理解软件开发的技术要点,不仅是为了应对考试,更是为了在实际项目中做出正确的技术决策、有效管理开发团队、控制项目风险和质量。在集成项目中,软件开发必须与网络、数据库、中间件等其他技术有效协同,共同构建稳定、高效的信息系统。因此,项目管理师需具备将软件开发技术与管理实践相结合的系统性思维。