道隐于小成,言隐于荣华

软件工程笔记:概述

该部分为本科期间软件工程课程笔记备份。

Concept

History of SE and SWEBOK(not in the textbook)
The notion(概念) of ‘software engineering’ was first proposed in 1968 at a conference held to discuss what was then called the ‘software crisis(危机)’(Naur and Randell, 1969).

2.1 Professional software development 专业软件开发

  • What is meant by software engineering.软件工程的含义。

2.2 Software engineering ethics 软件工程伦理

  • A brief introduction to ethical issues that affect software engineering. 简要介绍影响软件工程的道德问题。

2.3 Case studies 案例研究

  • An introduction to three examples that are used in later chapters in the book.

Software Engineering situation

The economies of ALL developed nations(and now also developing countries) are dependent on software. 所有发达国家 (以及现在的发展中国家) 的经济都依赖于软件。

More and more systems are software controlled 越来越多的系统由软件控制

Software Engineering concerned with:theories,methods,tools for professional software. 软件工程涉及专业软件开发的理论、方法和工具。

Software Engineering expenditure(支出) on software represents a significant fraction(部分) of GNP(国民生产总值) in all developed countries 在所有发达国家, 软件支出占国民生产总值的一个重要部分。

Software costs 软件成本

  1. Software costs often dominate(支配) computer system costs. 软件成本通常占计算机系统成本的主导地位。PC 上的软件成本通常大于硬件成本。

  2. Software costs more to maintain than it does to develop. 维护成本高于开发成本

  3. concerned with cost-effective(成本效益) software development. 软件工程关注的是成本效益高的软件开发。

Software products 软件产品

  • Generic products(通用产品)

    • Stand-alone systems(单机系统)that are marketed and sold to any customer who wishes to buy them.向任何希望购买的客户销售和销售的独立系统。
    • Examples – PC software such as graphics programs, project management tools; CAD software; software for specific markets such as appointments(预约) systems for dentists. 示例– PC 软件, 如图形程序、项目管理工具;CAD 软件;特定市场的软件, 如牙医的预约系统。
    • specificationowned by the software developer and decisions on software change are made by the developer. 产品规格:软件应该做什么的规格由软件开发人员拥有, 有关软件更改的决定由开发人员做出。
  • Customized products(定制化产品)

    • Software that is commissioned(受委任的) by a specific customer to meet their own needs.
    • specificationowned by the customer for the software and they make decisions on software changes that are required. 产品规格:软件应该做什么的规范是由客户对软件拥有的, 他们会对所需的软件更改做出决定

Essential attributes of good software

  • Maintainability 可维护性

    • written in a way so that it can evolve to meet the changing needs of customers. 软件的编写方式应该是为了使其能够进化, 以满足客户不断变化的需求。
    • a critical attribute:software change is an inevitable requirement of a changing business environment. 是一个关键属性, 因为软件更改是不断变化的业务环境的必然要求。
  • Dependability and security 可靠性和安全性

    • reliability, security and safety,etc. 软件可靠性包括一系列特性, 包括可靠性、安全性和安全性。
    • not cause physical or economic damage in the event of system failure. 可靠的软件不应在系统故障的情况下造成物理或经济损害。
    • not be able to access or damage the system. 恶意用户不应能够访问或损坏系统。
  • Efficiency 效率

    • not make wasteful use of system resources 软件不应浪费系统资源 (如内存和处理器周期)。
    • responsiveness, processing time, memory utilisation,etc. 效率包括响应能力、处理时间、内存利用率等。
  • Acceptability 接受

    • be acceptable to the type of users .软件必须为其设计的用户类型所接受。
    • understandable, usable and compatible with other systems that they use 是可理解的、可用的, 并与他们使用的其他系统兼容。

Software Engineering discipline(学科)

an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use. 软件工程是一门工程学科, 涉及软件生产的各个方面, 从系统规范的早期阶段到系统投入使用后的维护。

Engineering discipline 工程学科

Using appropriate theories and methods to solve problems bearing in mind organizational and financial constraints(限制) 运用适当的理论和方法来解决问题, 同时考虑到组织和财政上的限制。

