系分 作业一

系统分析与设计 作业一


软件工程定义

软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。

软件危机

本质原因

软件危机是落后的软件生产方式无法满足迅速增长的计算机软件需求, 从而导致软件开发与维 护过程中出现一系列严重问题的现象。 这些严重的问题阻碍着软件生产的规模化、商品化以及生产效率,让软件的开发和生产成为制约软件产业发展的“瓶径”。

表现

  • 对软件开发成本和进度的估计常常很不准确。这种现象降低了软件开发组织的信誉。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量,从而不可避免地会引起用户的不满。

  • 用户对“已完成的”软件系统不满意的现象经常发生。软件开发人员和用户之间的信息交流往往很不充分,“闭门造车”必然导致最终的产品不符合用户的实际需要。

  • 软件质量保证技术(审查、复审和测试) 没有坚持不懈地应用到软件开发全过程中。

  • 软件常常是不可维护的。由于开发过程没有统一的、公认的规范,软件开发人员按各自的风格工作,各行其是。很多程序中的错误是非常难改正的,实际上不可能使这些程序适应新的硬件环境,难适应用户要求增加的新的功能需求,软件的复用性不高。

  • 软件通常没有适当的文档资料。计算机软件不仅仅是程序,还应该有一整套文档资料。这些文档资料应该是在软件开发过程中产生出来的,而且应该是“最新式的”(即和程序代码完全一致的)。软件通常没有适当的文档资料,文档资料的作用是:管理和评价软件开发过程的进展情况,开发者与用户和开发者之间通信的工具,维护工具。

  • 软件成本在计算机系统总成本中所占的比例逐年上升。由于微电子学技术的进步和生产自动化程fe的不断提高,硬件成本逐年下降,然而软件开发需要大量人力,软件成本随着通货膨胀以及软件,规模和数量的不断扩大而持续上升。1985年美国软件成本占计算机系统总成本的比例90%。

  • 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。

克服软件危机的方法

软件生产不只是编程技术问题,需要有系统化、与时俱进的软件工程方法,才能规避软件危机!

软件生命周期

软件生命周期是在时间维度上,对软件项目任务进行划分,又称为软件开发过程,一般包括六个阶段,分别是可行性分析与计划阶段、需求分析阶段、设计阶段阶段、编码阶段、测试阶段、运行和维护阶段。其主要的模型有 瀑布模型、迭代式模型、快速原型模型和螺旋模型。

SWEBoK 的 15 个知识域

Software Requirements(软件需求)

  • The Software Requirements KA is concerned with the elicitation, negotiation, analysis, specification, and validation of software requirements. It is widely acknowledged within the software industry that software engineering projects are critically vulnerable when these activities are performed poorly. Software requirements express the needs and constraints placed on a software product that contribute to the solution of some real-world problems.

  • 软件需求KA涉及软件需求的引出、协商、分析、规范和验证。软件行业普遍认为,当这些活动执行得很差时,软件工程项目是非常脆弱的。软件需求表达了对软件产品的需求和约束,这些需求和约束有助于解决一些实际问题。

Software Design(软件设计)

  • Design is defined as both the process of defining the architecture, components, interfaces, and other characteristics of a system or component and the result of [that] process (IEEE 1991). The Software Design KA covers the design process and the resulting product. The software design process is the software engineering life cycle activity in which software requirements are analyzed in order to produce a description of the software’s internal structure and its behavior that will serve as the basis for its construction. A software design (the result) must describe the software architecture – that is, how software is decomposed and organized into components and the interfaces between those components. It must also describes the components at a level of detail that enables their construction.

  • 设计被定义为定义系统或组件的体系结构、组件、接口和其他特性的过程,以及[该]过程的结果(IEEE 1991)。软件设计KA包括设计过程和最终产品。软件设计过程是软件工程生命周期的活动,在此过程中,软件需求被分析,以产生对软件内部结构及其行为的描述,并作为其构建的基础。软件设计(结果)必须描述软件体系结构——也就是说,软件如何分解和组织成组件以及这些组件之间的接口。它还必须在支持其构造的详细级别上描述组件。

