2017년 1월 28일 토요일

Introduction

1. Frequently Asked Questions about software engineering
 1) What is software?
  - Computer programmes and associated documentation
 2) What is the attribute of good software?
  - Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable
 3) What is software engineering?
  - Software engineering is an engineering discipline that is concerned with all aspects of software production
 4) What are the fundamental software engineering activities?
  - Software specification, software development, software validation and software evolution
 5) What are the key challenges facing software engineering?
  - Coping with increasing a complexity, demands for reduced delivery times and developing trustworthy software

2. Essential attributes of good software
 - Maintainability: software should be written in such as way so that it can evolve to meet the changing needs of customers
 - Dependability: dependable software should not cause physical or economic damage in the event of system failure.
  * Software dependability includes a range of characteristics including reliability, security and safety,
 - Efficiency: software should not make wasteful use of system resources such as memory and processor cycles
  * Efficiency includes responsiveness, processing time, memory utilisation, etc
 - Acceptability: software must be acceptable to the type of users for which it is designed

http://www.answers.com/Q/What_are_the_attributes_of_a_good_software?#slide=1

3. Software Engineering
 : 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
 - Importance: more and more, individuals and society rely on advanced software systems. We need to be able to produce reliable and trustworthy systems economically and quickly
 - Fundamentals
  * Systems should be developed using a managed and understood development process
  * Dependability and performance are important for all types of system
  * Understanding and managing the software specification and requirements are important ( http://melancholy8914.blogspot.co.uk/2017/01/capturing-requirements.html )
  *  Where appropriate, you should reuse software that has already been developed rather than write new software

http://www.sei.cmu.edu/

4. Software Failure
 - Software failures damage business
 - Mostly software failures are caused by Confusion and misunderstanding in software development
 - In software development life cycle, cost of fixing requirements or errors grows
  * Errors in software can be time-consuming, expensive and possibly life-threatening
  * Many problems result from faulty specification and design of systems
   => why is it difficult to identify errors?
   => Lack of precision / Too much complexity
   => Need for precision and abstraction at early stages

5. Validation and Verification
 - Validation: ensure that specification of the software system satisfy the requirements of the stakeholders
 - Verification: ensure that the finished product satisfies the specification

http://www.easterbrook.ca/steve/2010/11/the-difference-between-verification-and-validation/

댓글 없음:

댓글 쓰기