CPT203 W1
This is the note of CPT203 (Software Engineering I).
The lecture of W1 is mainly discussing about Intro to Software Engineering
.
- Understand what software engineering is and why it is important.
- Understand that the development of different types of software systems may require different software engineering techniques.
- Understand some ethical and professional issues that are important for software engineers.
I will add the tutorial to the note later. (if there is a tutorial on Thursday) 本笔记基于预习笔记增加了一些内容。
Chapter 1 is recommended for reference.
Basic
What’s a computer software?
Computer software is the product that software professionals build and then support over the long term. It encompasses computer programs and associated documentation that execute within a computer of any size and architecture. Software products may be developed for a particular customer or may be developed for a general market. 计算机软件是软件专业人员构建并长期支持的产品。它包括在任何大小和结构的计算机中执行的计算机程序和相关的文档。软件产品可能是针对特定客户开发的,也可能是针对一般市场开发的。
Why is it important?
Hence it affects nearly every aspect of our lives and has become pervasive(无处不在的) in our commerce, our culture, and our everyday activities. 影响人们生活的各个方面…
What is software engineering?
Software engineering is an engineering discipline (工程学科) that is concerned with all aspects of software production. 软件工程是一门涉及软件生产的各个方面的工程学科。
What is software system?
- More than a program
- System that operate throughout the entire organization
- People, documentation, training, technical support, software evolution
Progamming和software development是有很大区别的,program可能就是几行很短的程序,而software development则是很多program的集合,他们在一起构成了一个完整的software。
Introduction
Software engineering is essential for the functioning of national and international societies. 不可缺少的。
Software failure & success
Software engineering is criticized as inadequate for modern software development. 被批评不适合现代软件开发。(wtf哪什么适合?)
Two factors of failures
- increasing demands 增加的需求
- low expectations 低期望值
However, we’re still gonna learn these shits.😅
Professional software development
Amateur
- People in business write spreadsheet programs to simplify their jobs
- scientists and engineers write programs to process their experimental data
- hobbyists write programs for their own interest and enjoyment
Professional
- vast majority of software development is a professional activity where
- software is developed for specific business purposes, for inclusion in other devices, or as software products such as information systems, CAD systems, etc.
- intended for use by someone apart from its developer
- is usually developed by teams rather than individuals
- It is maintained and changed throughout its life.
Four important attributes
Four important attributes that all professional software (课后习题)
- Maintainability 可维护性
- Dependability and security 可靠性和安全性
- Efficiency 效率
- Acceptability 可接受性
Two kinds of software products
- Generic software products 通用软件产品
- Customized software products 定制软件产品
The distinction between these system product types is becoming increasingly blurred. 两者之间的界限越来越模糊。
Software deterioration软件恶化
软件是逻辑的而不是物理的系统元素,所以软件不会磨损。因此软件的故障率曲线应该是如图所示的“理想曲线”的形式,但实际上,在其生命周期内,软件将经历变化。当进行更改时,很可能会引入错误,导致故障率曲线出现如“实际曲线”所示的峰值。
Software engineering
Software engineering is 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工程纪律
就是软件工程师工作的纪律规定。
All aspects of software production
软件工程不仅仅涉及软件开发的技术过程。它还包括诸如软件项目管理和支持软件生产的工具、方法和理论的开发等活动。
Challenges for developing systems
What challenges for heterogeneity, business and social change and trust and security, identify other problems? (课后习题)
- Developing systems that are energy-efficient.
- Developing validation techniques for simulation systems
- Developing systems fro multicultural use
- Developing systems that can be adapted quickly to new business needs
- Designing systems for outsourced development
- Developing systems that are resistant to attack
- Developing systems that can be adapted and configured by end-users
- Finding ways of testing, validating and maintaining end-user developed systems
Software engineering approaches
A software process is a sequence of activities that leads to the production of a software product. 在软件工程中使用的系统方法被称为software process
。
Four fundamental activities:
- Software specification 软件规范
- Software development 软件开发
- Software validation 软件验证
- Software evolution 软件进化
Software engineering diversity
Different types of systems need different development processes.
- Software engineering is a systematic approach to the production of software that takes into account practical cost, schedule, and dependability issues, as well as the needs of software customers and producers. 软件工程是软件生产的一种系统方法,考虑实际成本、进度和可靠性问题,以及软件客户和生产商的需求。
- How this systematic approach is actually implemented varies dramatically depending on the organization developing the software, the type of software, and the people involved in the development process. 根据软件开发的组织、软件的类型以及参与开发过程的人员的不同,这种系统方法的实际实现方式有很大的不同。
- Two major approaches:
- Sequential 顺序
- Iterative 迭代
Software engineering ethics
- You must also behave in an ethical and morally responsible way if you are to be respected as a professional engineer. 作为一名专业工程师,如果你想受到尊重,你的行为必须符合道德规范和负责任的态度。
- You should not use your skills and abilities to behave in a dishonest way or in a way that will bring disrepute to the software engineering profession. 你不应该使用你的技能和能力以一种不诚实的方式行事,或者以一种会给软件工程专业带来声誉的方式行事。
- 在某些领域,可接受的行为标准不受法律约束,而是受到更模糊的职业责任概念的约束。
- Confidentiality 保密
- Competence 能力
- Intellectual property rights 知识产权
- Computer misuse 计算机滥用
References
- XJTLU MC PowerPoint Slides (CPT203 Week1)
- SOFTWARE ENGINEERING Ninth Edition –Ian Sommerville