Software engineering Introduction: Software engineering is about teams. The problems to solve are so complex or large, that a single developer cannot solve them anymore. Software engineering is also about communication. Teams do not consist only of developers, but also of testers, architects, system engineers, customer, project managers, etc. Software projects can be so large that we have to do careful planning. Implementation is no longer just writing code, but it is also following guidelines, writing documentation and also writing unit tests. But unit tests alone are not enough. The different pieces have to fit together. And we have to be able to spot problematic areas using metrics. They tell us if our code follows certain standards. Once we are finished coding, that does not mean that we are finished with the project: for large projects maintaining software can keep many people busy for a long time. Since there are so many factors influencing the success or failure of a project, we also need to learn a little about project management and its pitfalls, but especially what makes projects successful. And last but not least, a good software engineer, like any engineer, needs tools, and you need to know about them. Software: Software means computer instructions or data. Anything that can be stored electronically is software, in contrast to storage devices and display devices which are called hardware. Software engineering: Definition: Software engineering is the study and application of engineering to the design, development, and maintenance of software. What is the difference between Software Engineering and Systems Engineering? The difference between System Engineering and Software Engineering is not very clear. However, it can be said that the System Engineers focus more on users and domains, while Software Engineering focus more on n implementing quality software. System Engineer may deal with a substantial amount of hardware engineering, but typically software engineers will focus solely on software components. System Engineers may have a broader education (including Engineering, Mathematics and Computer science), while Software Engineers will come from a Computer Science or Computer engineering background. What is a software process model? Simplified representation of software process, presented from specific perspective. Generic process of model: Waterfall Iterative development Component based software engineering What is a Software process? Is Set of activities whose goal is the development software. Generic activities of software process are: Specification Development Validation Evaluation System Definition: a set of detailed methods, procedures and routines created to carry out a specific activity, perform a duty, or solve a problem. An organized, purposeful structure that consists of interrelated and interdependent elements (components, entities, factors, members, parts etc.). These elements continually influence one another. Software Engineering Method and Theory (SEMAT) Software Engineering Method and Theory (SEMAT) is an industry community committed to improving software engineering practices, by redefining and re-shaping software engineering as a rigorous discipline. It was founded in 2009 by Ivor Jacobson, Bertrand Meyer and Richard Solely. • CASE (computer-aided software engineering) CASE (computer-aided software engineering) is the use of a computer-assisted method to organize and control the development of software, especially on large, complex projects involving many software components and people. Using CASE allows designers, code writers, testers, planners, and managers to share a common view of where a project stands at each stage of development. CASE helps ensure a disciplined, check-pointed process. A CASE tool may portray progress (or lack of it) graphically. It may also serve as a repository for or be linked to document and program libraries containing the project's business plans, design requirements, design specifications, detailed code specifications, the code units, test cases and results, and marketing and service plans. CASE originated in the 1970s when computer companies were beginning to borrow ideas from the hardware manufacturing process and apply them to software development (which generally has been viewed as an insufficiently disciplined process). Some CASE tools supported the concepts of structured programming and similar organized development methods. More recently, CASE tools have had to encompass or accommodate visual programming tools and object-oriented programming. In corporations, a CASE tool may be part of a spectrum of processes designed to ensure quality in what is developed. (Many companies have their processes audited and certified as being in conformance with the ISO 9000 standard.) CASE systems are divided into: Upper-Case: Tools to support the early process activities of requirements and design. Lower-Case: Tools to support later activities such as programming debugging and testing programming, debugging and testing. What are the attributes of good software? 1. stable - doesn't crash of features • 3. Has an intuitive user interface - user is able to figure out how to use the software without the necessity of having to reference a manual 4. Does not require the user to perform any tasks (mouse clicks, menu selections, key presses) than are absolutely necessary for it to perform a task. All processes are designed for straightforwardness and simplicity of use. The software does the work for the user, not the other way around. 5. efficient - uses no more computer resources than is absolutely essential. This means it is low on cup and rams use, and that it only installs features it needs to run. When its not running it has no additional installs which effect on the performance of the machine. Interesting question by the way... What are the key challenges facing software engineering: There are three KEY CHALLENGES in software engineering The Software Engineering Code of Ethics and Professional Practice, produced by the Institution of Elect here are three KEY CHALLENGES in software engineering... 1. Heterogeneity This says, developing techniques for building software, that can cope with heterogeneous platforms ( changing platforms / different platforms ) and execution environments ( executing environment ) . 2. Delivery delivery is another concern in software engineering . So developing techniques that can make the delivery fast, described in ' DELIVERY ' . 3. Trust A software must be trusted. Here ' TRUST ' means that developing techniques that demonstrate that software can be trusted by its users Code of ethics principle: Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles: • Public: S software engineers shall act consistently with the public interest. • Client and Employer: Software engineers shall act in a manner that is in the best interests of their client and employer, consistent with the public interest. • Product: Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. Judgment: Software engineers shall maintain integrity and independence in their professional judgment. • Management: Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. • Profession: Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. • Colleagues: Software engineers shall be fair to and supportive of their colleagues. • Ethical Issues and Professional Responsibilities Ethical issues in research and the professional responsibilities of scientists are discussed based on readings and occasional lectures. The topics are intended to cover the requirements for ethical training of graduate students on training grants and follow the recommendations of the Office of Research Integrity. beyond first year. . Preamble Code of Ethics: The preservation of the highest standards of integrity and ethical principles is vital to the responsible discharge of obligations by speech-language pathologists, audiologists, and speech, language, and hearing scientists. This Code of Ethics sets forth the fundamental principles and rules considered essential to this purpose. Every individual who is (a) a member of the American Speech-Language-Hearing Association, whether certified or not, (b) a nonmember holding the Certificate of Clinical Competence from the Association, (c) an applicant for membership or certification, or (d) a Clinical Fellow seeking to fulfill standards for certification shall abide by this Code of Ethics. Any violation of the spirit and purpose of this Code shall be considered unethical. Failure to specify any particular responsibility or practice in this Code of Ethics shall not be construed as denial of the existence of such responsibilities or practices. The fundamentals of ethical conduct are described by Principles of Ethics and by Rules of Ethics as they relate to the responsibility to persons served, the public, speech-language pathologists, audiologists, and speech, language, and hearing scientists, and to the conduct of research and scholarly activities. Principles of Ethics, aspirational and inspirational in nature, form the underlying moral basis for the Code of Ethics. Individuals shall observe these principles as affirmative obligations under all conditions of professional activity. Rules of Ethics are specific statements of minimally acceptable professional conduct or of prohibitions and are applicable to all individuals. What Is an Ethical Dilemma? There are three conditions that must be present for a situation to be considered an ethical dilemma. The first condition occurs in situations when an individual, called the “agent,” must make a decision about which course of action is best. Situations that are uncomfortable but that don’t require a choice, are not ethical dilemmas. For example, students in their internships are required to be under the supervision of an appropriately credentialed social work field instructor. Therefore, because there is no choice in the matter, there is no ethical violation or breach of confidentiality when a student discusses a case with the supervisor. The second condition for ethical dilemma is that there must be different courses of action to choose from. Third, in an ethical dilemma, no matter what course of action is taken, some ethical principle is compromised. In other words, there is no perfect solution.