🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

Module 1 (2).pdf

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

UCSC102L – Software Engineering Ms.Sudha C M.E. (Ph.D.) Assistant Professor – Junior SCOPE Course Objectives 1. To understand the fundamental concepts of software engineering process, product and project 2. 2. To develop appropriate knowledge of requirements specific...

UCSC102L – Software Engineering Ms.Sudha C M.E. (Ph.D.) Assistant Professor – Junior SCOPE Course Objectives 1. To understand the fundamental concepts of software engineering process, product and project 2. 2. To develop appropriate knowledge of requirements specification and design solutions for the given problem 3. 3. To examine the quality standards in the software development process Course Outcomes 1. Demonstrate the basics of software engineering process, ethics, and development 2. 2. Illustrate the concept of various process models, activities, and its improvements 3. 3. Analyze the various aspects of software requirement engineering and system models 4. 4. Summarize and analyse the decisions about the system architectural design process 5. 5. Inspect a computer-based system to meet the desired needs of the customer with proper understanding of the critical systems development Module:1 - 5 hours Introduction to Software Engineering Professional software development- Software engineering ethics, Software process models, Process activities, Coping with change, Process improvement Professional software development Software Engineering Software engineering is 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. Two Phrases: 1. Engineering discipline Engineers make things work. They apply theories, methods, and tools where these are appropriate. However, they use them selectively and always try to discover solutions to problems even when there are no applicable theories and methods. Engineers also recognize that they must work within organizational and financial constraints, and they must look for solutions within these constraints. 2. All aspects of software production Software engineering is not just concerned with the technical processes of software development. It also includes activities such as software project management and the development of tools, methods, and theories to support software development. Software Engineering Software Engineering is the science and art of building significant software systems that are: 1) on time 2) on budget 3) with acceptable performance 4) with correct operation. Software Engineering The economies of all developed nations are dependent on software. More and more systems are software controlled. Software engineering is concerned with theories, methods and tools for professional software development. Software engineering expenditure represents a significant fraction of the GNP of developed countries. Software Costs Software costs often dominate system costs. The costs of software on a PC are often greater than the hardware cost. Software costs more to maintain than it does to develop. Software engineering is concerned with cost-effective software development Software Products Software engineers are concerned with developing software products, that is, software that can be sold to a customer. Generic products: Stand-alone systems which are produced by a development organization and sold on the open market to any customer. Customized (or bespoke) products: Systems which are commissioned by a specific customer and developed specially by some contractor. Software Product Attributes Efficiency Costs Cost Ef ficiency The Software Process The systematic approach that is used in software engineering is sometimes called a software process. A software process is a sequence of activities that leads to the production of a software product. Activities vary depending on the organization and the type of system being developed. Must be explicitly modeled if it is to be managed. Software Process -activities Software specification: where customers and engineers define the software that is to be produced and the constraints on its operation. Software development: where the software is designed and programmed. Software validation: where the software is checked to ensure that it is what the customer requires. Software evolution: where the software is modified to reflect changing customer and market requirements. Software Engineering Software engineering is related to both computer science and systems engineering. 1. Computer science is concerned with the theories and methods that underlie computers and software systems, whereas software engineering is concerned with the practical problems of producing software. 2. System engineering is concerned with all aspects of the development and evolution of complex systems where software plays a major role. System engineering is therefore concerned with hardware development, policy and process design, and system deployment, as well as software engineering. Issues affecting Software Heterogeneity Business and social change Security and trust Scale Software Engineering Ethics Software Engineering Ethics Software engineering is carried out within a social and legal framework that limits the freedom of people working in that area A good software engineer is generally expected to have full knowledge on their project and its possible effects towards the environment. Ethically, a software engineer is supposed to ensure that no public violations are made hence preserving their privacy Software Engineering Ethics There are areas where standards of acceptable behavior are not bound by laws but by the more tenuous notion of professional responsibility. Some of these are: Confidentiality - respect the confidentiality of your employers or clients regardless of whether or not a formal confidentiality agreement has been signed. Competence - You should not misrepresent your level of competence. You should not knowingly accept work that is outside your competence. Intellectual property rights - You should be aware of local laws governing the use of intellectual property such as patents and copyright. Computer misuse - don’t misuse other’s computer due to your technical skills Software Engineering Code Of Ethics And Professional Practice IEEE/ACM Joint Task Force on Software Engineering Ethics and Professional Practices ©1999 by the Institute of Electrical and Electronics Engineers, Inc. and the Association for Computing Machinery, Inc. 22 What is SEEPP?  Stands for Software Engineering Ethics and Professional Practices  Goal: Establish a code of conduct for professional software engineers to make software engineering a beneficial and respected profession.  Joint Effort by IEEE-Computer Society and Association of Computing Machinery(ACM) 23 Who are the Engineers?  Software engineers are those who contribute either by direct participation or by – teaching, – analyzing, – Specification generating, – designing, – developing, – certifying, – Maintaining and – testing of software systems 24 Roles of Engineers  “Professional Software Engineers” include – Practitioners – Educators – Managers – Supervisors – and Policy makers  Trainees and Students of the Profession 25 What is Software?  Computers have a central and growing role in commerce, industry, government, medicine, education, entertainment and society at large  Software Engineers develop software to automate / facilitate other areas of society  Thus Role of software in medicine, education, government, industry, commerce etc is “Key” 26 Software Engineers in focus  Because of their roles in developing software systems, software engineers have significant opportunities to – Do good or cause harm – Enable others to do good or cause harm – Influence others to do good or cause harm 27 Need for Code of Ethics To ensure, as much as possible, that software engineers efforts will be used for good Software engineers must commit themselves to making software engineering a beneficial and respected profession In accordance with that commitment, software engineers shall adhere a Code of Ethics and Professional Practice 28 Software Engineering Code of Ethics and Professional Practice The Code contains eight Principles related to the behavior of and decisions made by professional software engineers 1. PUBLIC 2. CLIENT AND EMPLOYER 3. PRODUCT 4. JUDGEMENT 5. MANAGEMENT 6. PROFESSION 7. COLLEAGUES 8. SELF 29 Software Engineering Code of Ethics and Professional Practice (Contd.) 1 PUBLIC – Software engineers shall act consistently with the public interest  Accept full responsibility for their own work.  Moderate the interests of the software engineer, the employer, the client and the users with the public good  Approve software only if they believe that it is safe, meets specifications, passes appropriate tests  Be fair and avoid deception in all statements, particularly public ones  Consider issues of physical disabilities and allocation of resources  Be encouraged to volunteer professional skills to good causes 30 Software Engineering Code of Ethics and Professional Practice (Contd.) 2 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  Provide service in their areas of competence  Not knowingly use software that is obtained or retained either illegally or unethically.  Use the property of a client or employer only in ways properly authorized  Identify, document, collect evidence and report to the client or the employer promptly if, a project is likely to fail or to violate intellectual property law 31 Software Engineering Code of Ethics and Professional Practice (Contd.) 3 PRODUCT – Software engineers shall ensure that their products and related modifications meet the highest professional standards possible  Strive for high quality and acceptable cost  Ensure proper and achievable goals and objectives for any project  Ensure that they are qualified for any project they work on  Ensure that an appropriate method is used for any project  Work to follow professional standards  Strive to fully understand the specifications for software  Ensure adequate testing, debugging, documentation and review of software  Treat all forms of software maintenance with the same professionalism as new development. 32 Software Engineering Code of Ethics and Professional Practice (Contd.) 4 JUDGMENT – Software engineers shall maintain integrity and independence in their professional judgment  Temper all technical judgments by the need to support and maintain human values.  Only endorse documents if prepared under supervision  Maintain professional objectivity with respect to any software  Not engage in deceptive financial practices such as double billing, or other improper financial practices.  Disclose to all concerned parties those conflicts of interest that cannot reasonably be avoided or escaped. 33 Software Engineering Code of Ethics and Professional Practice (Contd.) 5 MANAGEMENT – Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance  Ensure good management for any project on which they work  Ensure that software engineers are informed of standards before being held to them.  Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project  Provide for due process in hearing charges of violation of an employer's policy or of this Code.  Not ask a software engineer to do anything inconsistent with this Code  Not punish anyone for expressing ethical concerns about a project. 34 Software Engineering Code of Ethics and Professional Practice (Contd.)  6 PROFESSION – Software engineers shall advance the integrity and reputation of the profession consistent with the public interest  Help develop an organizational environment favorable to acting ethically  Promote public knowledge of software engineering  Support, as members of a profession, other software engineers striving to follow this Code.  Not promote their own interest at the expense of the profession, client or employer.  Take responsibility for detecting, correcting, and reporting errors in software  Report significant violations of this Code to appropriate authorities 35 Software Engineering Code of Ethics and Professional Practice (Contd.)  7 COLLEAGUES – Software engineers shall be fair to and supportive of their colleagues  Encourage colleagues to adhere to this Code  Assist colleagues in professional development  Credit fully the work of others and refrain from taking undue credit  Assist colleagues in being fully aware of current standard work practices  Not unfairly intervene in the career of any colleague 36 Software Engineering Code of Ethics and Professional Practice (Contd.)  8 SELF – Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession  Further their knowledge of recent developments  Improve their ability to create safe, reliable, and useful quality software  Improve their ability to produce accurate, informative, and well-written documentation  Improve their knowledge of relevant standards  Not influence others to undertake any action that involves a breach of this Code 37 Where to find this code? http://www.computer.org/tab/seprof/code.htm 38 Case studies  Software Licensing (illegal copies)  Sharewares (hidden bomb)  Team mates act of vandalism(loopholes)  Virus in Public Software (Bugged browser) 39 Software Process Models 40 The Software Process  The systematic approach that is used in software engineering is sometimes called a software process. A software process is a sequence of activities that leads to the production of a software product.  Activities vary depending on the organization and the type of system being developed.  Must be explicitly modeled if it is to be managed. Software Process – Four Fundamental activities – Software specification: The functionality of the software and constraints on its operation must be defined. – Software development: The software to meet the specification must be produced. – Software validation: The software must be validated to ensure that it does what the customer wants. – Software evolution: The software must evolve to meet changing customer needs. Software Process We can all relate to what people do to develop software. However, when describing processes, it is also important to describe who is involved, what is produced, and conditions that influence the sequence of activities:  1. Products or deliverables are the outcomes of a process activity. For example, the outcome of the activity of architectural design may be a model of the software architecture.  2. Roles reflect the responsibilities of the people involved in the process. Examples of roles are project manager, configuration manager, and programmer.  3. Pre- and postconditions are conditions that must hold before and after a process activity has been enacted or a product produced. 43 Software Process Models A software process model (sometimes called a Software Development Life Cycle or SDLC model) is a simplified representation of a software process. Each process model represents a process from a particular perspective and thus only provides partial information about that process. – Waterfall Model - separate process phases such as requirements specification, software design, implementation, and testing. – Incremental development This approach interleaves the activities of specification, development, and validation. The system is developed as a series of versions (increments), with each version adding functionality to the previous version. – Integration and configuration This approach relies on the availability of reusable components or systems. The system development process focuses on configuring these components for use in a new setting and integrating them into a system. 44 WaterFall Model  The first published model of the software development process was derived from engineering process models used in large military systems engineering (Royce 1970).  You need to plan and schedule all of the process activities before starting software development.  In principle, the result of each phase in the waterfall model is one or more documents that are approved (“signed off”).  The following phase should not start until the previous phase has finished  This model make sense for Hardware system  During design, problems with requirements are identified; during coding design problems are found, and so on.  The software process, in practice, is never a simple linear model but 45 involves feedback from one phase to another. WaterFall Model – Requirements analysis and definition: Defined in detail and serve as System Specification – System and software design : Establishes overall architecture – relationships between components – Implementation and unit testing: set of programs or program units. Unit testing involves verifying that each unit meets its specification. – Integration and system testing: The individual program units or programs are integrated and tested as a complete system to ensure that the software requirements have been met. After testing, the software system is delivered to the customer. – Operation and maintenance: longest life-cycle phase. The system is installed and put into practical use.  Maintenance involves correcting errors that were not discovered in earlier stages of the life cycle, improving the implementation of system units, and enhancing the system’s services as new requirements are discovered 46 Waterfall Model 47 Incremental Model 48 Incremental Model By developing the software incrementally, it is cheaper and easier to make changes in the software as it is being developed. Each increment or version of the system incorporates some of the functionality that is needed by the customer. Generally, the early increments of the system include the most important or most urgently required functionality. This means that the customer or user can evaluate the system at a relatively early stage in the development to see if it delivers what is required. 49 Incremental Model  Incremental development has three major advantages over the waterfall model: – The cost of implementing requirements changes is reduced. The amount of analysis and documentation that has to be redone is significantly less than is required with the waterfall model. – It is easier to get customer feedback on the development work that has been done. – Early delivery and deployment of useful software to the customer is possible, even if all of the functionality has not been included 50 Incremental Model  Not suitable for large complex system  Large systems need a stable framework or architecture, and the responsibilities of the different teams working on parts of the system need to be clearly defined with respect to that architecture.  From a management perspective, Two Problems – The process is not visible. Managers need regular deliverables to measure progress. If systems are developed quickly, it is not cost effective to produce documents that reflect every version of the system. – Regular change leads to messy code as new functionality is added in whatever way is possible.  It becomes increasingly difficult and costly to add new features to a system. 51 Integration and configuration Models  In the majority of software projects, there is some software reuse.  This often happens informally when people working on the project know of or search for code that is similar to what is required.  They look for these, modify them as needed, and integrate them with the new code that they have developed.  Stages: – Requirements specification – Software discovery and evaluation – Requirements refinement – Application system configuration – Component adaptation and integration 52 Integration and configuration Models  Three types of software components are frequently reused: – Stand-alone application systems that are configured for use in a particular environment. – Collections of objects that are developed as a component or as a package to be integrated with a component framework such as the Java Spring framework (Wheeler and White 2013). – Web services that are developed according to service standards and that are available for remote invocation over the Internet. 53 Integration and configuration Models 54 55 Process activities  Software specification  Software design and implementation  Software validation  Software evolution 56 Software lifecycle Requirements Design & Coding & Analysis Specification Module Testing 10% 10-20% Integration & 10-20% System Testing Delivery & Maintenance 50-70% 57 Software lifecycle “student view” Design & Coding >90% Specification

Use Quizgecko on...
Browser
Browser