"这篇资料是关于软件工程自学考试的学习材料,重点讲述了需求建模在软件开发中的重要性以及软件工程的基础知识。它涉及到软件开发的本质、软件过程、软件需求及系统/产品需求规约、软件开发方法学以及能力成熟度模型(CMM)。"
在软件工程中,需求建模是一项关键任务,它为系统的开发提供了清晰的方向和理解。以下是需求建模的具体步骤和相关知识点:
1. **确定参与者**:首先,识别系统的主要使用者或参与者,这有助于确定系统的边界和上下文。参与者是与系统交互的角色,他们的需求是构建系统功能的基础。
2. **创建用况**:针对每个参与者,分析他们期望系统执行的任务或服务,这些需求被转化为用况。用况描述了系统在特定场景下应提供的功能,是需求的重要表现形式。
3. **用况分解**:通过分解用况,可以形成泛化结构(如基用况和扩展用况)、包含结构(一个用况可由其他用况组成),这有助于理解和管理复杂性。
4. **模型化关系**:用况图中包含了各种关系,如关联、扩展、包含等,它们定义了用况之间的相互作用,进一步细化了需求。
5. **非功能需求**:最后,通过注解和约束来表达非功能需求,如性能、安全性、可用性等,这些是衡量系统质量和性能的重要标准。
除了需求建模,软件工程还包括以下几个方面:
- **软件过程**:软件开发不仅仅是一系列的技术活动,更是一个有组织的过程,包括需求获取、设计、实现、测试和维护等阶段。
- **软件需求及系统/产品规约**:需求是软件开发的起点,规约是描述需求的文档,它是测试和评估软件是否满足预期的标准。
- **软件开发方法学**:不同的开发方法如结构化方法、面向对象方法、面向数据结构方法等,提供了实现软件开发过程的路径。例如,结构化方法强调自顶向下、逐步求精的设计,而面向对象方法则关注对象和类的封装、继承和多态性。
- **CMM(能力成熟度模型)**:CMM提供了一种评估和改进软件开发过程能力的框架,以确保生产高质量的软件产品。
软件开发的本质是将问题域(问题空间)的概念和计算逻辑映射到解决方案(解空间)。这个映射过程包括数据抽象和过程抽象,如面向对象方法的数据抽象用于创建模型化概念,结构化方法的过程抽象用于构造可执行的逻辑。需求分析是这些映射的关键阶段,它使用各种方法(如面向对象、结构化等)来理解和表达用户需求。
软件工程不仅仅是编程,它是一门涉及多种理论、方法和实践的学科,旨在系统地开发、维护和改进软件系统,确保它们满足用户的需求并具备良好的性能和可靠性。