All aspects of software production 软件生产的所有方面

  • technical process of development 技术发展的过程
  • project management 项目管理
  • the development of tools, methods 工具、方法等的开发

Importance of SE 重要性

  • individuals and society rely on advanced software systems. 个人和社会越来越依赖先进的软件系统。
    • produce reliable and trustworthy systems economically and quickly.需要能够经济、快速地生产可靠、值得信赖的系统。
  • cheaper, in the long run 从长远来看, 在软件系统中使用软件工程方法和技术通常比编写程序更便宜
    • For most types of system, the majority of costs are the costs of changing the software after it has gone into use.对于大多数类型的系统来说, 大部分成本是软件投入使用后更换软件的成本。

Software Process Ativities 软件处理活动

Software specification 软件规范

customers and engineers define the software that is to be produced and the constraints on its operation. 客户和工程师定义要生产的软件及其操作的限制。

Software development 软件开发

the software is designed and programmed. 软件的设计和编程

Software validation 软件验证

the software is checked to ensure that it is what the customer requires. 在其中检查软件以确保它是客户所需要的。

Software evolution 软件演变

the software is modified to reflect changing customer and market requirements. 其中软件被修改, 以反映不断变化的客户和市场要求。

General issues that affect most software 影响大多数软件的一般问题

  • Heterogeneity(异质性):operate as distributed systems across networks. 越来越多的系统需要作为分布式系统跨网络运行, 网络包括不同类型的计算机和移动设备
  • Business and social change(商业和社会变革):need to be able to change their existing software and to rapidly develop new software as emerging economies develop and new technologies become available. 随着新兴经济体的发展和新技术的出现, 商业和社会正在发生令人难以置信的迅速变化。他们需要能够改变现有的软件, 迅速开发新的软件。
  • Security and trust 安全和信任:essential that we can trust that software. 由于软件与我们生活的各个方面交织在一起, 因此我们必须相信该软件。

Software engineering diversity(多样性) 软件工程的多样性

  • there is no universal set of software techniques that is applicable to all of these. 有许多不同类型的软件系统, 并且没有适用于所有这些的通用软件技术集。

  • methods and tools used depend on the type of application being developed, the requirements of the customer and the background of the development team. 所使用的软件工程方法和工具取决于正在开发的应用程序的类型、客户的要求和开发团队的背景。

Application types 应用程序类型

Stand-alone applications 独立应用

  • run on a local computer. 在本地计算机 (如 PC) 上运行
  • include all necessary functionality 包括所有必要的功能
  • do not need to be connected to a network 不需要连接到网络

Interactive transaction-based applications 基于交互式事务的应用程序

  • execute on a remote computer 远程计算机上执行
  • accessed by users from their own PCs or terminals 由用户从自己的 Pc 或终端访问
  • include web applications 包括 web 应用程序, 如电子商务应用程序。

Embedded control systems 嵌入式控制系统

  • software control systems that control and manage hardware devices 控制和管理硬件设备的软件控制系统
  • more embedded systems than any other type of system. 嵌入式系统可能比任何其他类型的系统都多。

Batch processing systems 批处理系统

These are business systems that are designed to process data in large batches. They process large numbers of individual inputs to create corresponding outputs. 这些业务系统旨在大批量处理数据。它们处理大量的单个输入, 以创建相应的输出。

Entertainment systems 娱乐系统

These are systems that are primarily for personal use and which are intended to entertain the user.这些系统主要供个人使用, 旨在娱乐用户。

Systems for modeling and simulation 用于建模和仿真的系统

These are systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects. 这些系统是由科学家和工程师开发的, 用于模拟物理过程或情况, 其中包括许多单独的相互作用的物体。

Data collection systems 数据收集系统

These are systems that collect data from their environment using a set of sensors and send that data to other systems for processing. 这些系统使用一组传感器从其环境中收集数据, 并将这些数据发送到其他系统进行处理。

Systems of systems 系统的系统

These are systems that are composed of a number of other software systems. 这些系统由许多其他软件系统组成。

