Lecture 1 : Introduction to Software Engineering
目录
一、Prototype software vs. Software Product
二、What is Software Engineering?
三、The development process of software products
四、Challenges of software product development
一、Prototype software vs. Software Product
Prototype software
- Developed for yourself (you know what you want)(不面向用户)
- Implements core/exciting features only
- No worry for software security(无需担心安全性)
- No need to write technical documentation and instructions(不用写文档)
总体的特点:简陋且由少数人开发维护
Software Product
- Developed for users (you need to find out what the users think)(面向用户)
- Implements core features, as well as additional accessibility features
- Software security is very important!(重视安全性)
- A lot of documentation is required: for inter-team communication, communication with users, and software instructions(有技术文档及使用说明)
总体的特点:正规、安全性高且由很多人开发维护
二、What is Software Engineering?
定义:
a collection of concepts, methods, and tools which focuses on the techniques to build large and complex software.(软件工程是概念、方法和工具的集合,侧重于构建大型复杂软件的技术。)
Large means that it requires many people working together. We need to learn how to organise people to work together.(多人维护)
Complex means that the software has multiple components which affect each other. We need to learn how to architect software and reduce its complexity.(复杂度高)
Software Engineering helps with the production of:(软件工程帮助了什么)
• a high quality software system(高质量的软件系统)
• with a given budget(帮助减少或合理规划预算)
• before a given deadline(规划日期,保障了软件开发的完成日期)
• whilst requirement changes occur(当需求发生改变的时候)
三、The development process of software products
总共有六个过程,如图所示:
- Planning – decide what software and features to develop(计划开发的软件及功能)
- Requirements Capture – collect requirements from experts & users.(确定用户需求)
- Design & Analysis – design the software architecture and the overall structure of the program.(设计软件的开发架构)
- Implementation – coding(编程开发)
- Testing – test the modules of the software and test the software as a whole to find bugs.(测试,找bug)
- Maintenance – fix bugs reported by users(后期的维护,收集用户使用过程中出现的bug并完善这些bug)
四、Challenges of software product development
Product challenges
• How to collect/analyse requirements(如何搜集及分析需求)
• How to architect a system(如何去设计一个系统的架构)
• How to test the product and ensure the product quality(如何去测试产品并保证产品质量)
Process challenges
•How to ensure you do not overrun your budget(确保不超预算)
•How to ensure projects are completed on time(确保按时完成)
Human resources challenges
•How to deal with personnel risks(处理人为风险)
•Employee turnover, training new employees, etc.(人力资源的调度导致换人)
五、此课程学习的目标
- 如何开发复杂的软件系统(产品):
- 需求规范和分析(“设计什么”)
- 设计(“如何开发”)
- 实现(代码,使用 IDE 进行开发)
- 测试与评估(“产品质量”的核心是什么)
- 如何管理软件开发(开发的过程):
- 可行性和适销性(商业方面)
- 经济、时间和风险估计(商业方面)
- 开发生命周期(流程管理,或“流程质量”的核心)
- 如何管理人力资源(人员)