软件开发
软件开发是用于构思,设计,设计,程序,文档,测试和错误修复的过程,以创建和维护应用程序,框架或其他软件组件。软件开发涉及编写和维护源代码,但是从更广泛的意义上讲,它包括从期望软件的概念到最终表现形式的所有过程,通常在计划且结构化的过程中通常与软件工程重叠。软件开发还包括研究,新开发,原型制作,修改,重复使用,重新设计,维护或任何其他导致软件产品的活动。
方法论
一种系统开发方法不一定适合所有项目使用。
每种可用的方法都最适合根据各种技术,组织,项目和团队考虑的特定项目。
活动
确定需求
软件产品的想法来源很多。这些想法可能来自市场研究,包括潜在的新客户,现有客户,拒绝该产品,其他软件开发人员或创意第三方的销售前景的人口统计。通常首先由营销人员评估软件产品的想法,以实现经济可行性,与现有的分销渠道,对现有产品线的可能影响,所需功能以及符合公司的营销目标的效果。在营销评估阶段,评估成本和时间假设。在第一阶段初期就达成了决定,即,是否基于营销和开发人员产生的更详细的信息,应进一步追求该项目。
艾伦·戴维斯(Alan M. Davis)在“伟大的软件辩论”一书中指出,在“需求”一章中,子章“缺失的软件开发部分”
工程学的学生学习工程学,很少接触金融或市场营销。市场营销的学生学习营销,很少接触金融或工程。我们大多数人仅在一个领域就成为专家。使事情变得复杂,我们当中很少有人会见劳动力中的跨学科人,因此很少有任何角色模仿。但是,软件产品计划对开发成功至关重要,并且绝对需要了解多个学科的知识。
计划过程
创建软件的重要任务是需求分析。客户通常对自己想要的最终结果有抽象的想法,但不知道软件应该做什么。熟练和经验丰富的软件工程师在这一点上认识到不完整,模棱两可甚至矛盾的要求。经常证明实时代码可能有助于降低要求不正确的风险。
“尽管在需求阶段付出了很多努力,以确保要求是完整且一致的,但很少是这种情况;将软件设计阶段作为最小化新的或不断变化的需求的影响时,将软件设计阶段作为最有影响力的阶段。需求波动性波动之所以具有挑战性,是因为它们会影响未来或已经开始发展的工作。”
劳动力
软件开发人员是从事软件开发过程的人员或公司,包括研究,设计,编程,测试以及创建计算机软件的其他方面。具有类似含义的人的其他职位包括程序员,软件分析师或软件工程师。专门从事软件的公司可以称为软件房屋。在一家大公司中,可能有一些员工的唯一责任仅由其中一个学科组成。在较小的开发环境中,几个人或一个人可能会处理完整的过程。协作环境(例如开源软件)可以汇集许多开发人员。
查看模型

视图模型是一个框架,可在软件开发过程中使用系统及其环境的观点。它是视图基础语义的图形表示。
观点和观点的目的是使人类工程师能够理解非常复杂的系统并组织围绕专业领域的问题的要素。在物理密集型系统的工程中,观点通常与工程组织内的能力和职责相对应。
业务流程和数据建模
当前信息状态的图形表示为向用户和系统开发人员提供信息提供了一种非常有效的手段。

- 业务模型说明了与正在建模的业务流程和执行这些功能的组织相关的功能。通过描述活动和信息流,为可视化,定义,理解和验证过程的性质创建了基础。
- 数据模型提供了要存储的信息的详细信息,并且当最终产品是生成用于应用程序的计算机软件代码或准备功能规范以帮助计算机软件做出或购买的决定时的主要用途。有关业务流程和数据模型之间相互作用的示例,请参见右侧的图。
通常,进行采访后创建模型,称为业务分析。访谈包括一个主持人,询问一系列旨在提取描述过程的所需信息的问题。面试官被称为促进者,强调提供信息的是参与者。主持人应该对感兴趣的过程有一些了解,但这并不像具有结构化方法论那样重要。该方法很重要,因为通常一组主持人团队在整个设施中收集信息,并且所有面试官的信息的结果必须在完成后结合在一起。
开发模型是定义流程的当前状态,在这种情况下,最终产品称为“ AS-IS”快照模型,或者是该过程应包含的内容的集合,从而导致了“什么? -be“模型。生成过程和数据模型可用于确定现有的过程和信息系统是否是合理的,并且只需要进行较小的修改或增强,或者是否需要重新设计作为纠正措施。创建业务模型不仅仅是查看或自动化信息过程的一种方式。分析可用于从根本上重塑您的企业或组织的运营方式。
案件
计算机辅助软件工程(CASE)是一组软件工具和方法的科学应用,用于开发软件,以帮助实现高质量,无缺陷和可维护的软件产品。它还指开发信息系统的方法以及可以在软件开发过程中使用的自动化工具。术语“计算机辅助软件工程”(情况)可以涉及用于自动开发系统软件(即计算机代码)的软件。案例功能包括分析,设计和编程。案例工具自动使用所需编程语言设计,记录和生成结构化计算机代码的方法。
计算机辅助软件系统工程(情况)的两个关键思想是:
- 在软件开发和软件维护过程中培养计算机协助,以及
- 一种用于软件开发和维护的工程方法。
存在用于配置管理,数据建模,模型转换,重构,源代码生成的典型案例工具。

建模语言
建模语言是任何人工语言,可用于在结构中以一致的规则定义的结构中表达信息,知识或系统。这些规则用于解释结构中组件的含义。建模语言可以是图形的或文本的。
编程范式
编程范式是计算机编程的基本风格,通常不受项目管理方法(例如瀑布或敏捷)的决定。用于表示程序元素(例如对象,函数,变量,约束)的概念和抽象的范例以及构成计算的步骤(例如分配,评估,连续性,数据流)的步骤。有时,范式主张的概念在高级系统体系结构设计中合作使用;在其他情况下,编程范式的范围仅限于特定程序或模块的内部结构。示例: Grady Booch的面向对象的设计(OOD),也称为面向对象的分析和设计(OOAD)。 Booch模型包括六个图:类,对象,状态过渡,交互,模块和过程。