What is software?
Software is a set of computer instructions programmed to perform a specific function(s) with the computer. Computer programs and associated documentation such as requirements, design models and user manuals. Software products may be developed for a particular customer or may be developed for a general market. Software products may be:
What is software engineering?
Software engineering is an engineering discipline that is concerned with all aspects of software production. Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available.
The difference between software engineering and computer science that:-
A set of activities whose goal is the development or evolution of software.Generic activities in all software processes are:
Software Process Model
A simplified representation of a software process, presented from a specific perspective. Examples of process perspectives are:-
Software engineering methods
Structured approaches to software development which include system models, notations, rules, design advice and process guidance.
CASE (Computer-Aided Software Engineering)
Software systems that are intended to provide automated support for software process activities.
CASE systems are often used for method support.
Attributes of Good Software
The software should deliver the required functionality and performance to the user and should be maintainable, dependable and acceptable.
Key Challenges Facing Software Engineering
Professional and ethical responsibility
Software engineering involves wider responsibilities than simply the application of technical skills.
Issues of professional responsibility
1. Intellectual property rights
ACM/IEEE Code of Ethics
The professional societies in the US have cooperated to produce a code of ethical practice. Members of these organisations sign up to the code of practice when they join.
The Code contains eight Principles related to the behaviour of and decisions made by professional software engineers, including practitioners, educators, managers, supervisors and policy makers, as well as trainees and students of the profession. This code of ethics consists of:-
This is the disagreement in principle with the policies of senior management, eg an employer acts in an unethical way and releases a safety-critical system without finishing the testing of the system or Participation in the development of military weapons systems or nuclear systems.