Software engineering fundamentals(基本原理)

  • Develop System using a managed and understood development process. 使用有管理和理解的开发过程来开发系统

    • Note:different processes are used for different types of software. 当然, 不同类型的软件使用不同的过程。
  • Dependability(可靠性) and performance 可靠性和性能对于所有类型的系统都很重要。

  • Understanding and managing the software specification and requirements. 了解和管理软件规范和要求 (软件应该做什么) 是很重要的。

  • reuse developed software. 应该复用已经开发的软件, 而不是编写新软件。

Web

  1. Web:a platform for running application and organizations are increasingly developing web-based systems rather than local systems. 运行应用程序的平台, 组织越来越多地开发基于 web 的系统, 而不是本地系统。
  2. Web services:allow application functionality to be accessed over the web. Web 服务 (在第19章中讨论) 允许通过 web 访问应用程序功能。
  3. Cloud computing:an approach to the provision of computer services where applications run remotely on the ‘cloud’. 云计算是一种提供计算机服务的方法, 其中应用程序在 "云" 上远程运行。
    • not buy software but pay according to use 用户不购买软件, 但根据使用情况付费。

Web software engineering 网络软件工程

Software reuse 软件复用

  • the dominant approach for constructing web-based systems. 构建基于 web 系统的主要方法。

incremental(增量地)development and delivery 增量开发和交付基于 web 的系统。

  • Web-based systems should be developed and delivered incrementally. 现在人们普遍认识到, 事先具体说明这类系统的所有要求是不切实际的。

Capabilities of Web browsers web 浏览器功能的限制。

  • User interfaces are constrained by the capabilities of web browsers. 浏览器中创建丰富的接口, 但仍难以使用。使用本地脚本的 Web 窗体更为常用。

Web-based software engineering 基于 web 的软件工程

  1. complex distributed systems 复杂的分布式系统
  2. the same fundamental ideas of software engineering 软件工程的基本思想适用于基于 web 的软件

Software engineering ethics(伦理)

  • wider responsibilities than simply the application of technical skills. 软件工程涉及的责任比仅仅应用技术技能更广泛。

  • behave in an honest and ethically responsible way if they are to be respected as professionals. 软件工程师必须以诚实和道德负责任的方式行事, 才能被尊重为专业人士。

  • Ethical behaviour is more than simply upholding the law but involves following a set of principles that are morally correct(道德正确). 道德行为不仅仅是维护法律, 而是遵循一套道德上正确的原则。

Issues of professional responsibility 专业责任问题

Confidentiality 保 密

respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed. 工程师通常应尊重其雇主或客户的保密规定, 而不论是否签署了正式的保密协议

Competence 能 力

  • should not misrepresent(歪曲) their level of competence(能力) 不应曲解自己的能力水平。
  • should not knowingly accept work which is out with their competence 不应该故意接受与其能力不符的工作。

Intellectual property rights 知识产权

  • should be aware of local laws governing the use of intellectual property 应了解有关知识产权使用的当地法律, 如专利、版权等。
  • should be careful to ensure that the intellectual property of employers and clients is protected 应谨慎确保雇主和客户的知识产权得到保护。

Computer misuse 计算机滥用

should not use their technical skills to misuse(滥用) other people’s computers. 软件工程师不应该利用他们的技术技能来滥用别人的电脑。
Computer misuse ranges from relatively trivial (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses). 滥用的范围从相对微不足道 (比如在雇主的机器上玩游戏) 到极其严重的 (传播病毒)。

Ethical principles ACM/IEEE 道德守则

type principle
PUBLIC act consistently with the public interest 软件工程师应符合公共利益。
CLIENT AND EMPLOYER act in the best interests of their client and employer 软件工程师应以符合公共利益的方式行事, 符合其客户和雇主的最佳利益。
PRODUCT products and related modifications meet the highest professional standards possible 确保其产品和相关修改符合尽可能高的专业标准。
JUDGMENT integrity and independence 保持其专业判断的完整性和独立性
MANAGEMENT an ethical approach to the management of software development and maintenance 赞同并促进以合乎道德的方式管理软件开发和维护
PROFESSION integrity and reputation 提高符合公共利益的行业的诚信和声誉
COLLEAGUES fair to and supportive of their colleagues 公平地支持他们的同事
SELF lifelong learning and ethical approach 参与其专业实践方面的终身学习,促进对该专业的实践采取合乎道德的态度。

