[Program <= Software]
Program: A collection of istructions
Software: Not only programs (codes), but all associatd documentation
[Software In Academia]
ICSE (International Conference on Software Engineering)
-> The premier software engineering conference in the world.
A README file: A main file describing what the software does.
A REQUIREDMENTS file: This file should cover aspects of hardware environment requirements and software environments.
A LICENSE file: the file describing the distribution rights.
An INSTALL file: These installation istructions should include notes illustrating a very basic usage example or a method to test the installation.
Increasing system complexity
Failure to use software engineering methods (software engineering methods를 쓰지 않아서)
[Software engineering]
[Engineering discipline]
[All aspects of software production]
[Topics in Software engineering]
AI and software engineering
Testing and anlaysis
Software evolution
Social aspects of software engineering
Requirements, modeling, and design
Dependency of Software
Cost Saving
Software Specification
Software Development
Software Validation
Software Evolution
Heterogeneity (이질)
Business and social change
Security and trust
[What is software?]
[What are the attributes of good software?]
[What is software engineering?]
[What are the fundamental software engineering activities?]
Software specification, software development, software validation and software evolution.
s -> d -> v -> e
[What are the key challenges facing software engineering?]
[What are the costs of software engineering?]
Roughly 60% of software costs are development costs, 40% are testing cost.
For custom software, evolution costs often exceed development costs.
[What are the best software engineering techniques and methods?]
Different techniques are appropriate for different types of system.
Games vs Safety critical systems
Generic products
Stand-alone systems that are marketed and sold to any customer who wishes to by them.
Examples - PC software such as word processors, drawing packages, and project management tools.
Customized products
Generic products
Customized products
-> The distinction between these product types is becoming increasingly blurred.
Maintainability
Dependability(믿을 수 있음) and security
Efficiency
Acceptability (수용성)
Software must be acceptable to the type of users for which it is designed.
This means that is must be understandable, usable and compatible with other systems that they use.
Software engineering involves wider responsibilities than simply the application of technical skills.
Software engineers must behave in an honest and ethically responsible way if they are to be respected as professionals.
Ethical behavior is more than simply upholding(받치다) the law but involves following a set of principles that are morally correct.
Confidentiality (기밀 유지)
Competence (능력)
Engineers should not misrepresent their level of competence.
They should not knowingly accept work which is outwith their competence. (엔지니어들은 자기 능력을 outwith 하면 안됨)
Intellectual property rights
Engineers should be aware of local laws governing the use of intellectual property such as patents, copyright, etc.
They should be careful to ensure that the intellectual property of employers and clients is protected.
Computer misuse
Software engineers 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).
Members of these organisations such as ACM, IEEE sign up to the code of practice when they join.
ACM: Association for Computing Machinery
IEEE: Institute of Electrical and Electronics Engineers
Software engineers shall adhere to the eight principles.
공익 (Public): 소프트웨어 엔지니어는 공공 이익과 일관되게 행동해야 합니다. 즉, 사회적 책임을 다하고 대중의 이익을 고려해야 합니다.
고객 및 고용주 (Client and employer): 소프트웨어 엔지니어는 고객과 고용주의 이익을 고려하여 행동해야 합니다. 이때, 공공 이익을 해치지 않는 범위에서 그들의 이익을 존중해야 합니다.
제품 (Product): 소프트웨어 엔지니어는 자신의 제품과 관련 수정 사항이 최고의 전문적 표준을 준수하도록 보장해야 합니다.
판단 (Judgement): 소프트웨어 엔지니어는 전문적인 심사에서 무결성과 독립성을 유지해야 합니다. 다른 이해관계자의 영향을 받지 않고 윤리적 판단을 내려야 합니다.
관리 (Management): 소프트웨어 엔지니어 관리자와 리더는 소프트웨어 개발과 유지 관리의 윤리적 접근 방식을 지지하고 홍보해야 합니다.
직업 (Profession): 소프트웨어 엔지니어는 직업의 품위와 평판을 공공 이익과 일관되게 향상시켜야 합니다.
동료 (Colleagues): 소프트웨어 엔지니어는 동료에게 공정하고 지원적이어야 합니다. 협력과 상호 지원을 촉진해야 합니다.
자기 (Self): 소프트웨어 엔지니어는 자신의 전문 분야에 대한 평생 학습에 참여해야 하며, 직업 수행에 대한 윤리적 접근 방식을 촉진해야 합니다.
인슐린 펌프 제어 시스템 (An Insulin Pump Control System): 당뇨병 환자가 혈당을 조절하기 위해 사용하는 인슐린 펌프의 내장 시스템
Key roles
Essential high-level requirements
정신 건강 환자 관리 시스템 (Mentcare - A Mental Health Case Patient Management System): 정신 건강 문제를 가진 환자의 기록을 유지하고 관리하는 시스템
야외 날씨 관측소 (A Wilderness Weather Station): 원격 지역에서 날씨 조건에 관한 데이터를 수집하는 데이터 수집 시스템
iLenar: 디지털 학습 환경 (a Digital Learning Environment): 학교에서 학습을 지원하기 위한 시스템으로, 디지털 학습 환경을 제공