Software Construction(软件建设)

  • Software construction refers to the detailed creation of working software through a combination of detailed design, coding, unit testing, integration testing, debugging, and verification. The Software Construction KA includes topics related to the development of software programs that will satisfy their requirements and design constraints. This KA covers software construction fundamentals; managing software construction; construction technologies; practical considerations; and software construction tools.

  • 软件建设是指通过详细设计、编码、单元测试、集成测试、调试和验证相结合,对工作软件进行详细的创建。软件构建KA包括与软件程序开发相关的主题,这些软件程序将满足需求和设计约束。本KA涵盖了软件构建的基础;管理软件建设;施工技术;实际问题;以及软件构建工具。

Software Testing(软件测试)

  • Testing is an activity performed to evaluate product quality and to improve it by identifying defects. Software testing involves dynamic verification of the behavior of a program against expected behavior on a finite set of test cases. These test cases are selected from the (usually very large) execution domain. The Software Testing KA includes the fundamentals of software testing; testing techniques; human-computer user interface testing and evaluation; test-related measures; and practical considerations.

  • 测试是一种通过识别缺陷来评估产品质量和改进产品质量的活动。软件测试包括在有限的测试用例集中,根据预期的行为对程序的行为进行动态验证。这些测试用例是从(通常非常大的)执行域中选择的。软件测试KA包括软件测试的基础知识;测试技术;人机界面测试与评价;任何跟考试有关的措施;和实际的考虑。

Software Maintenance(软件维护)

  • Software maintenance involves enhancing existing capabilities, adapting software to operate in new and modified operating environments, and correcting defects. These categories are referred to as perfective, adaptive, and corrective software maintenance. The Software Maintenance KA includes fundamentals of software maintenance (nature of and need for maintenance, categories of maintenance, maintenance costs); key issues in software maintenance (technical issues, management issues, maintenance cost estimation, measurement of software maintenance); the maintenance process; software maintenance techniques (program comprehension, re-engineering, reverse engineering, refactoring, software retirement); disaster recovery techniques, and software maintenance tools.

  • 软件维护包括增强现有的功能,使软件适应新的和修改过的操作环境,以及纠正缺陷。这些类别被称为完善的、自适应的和纠正的软件维护。软件维修KA包括软件维修的基本知识(维修的性质和需要、维修类别、维修费用);软件维护中的关键问题(技术问题、管理问题、维护成本估算、软件维护度量);维护过程;软件维护技术(程序理解、再工程、逆向工程、重构、软件退役);灾难恢复技术和软件维护工具。

Software Configuration Management(软件配置管理)

  • The configuration of a system is the functional and/or physical characteristics of hardware, firmware, software, or a combination of these. It can also be considered as a collection of specific versions of hardware, firmware, or software items combined according to specific build procedures to serve a particular purpose. Software configuration management (SCM) is thus the discipline of identifying the configuration of a system at distinct points in time for the purposes of systematically controlling changes to the configuration, as well as maintaining the integrity and traceability of the configuration throughout the software life cycle. The Software Configuration Management KA covers management of the SCM process; software configuration identification, control, status accounting, auditing; software release management and delivery; and software configuration management tools.

  • 系统的配置是硬件、固件、软件或这些的组合的功能和/或物理特性。它还可以看作是根据特定的构建过程组合的特定版本的硬件、固件或软件项的集合,以满足特定的目的。因此,软件配置管理(SCM)是在不同的时间点识别系统配置的规程,目的是系统地控制配置的变更,以及在整个软件生命周期中维护配置的完整性和可跟踪性。软件配置管理KA包括对SCM过程的管理;软件配置识别、控制、状态核算、审计;软件发布管理与交付;和软件配置管理工具。