Ethical dilemmas(困境)

  • Disagreement in principle with the policies of senior management. 原则上不同意高级管理层的政策。

  • employer acts in an unethical way and releases a safety-critical system without finishing the testing of the system. 雇主以不道德的方式行事, 在不完成系统测试的情况下发布一个安全关键系统

  • Participation in the development of military weapons systems or nuclear systems. 参与发展军事武器系统或核系统。

Case studies

A personal insulin pump 个人胰岛素泵

An embedded system in an insulin pump used by diabetics to maintain blood glucose control. 糖尿病患者用来维持血糖控制的胰岛素泵中的嵌入式系统。

A mental health case patient management system 一种精神健康病例患者管理系统

A system used to maintain records of people receiving care for mental health problems. 一种用于保存接受精神健康问题护理的人的记录的系统。

A wilderness weather station 荒野气象站

A data collection system that collects data about weather conditions in remote areas. 收集偏远地区天气状况数据的数据收集系统。

Detail message please look the PPT,I am too tired to write it 😦

FAQ

What is software?

  • Computer programs and associated documentation. 计算机程序和相关文档。软件产品可以为特定客户开发, 也可以为一般市场开发。

What are the attributes(属性) of good software?

  1. deliver the required functionality 好的软件应该为用户提供所需的功能
  2. performance to the user 为用户提供所需的性能
  3. maintainable, dependable and usable. 可维护的、可靠的和可用的。

What are the fundamental software engineering activities?

  • Software specification, software development, software validation(有效性) and software evolution(变革). 软件工程是一门涉及软件生产各个方面的工程学科。

What is software engineering?

  • Software engineering is an engineering discipline that is concerned with all aspects of software production.软件工程是一门涉及软件生产各个方面的工程学科。

difference between software engineering and computer science

  • Computer science:focuses on theory and fundamentals; 计算机科学注重理论和基础知识;
  • software engineering:concerned with the practicalities of developing and delivering useful software. 软件工程关注的是开发和交付有用软件的实用性。

difference between software engineering and system engineering

  • System engineering:concerned with all aspects of computer-based systems development including hardware,software and process engineering. 系统工程涉及基于计算机的系统开发的各个方面, 包括硬件、软件和过程工程。
  • Software engineering:part of System engineering general(一般的) process. 软件工程是这一更一般过程的一部分。

the key challenges facing software engineering

  1. Coping with increasing diversity(多样化) 日益增加的多样性
  2. demands for reduced delivery times 缩短交付时间的要求
  3. developing trustworthy software 开发值得信赖的软件。

costs of software engineering

  • 60%:development costs 大约60% 的软件成本是开发成本
  • 40%:are testing costs 40% 是测试成本。
  • custom software:evolution costs often exceed development costs. 对于自定义软件, 进化成本通常超过开发成本。

the best software engineering techniques and methods

  • different techniques are appropriate for different types of system. 虽然所有软件项目都必须经过专业管理和开发, 但不同的技术适用于不同类型的系统。
  • For example, games should always be developed using a series of prototypes whereas safety critical control systems require a complete and analyzable specification to be developed. 例如, 游戏应始终使用一系列原型进行开发, 而安全关键控制系统则需要开发完整且可分析的规范。
  • can’t say that one method is better than another. 不能说一种方法比另一种方法好。

differences the web has made to software engineering

  • led to the availability of software services and the possibility of developing highly distributed service-based systems. 网络带来了软件服务的可用性和开发高度分布式基于服务的系统的可能性。
  • Web-based systems development has led to important advances in programming languages and software reuse. 基于 web 的系统开发在编程语言和软件重用方面取得了重要进展。

Thanks

prof.Chen

posted @ 2022-05-06 11:12  FrancisQiu  阅读(36)  评论(0)    收藏  举报