Software Engineering Management(软件工程管理)

  • Software engineering management involves planning, coordinating, measuring, reporting, and controlling a project or program to ensure that development and maintenance of the software is systematic, disciplined, and quantified. The Software Engineering Management KA covers initiation and scope definition (determining and negotiating requirements, feasibility analysis, and review and revision of requirements); software project planning (process planning, estimation of effort, cost, and schedule, resource allocation, risk analysis, planning for quality); software project enactment (measuring, reporting, and controlling; acquisition and supplier contract management); product acceptance; review and analysis of project performance; project closure; and software management tools.

  • 软件工程管理包括计划、协调、度量、报告和控制一个项目或程序,以确保软件的开发和维护是系统的、有纪律的和量化的。软件工程管理KA包括初始化和范围定义(确定和协商需求、可行性分析、需求评审和修订);软件项目规划(过程规划、工作量估算、成本和进度、资源分配、风险分析、质量规划);软件项目制定(测量、报告、控制;采购和供应商合同管理);产品验收;检讨及分析项目表现;项目关闭;以及软件管理工具。

Software Engineering Process(软件工程过程)

  • The Software Engineering KA is concerned with definition, implementation, assessment, measurement, management, and improvement of software life cycle processes. Topics covered include process implementation and change (process infrastructure, models for process implementation and change, and software process management); process definition (software life cycle models and processes, notations for process definition, process adaptation, and process automation); process assessment models and methods; measurement (process measurement, products measurement, measurement techniques, and quality of measurement results); and software process tools.

  • 软件工程KA涉及软件生命周期过程的定义、实现、评估、度量、管理和改进。涵盖的主题包括过程实现和变更(过程基础结构、过程实现和变更的模型以及软件过程管理);过程定义(软件生命周期模型和过程、过程定义符号、过程适应和过程自动化);过程评估模型和方法;测量(过程测量、产品测量、测量技术、测量结果质量);以及软件处理工具。

Software Engineering Models and Methods(软件工程模型和方法)

  • The Software Engineering Models and Methods KA addresses methods that encompass multiple life cycle stages; methods specific to particular life cycle stages are covered by other KAs. Topics covered include modeling (principles and properties of software engineering models; syntax vs. semantics vs. invariants; preconditions, post-conditions, and invariants); types of models (information, structural, and behavioral models); analysis (analyzing for correctness, completeness, consistency, quality and interactions; traceability; and tradeoff analysis); and software development methods (heuristic methods, formal methods, prototyping methods, and agile methods).
    ()

  • 软件工程模型和方法KA解决了包含多个生命周期阶段的方法;特定于特定生命周期阶段的方法由其他ka覆盖。涵盖的主题包括建模(软件工程模型的原理和属性;语法、语义和不变量;前置条件、后置条件和不变量);模型的类型(信息、结构和行为模型);分析(正确性、完整性、一致性、质量和交互性分析;可追溯性;和权衡分析);以及软件开发方法(启发式方法、形式化方法、原型方法和敏捷方法)。

Software Quality(软件质量)

  • Software quality is a pervasive software life cycle concern that is addressed in many of the SWEBOK V3 KAs. In addition, the Software Quality KA includes fundamentals of software quality (software engineering cultures, software quality characteristics, the value and cost of software quality, and software quality improvement); software quality management processes (software quality assurance, verification and validation, reviews and audits); and practical considerations (defect characterization, software quality measurement, and software quality tools).

  • 软件质量是一个普遍存在的软件生命周期问题,许多SWEBOK V3 ka都解决了这个问题。此外,软件质量KA包括软件质量的基础(软件工程文化、软件质量特征、软件质量的价值和成本、软件质量改进);软件质量管理过程(软件质量保证、验证和验证、评审和审核);以及实际的考虑(缺陷描述、软件质量度量和软件质量工具)。

Software Engineering Professional Practice(软件工程专业实务)

  • Software engineering professional practice is concerned with the knowledge, skills, and attitudes that software engineers must possess to practice software engineering in a professional, responsible, and ethical manner. The Software Engineering Professional Practice KA covers professionalism (professional conduct, professional societies, software engineering standards, employment contracts, and legal issues); codes of ethics; group dynamics (working in teams, cognitive problem complexity, interacting with stakeholders, dealing with uncertainty and ambiguity, dealing with multicultural environments); and communication skills.

  • 软件工程专业实践是指软件工程师必须具备的知识、技能和态度,以便以专业、负责任和合乎道德的方式实践软件工程。软件工程专业实践KA涵盖专业(专业行为、专业社团、软件工程标准、雇佣合同、法律问题);伦理准则;群体动力学(团队合作,认知问题复杂性,与利益相关者互动,处理不确定性和模糊性,处理多元文化环境);和沟通能力。

Software Engineering Economics(软件工程经济学)

  • The Software Engineering Economics KA is concerned with making decisions within the business context to align technical decisions with the business goals of an organization. Topics covered include fundamentals of software engineering economics (proposals, cash flow, the time-value of money, planning horizons, inflation, depreciation, replacement and retirement decisions); not for-profit decision-making (cost-benefit analysis, optimization analysis); estimation, economic risk and uncertainty (estimation techniques, decisions under risk and uncertainty); and multiple attribute decision making (value and measurement scales, compensatory and non-compensatory techniques).

  • 软件工程经济学KA关注的是在业务上下文中做出决策,使技术决策与组织的业务目标保持一致。涵盖的主题包括软件工程经济学的基本原理(建议、现金流、金钱的时间价值、规划范围、通货膨胀、折旧、替换和退休决定);非营利性决策(成本效益分析、优化分析);评估、经济风险与不确定性(评估技术、风险与不确定性下的决策);多属性决策(价值和度量尺度、补偿和非补偿技术)。

Computing Foundations(计算基础)

  • The Computing Foundations KA covers fundamental topics that provide the computing background necessary for the practice of software engineering. Topics covered include problem solving techniques, abstraction, algorithms and complexity, programming fundamentals, the basics of parallel and distributed computing, computer organization, operating systems, and network communication.

  • 计算基础KA涵盖了为软件工程实践提供必要的计算背景的基本主题。主题包括问题解决技术、抽象、算法和复杂性、编程基础、并行和分布式计算基础、计算机组织、操作系统和网络通信。

Mathematical Foundations(数学基础)

  • The Mathematical Foundations KA covers fundamental topics that provide the mathematical background necessary for the practice of software engineering. Topics covered include sets, relations, and functions; basic propositional and predicate logic; proof techniques; graphs and trees; discrete probability; grammars and finite state machines; and number theory.

  • 数学基础KA涵盖了为软件工程实践提供必要的数学背景的基本主题。主题包括集合、关系和函数;基本命题与谓词逻辑;证明技术;图表和树木;离散型概率;语法和有限状态机;和数论。

Engineering Foundations(工程基础)

  • The Engineering Foundations KA covers fundamental topics that provide the engineering background necessary for the practice of software engineering. Topics covered include empirical methods and experimental techniques; statistical analysis; measurements and metrics; engineering design; simulation and modeling; and root cause analysis.

  • 工程基础KA涵盖了为软件工程实践提供必要的工程背景的基本主题。主题包括经验方法和实验技术;统计分析;测量和度量;工程设计;仿真和建模;以及根本原因分析。

CMMI 的五个级别

  1. level 1-初始级:软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
  2. level 2-可管理级:建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
  3. level 3-已定义级:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
  4. level 4-量化管理级:分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
  5. level 5-优化管理级:过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。

CMMI简述

CMMI(Capability Maturity Model Integration),即能力成熟度模型集成。CMMI是一个基本架构,用来度量软件生产的有效性和实用性,同时找出继续改进的机会,提高企业的项目管理水平。CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架。因而能够从总体上改进组织的质量和效率。CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值