The document discusses the field of software engineering. It begins by explaining how the concept of software engineering emerged in response to the "software crisis" of the 1960s, when individual approaches to program development did not scale well to large, complex software systems. Throughout the 1970s and 1980s, new software engineering techniques were developed, such as structured programming and object-oriented development. The document then provides definitions and descriptions of key concepts in software engineering, including the software engineering process, types of software applications, issues that affect software development, and professional responsibilities of software engineers.
This document provides information about the "Software Engineering & Information System Design" course at East West University. It includes:
- Details about the course instructor Tanni Mittra and their background.
- Information about the course such as the class webpage, textbooks used, lecture times, and marking distribution.
- The objectives of the course which are to understand software engineering principles and acquire both technical and managerial knowledge.
- An overview of the topics that will be covered in the first chapter on introductions to software, software engineering, and ethics.
Introduction to Software Engineering & Information TechnologyGaditek
For Introduction to Software Engineering & Information Technology this slide will guide you many things about Introduction to Software Engineering & Information Technology.
This document provides an overview of an introduction to software engineering course. It discusses key topics that will be covered in the course including software development lifecycles, processes, requirements engineering, analysis, design, development, testing, verification and validation. It also discusses the software crisis in the 1960s that led to the emergence of software engineering as a discipline. The roles and characteristics of software engineers are outlined. The relationships between software engineering and other disciplines like computer science and management science are described. The differences between software engineering and traditional engineering are highlighted. Finally, the attributes of well-engineered software are listed.
This document discusses the importance of software engineering and its principles. It introduces software engineering as a set of processes and tools used to develop software. It also notes that software engineering is important because it provides a disciplined and systematic approach to software development, balancing requirements like quality, time and cost.
This document provides an overview of software and software engineering. It defines software, discusses why software is important, and explores key software engineering concepts like the software development process, process models, case studies, and requirements. Specifically, it defines software, explains that software engineering aims to produce reliable software economically, and discusses the importance of processes and methods in software development.
Greate Introduction to Software Engineering @ Track IT AcademyMohamed Shahpoup
The document provides an overview of software engineering concepts including software processes, rapid software development, practices, and a case study on the V-Model process. It defines software and software engineering. It describes common software process models like waterfall, iterative development, and component-based development. It also covers rapid software development approaches like incremental delivery and agile methods. Key practices discussed include pair programming, prototyping, and activities in the software development lifecycle. Finally, it presents the phases of the V-Model process and how it maps testing to requirements and design.
This document provides information about the "Software Engineering & Information System Design" course at East West University. It includes:
- Details about the course instructor Tanni Mittra and their background.
- Information about the course such as the class webpage, textbooks used, lecture times, and marking distribution.
- The objectives of the course which are to understand software engineering principles and acquire both technical and managerial knowledge.
- An overview of the topics that will be covered in the first chapter on introductions to software, software engineering, and ethics.
Introduction to Software Engineering & Information TechnologyGaditek
For Introduction to Software Engineering & Information Technology this slide will guide you many things about Introduction to Software Engineering & Information Technology.
This document provides an overview of an introduction to software engineering course. It discusses key topics that will be covered in the course including software development lifecycles, processes, requirements engineering, analysis, design, development, testing, verification and validation. It also discusses the software crisis in the 1960s that led to the emergence of software engineering as a discipline. The roles and characteristics of software engineers are outlined. The relationships between software engineering and other disciplines like computer science and management science are described. The differences between software engineering and traditional engineering are highlighted. Finally, the attributes of well-engineered software are listed.
This document discusses the importance of software engineering and its principles. It introduces software engineering as a set of processes and tools used to develop software. It also notes that software engineering is important because it provides a disciplined and systematic approach to software development, balancing requirements like quality, time and cost.
This document provides an overview of software and software engineering. It defines software, discusses why software is important, and explores key software engineering concepts like the software development process, process models, case studies, and requirements. Specifically, it defines software, explains that software engineering aims to produce reliable software economically, and discusses the importance of processes and methods in software development.
Greate Introduction to Software Engineering @ Track IT AcademyMohamed Shahpoup
The document provides an overview of software engineering concepts including software processes, rapid software development, practices, and a case study on the V-Model process. It defines software and software engineering. It describes common software process models like waterfall, iterative development, and component-based development. It also covers rapid software development approaches like incremental delivery and agile methods. Key practices discussed include pair programming, prototyping, and activities in the software development lifecycle. Finally, it presents the phases of the V-Model process and how it maps testing to requirements and design.
Software engineering deals with building large, complex software systems through a team-based approach. It aims to clearly define problems, use standard tools and techniques, and approach development like engineering disciplines such as building construction. Key aspects include requirements analysis, system design, coding, testing, and maintenance. Tools and environments support software engineering activities and have evolved from basic editors and compilers to integrated development environments. Specifications are precise statements of what a system must do and are used to define requirements, design interfaces, and module behaviors.
This document provides an overview of software and software engineering. It discusses that software is designed by engineers and used virtually everywhere. It also outlines important questions for software engineers, different types of software applications, challenges in software development, and realities of software engineering. The document emphasizes that software engineering applies systematic and disciplined approaches to develop reliable and efficient software economically. It also summarizes various software engineering processes, activities, principles, and that software is created to meet business needs.
The document discusses software design and key concepts related to software design including:
1) Software design is the process of planning the architecture, components, interfaces, and other characteristics of a software system.
2) Good software design aims for high cohesion and loose coupling between modules. It involves conceptual design, technical design, and refinement of the design.
3) Modularity, coupling, and cohesion are important design principles. Modularity enhances manageability while loose coupling and high cohesion are design goals.
The document provides an overview of software engineering concepts including definitions of software and software engineering. It discusses the importance of software and characteristics that make it different than other engineered products. The document also outlines some common software applications and categories. It defines the key activities in a generic software process including communication, planning, modeling, construction, and deployment. Finally, it provides examples of two case studies - an embedded system in an insulin pump and a patient information system for mental health care.
This document discusses key topics in software engineering including its importance, costs, methods, challenges and professional responsibilities. It begins by outlining the objectives of understanding what software engineering is, its importance, and ethical issues. It then discusses that software costs, especially maintenance, often exceed development costs. Software engineering aims to improve cost-effectiveness. The document poses several frequently asked questions about software engineering and provides concise answers, covering topics such as the definition of software and differences between computer science, software engineering and system engineering. It also discusses software processes, costs, methods, CASE tools, attributes of good software and challenges in the field.
The document provides an introduction to software engineering, covering topics such as what software engineering entails, the different types of software applications, and key principles of software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It also discusses the different types of software applications and notes that while fundamental principles apply universally, the appropriate techniques depend on the application type and requirements.
This document provides an overview of software engineering and development trends presented over 2 days of lectures and demos. It begins with introductions of the lecturer, Vladimir Kotov, and states the topic is software engineering and development FAQs. It then presents and defines key concepts in software engineering like what software and software engineering are, software processes, process models, methods, architecture and enterprise applications. It outlines 5 trends: 1) increasing software complexity, 2) raising abstraction levels, 3) continuous process improvement, 4) adapting to changing requirements, and 5) experience reuse to address recurring problems. It promotes agile principles and software reuse benefits and challenges.
The document provides an overview of software engineering. It discusses how software engineering is concerned with developing software using systematic principles and methods. It notes that software costs often exceed hardware costs and that maintenance costs can be several times more than development costs. It also discusses key challenges like coping with increasing complexity and demands for reduced delivery times. The document outlines fundamental software engineering activities like specification, development, validation and evolution.
This document provides an overview of software and software engineering. It defines software, discusses why software is important to modern economies, and outlines some key characteristics of software such as its non-physical nature and tendency to deteriorate over time rather than wear out. The document also introduces common software applications, categories, and costs. Finally, it discusses the importance of software engineering in developing reliable, high-quality software economically.
Wait for it: identifying “On-Hold” self-admitted technical debtRungrojMaipradit1
This document presents the results of a study analyzing how developers remove self-admitted technical debt (SATD) from five open source projects. The study found that 20-50% of SATD removals were accidental due to code being removed. It also found that only 8% of SATD removals were acknowledged in commit messages. While most SATD fixes required complex code changes, some were addressed with simpler changes like modifying method calls or conditionals. The study provides insights into how SATD is typically removed and patterns that may help recommend SATD solutions.
This document discusses software security metrics and validating UML diagrams using metrics. It provides background on using metrics to measure quality attributes of object-oriented designs. Traditional code-level security metrics are insufficient and evaluating security at the design level is important. The paper proposes a system that applies design-level security metrics using genetic algorithms to generate secure design options from a UML diagram. It then implements code from the designs and applies the same metrics at the code level to validate that the code matches the intended secure design. This allows discovering and fixing security issues earlier in the development process.
This document provides an overview of operating systems, including definitions, components, types, and examples. It defines an operating system as software that manages computer hardware and allows other programs to run. The main components described are the kernel, memory management, process execution, interrupts, file systems, device drivers, networking, security, and user interface. Operating system types covered are real-time, batch, multi-user/single-user, multi-tasking/single-tasking, distributed, and embedded. Examples of operating systems mentioned are MS DOS, Windows, Mac OS, Linux, Ubuntu, Solaris, Android, and iOS.
Software Engineering Challenges in building AI-based complex systemsIvica Crnkovic
Development of AI-based systems goes far beyond using specific AI-algorithms. The development itself is becoming more complex since data and algorithms become dependent. This presentation lists some of new challenges that AI-developers meet.
Unit 1 introduction tosoftengg_mba tech ii yearPreeti Mishra
This document provides an introduction to software engineering. It defines software and discusses different categories of software products. It explains that software engineering is concerned with developing software using systematic and disciplined approaches. The document outlines important attributes of good software such as maintainability, dependability, efficiency and acceptability. It also discusses challenges with legacy software systems and reasons for evolving legacy systems. Finally, it covers key tasks for software project planning such as establishing scope, feasibility analysis, risk analysis, resource estimation, and developing a project schedule.
Unit 1 importance ofsoftengg_b.tech iii yearPreeti Mishra
Here are some key points from Unit 1:
- Software is computer programs, data structures, and documentation. Software engineering is the systematic development and maintenance of software.
- A software process provides a framework for development activities like communication, planning, modeling, construction and deployment. It establishes quality practices.
- Legacy software supports core functions but is outdated, poorly designed and documented. It is costly to replace but also to maintain.
- Common software myths include thinking requirements can change freely, documentation is unnecessary, or that quality is only important after coding. These undermine good practices.
- A process framework provides structure while methods and tools support specific technical tasks. Processes must balance control and flexibility for different projects.
This document provides an introduction to software engineering. It discusses key topics like the definition of software engineering, differences between software engineering and computer science, the software development process, methods and costs of software engineering, professional responsibilities, and ethics in the field. The document is from a company called Vibrant Technologies and contains contact information throughout.
Model driven process for real time embeddedcaijjournal
Embedded systems shape our world nowadays. It’s almost impossible to imagine our day to day life without
it. Examples can include cell phones, home appliances, energy generators, satellites, automotive
components …etc. it is even far more complex if there are real-time and interface constraints.
Developing real-time embedded systems is significantly challenging to developers. Results need not be only
correct, but also in a timely manner. New software development approaches are needed due to the
complexity of functional and non-functional requirements of embedded systems.
Due to the complex context of embedded systems, defects can cause life threatening situations. Delays can
create huge costs, and insufficient productivity can impact the entire industry. The rapid evolution of
software engineering technologies will be a key factor in the successful future development of even more
complex embedded systems.
Software development is shifting from manual programming, to model-driven engineering (MDE). One of
the most important challenges is to manage the increasing complexity of embedded software development,
while maintaining the product’s quality, reducing time to market, and reducing development cost.
MDE is a promising approach that emerged lately. Instead of directly coding the software using
programming languages, developers model software systems using expressive, graphical notations, which
provide a higher abstraction level than programming languages. This is called Model Based Development
(MBD).
Model Based Development if accompanied by Model Based Validation (MBV), will help identify problems
early thus reduce rework cost. Applying tests based on the designed models not only enable early detection
of defects, but also continuous quality assurance. Testing can start in the first iteration of the development
process.
As a result of the model based approach, and in addition to the major advantage of early defects detection,
several time consuming tasks within the classical software development life cycle will be excluded. For
embedded systems development, it’s really important to follow a more time efficient approach.
This document provides an introduction to software engineering. It discusses the key concepts of software engineering including its history, important activities like specification and development, attributes of good software like maintainability and security, different types of software systems, and how fundamental principles apply across systems. It also addresses how the rise of web-based systems and services has impacted software engineering practices.
This document provides an introduction to software engineering. It defines software engineering as the systematic application of engineering principles to software development, maintenance, and operation. The document discusses key questions about software engineering, including what it is, how it differs from computer science and systems engineering, the "software crisis" involving cost overruns and defects, and attributes of good software like maintainability and dependability. It also covers software engineering processes, methods, costs, and challenges.
Software engineering is a systematic approach to software development that accounts for practical issues like costs and schedules while meeting customer needs. It involves activities like specification, development, validation, and evolution. The discipline has expanded to include web-based systems and services. Ethical practices like protecting intellectual property and customer data are important for professional software engineers.
Software engineering deals with building large, complex software systems through a team-based approach. It aims to clearly define problems, use standard tools and techniques, and approach development like engineering disciplines such as building construction. Key aspects include requirements analysis, system design, coding, testing, and maintenance. Tools and environments support software engineering activities and have evolved from basic editors and compilers to integrated development environments. Specifications are precise statements of what a system must do and are used to define requirements, design interfaces, and module behaviors.
This document provides an overview of software and software engineering. It discusses that software is designed by engineers and used virtually everywhere. It also outlines important questions for software engineers, different types of software applications, challenges in software development, and realities of software engineering. The document emphasizes that software engineering applies systematic and disciplined approaches to develop reliable and efficient software economically. It also summarizes various software engineering processes, activities, principles, and that software is created to meet business needs.
The document discusses software design and key concepts related to software design including:
1) Software design is the process of planning the architecture, components, interfaces, and other characteristics of a software system.
2) Good software design aims for high cohesion and loose coupling between modules. It involves conceptual design, technical design, and refinement of the design.
3) Modularity, coupling, and cohesion are important design principles. Modularity enhances manageability while loose coupling and high cohesion are design goals.
The document provides an overview of software engineering concepts including definitions of software and software engineering. It discusses the importance of software and characteristics that make it different than other engineered products. The document also outlines some common software applications and categories. It defines the key activities in a generic software process including communication, planning, modeling, construction, and deployment. Finally, it provides examples of two case studies - an embedded system in an insulin pump and a patient information system for mental health care.
This document discusses key topics in software engineering including its importance, costs, methods, challenges and professional responsibilities. It begins by outlining the objectives of understanding what software engineering is, its importance, and ethical issues. It then discusses that software costs, especially maintenance, often exceed development costs. Software engineering aims to improve cost-effectiveness. The document poses several frequently asked questions about software engineering and provides concise answers, covering topics such as the definition of software and differences between computer science, software engineering and system engineering. It also discusses software processes, costs, methods, CASE tools, attributes of good software and challenges in the field.
The document provides an introduction to software engineering, covering topics such as what software engineering entails, the different types of software applications, and key principles of software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It also discusses the different types of software applications and notes that while fundamental principles apply universally, the appropriate techniques depend on the application type and requirements.
This document provides an overview of software engineering and development trends presented over 2 days of lectures and demos. It begins with introductions of the lecturer, Vladimir Kotov, and states the topic is software engineering and development FAQs. It then presents and defines key concepts in software engineering like what software and software engineering are, software processes, process models, methods, architecture and enterprise applications. It outlines 5 trends: 1) increasing software complexity, 2) raising abstraction levels, 3) continuous process improvement, 4) adapting to changing requirements, and 5) experience reuse to address recurring problems. It promotes agile principles and software reuse benefits and challenges.
The document provides an overview of software engineering. It discusses how software engineering is concerned with developing software using systematic principles and methods. It notes that software costs often exceed hardware costs and that maintenance costs can be several times more than development costs. It also discusses key challenges like coping with increasing complexity and demands for reduced delivery times. The document outlines fundamental software engineering activities like specification, development, validation and evolution.
This document provides an overview of software and software engineering. It defines software, discusses why software is important to modern economies, and outlines some key characteristics of software such as its non-physical nature and tendency to deteriorate over time rather than wear out. The document also introduces common software applications, categories, and costs. Finally, it discusses the importance of software engineering in developing reliable, high-quality software economically.
Wait for it: identifying “On-Hold” self-admitted technical debtRungrojMaipradit1
This document presents the results of a study analyzing how developers remove self-admitted technical debt (SATD) from five open source projects. The study found that 20-50% of SATD removals were accidental due to code being removed. It also found that only 8% of SATD removals were acknowledged in commit messages. While most SATD fixes required complex code changes, some were addressed with simpler changes like modifying method calls or conditionals. The study provides insights into how SATD is typically removed and patterns that may help recommend SATD solutions.
This document discusses software security metrics and validating UML diagrams using metrics. It provides background on using metrics to measure quality attributes of object-oriented designs. Traditional code-level security metrics are insufficient and evaluating security at the design level is important. The paper proposes a system that applies design-level security metrics using genetic algorithms to generate secure design options from a UML diagram. It then implements code from the designs and applies the same metrics at the code level to validate that the code matches the intended secure design. This allows discovering and fixing security issues earlier in the development process.
This document provides an overview of operating systems, including definitions, components, types, and examples. It defines an operating system as software that manages computer hardware and allows other programs to run. The main components described are the kernel, memory management, process execution, interrupts, file systems, device drivers, networking, security, and user interface. Operating system types covered are real-time, batch, multi-user/single-user, multi-tasking/single-tasking, distributed, and embedded. Examples of operating systems mentioned are MS DOS, Windows, Mac OS, Linux, Ubuntu, Solaris, Android, and iOS.
Software Engineering Challenges in building AI-based complex systemsIvica Crnkovic
Development of AI-based systems goes far beyond using specific AI-algorithms. The development itself is becoming more complex since data and algorithms become dependent. This presentation lists some of new challenges that AI-developers meet.
Unit 1 introduction tosoftengg_mba tech ii yearPreeti Mishra
This document provides an introduction to software engineering. It defines software and discusses different categories of software products. It explains that software engineering is concerned with developing software using systematic and disciplined approaches. The document outlines important attributes of good software such as maintainability, dependability, efficiency and acceptability. It also discusses challenges with legacy software systems and reasons for evolving legacy systems. Finally, it covers key tasks for software project planning such as establishing scope, feasibility analysis, risk analysis, resource estimation, and developing a project schedule.
Unit 1 importance ofsoftengg_b.tech iii yearPreeti Mishra
Here are some key points from Unit 1:
- Software is computer programs, data structures, and documentation. Software engineering is the systematic development and maintenance of software.
- A software process provides a framework for development activities like communication, planning, modeling, construction and deployment. It establishes quality practices.
- Legacy software supports core functions but is outdated, poorly designed and documented. It is costly to replace but also to maintain.
- Common software myths include thinking requirements can change freely, documentation is unnecessary, or that quality is only important after coding. These undermine good practices.
- A process framework provides structure while methods and tools support specific technical tasks. Processes must balance control and flexibility for different projects.
This document provides an introduction to software engineering. It discusses key topics like the definition of software engineering, differences between software engineering and computer science, the software development process, methods and costs of software engineering, professional responsibilities, and ethics in the field. The document is from a company called Vibrant Technologies and contains contact information throughout.
Model driven process for real time embeddedcaijjournal
Embedded systems shape our world nowadays. It’s almost impossible to imagine our day to day life without
it. Examples can include cell phones, home appliances, energy generators, satellites, automotive
components …etc. it is even far more complex if there are real-time and interface constraints.
Developing real-time embedded systems is significantly challenging to developers. Results need not be only
correct, but also in a timely manner. New software development approaches are needed due to the
complexity of functional and non-functional requirements of embedded systems.
Due to the complex context of embedded systems, defects can cause life threatening situations. Delays can
create huge costs, and insufficient productivity can impact the entire industry. The rapid evolution of
software engineering technologies will be a key factor in the successful future development of even more
complex embedded systems.
Software development is shifting from manual programming, to model-driven engineering (MDE). One of
the most important challenges is to manage the increasing complexity of embedded software development,
while maintaining the product’s quality, reducing time to market, and reducing development cost.
MDE is a promising approach that emerged lately. Instead of directly coding the software using
programming languages, developers model software systems using expressive, graphical notations, which
provide a higher abstraction level than programming languages. This is called Model Based Development
(MBD).
Model Based Development if accompanied by Model Based Validation (MBV), will help identify problems
early thus reduce rework cost. Applying tests based on the designed models not only enable early detection
of defects, but also continuous quality assurance. Testing can start in the first iteration of the development
process.
As a result of the model based approach, and in addition to the major advantage of early defects detection,
several time consuming tasks within the classical software development life cycle will be excluded. For
embedded systems development, it’s really important to follow a more time efficient approach.
This document provides an introduction to software engineering. It discusses the key concepts of software engineering including its history, important activities like specification and development, attributes of good software like maintainability and security, different types of software systems, and how fundamental principles apply across systems. It also addresses how the rise of web-based systems and services has impacted software engineering practices.
This document provides an introduction to software engineering. It defines software engineering as the systematic application of engineering principles to software development, maintenance, and operation. The document discusses key questions about software engineering, including what it is, how it differs from computer science and systems engineering, the "software crisis" involving cost overruns and defects, and attributes of good software like maintainability and dependability. It also covers software engineering processes, methods, costs, and challenges.
Software engineering is a systematic approach to software development that accounts for practical issues like costs and schedules while meeting customer needs. It involves activities like specification, development, validation, and evolution. The discipline has expanded to include web-based systems and services. Ethical practices like protecting intellectual property and customer data are important for professional software engineers.
This document provides an introduction to software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important given past "software crises" involving costly failures. Examples of failures include flight delays due to an air traffic control system glitch and the exploding Ariane 5 rocket due to a numeric overflow error. The document outlines software engineering processes, models, costs, and challenges involving managing increasing diversity and demands for trustworthy software delivery.
This document provides an introduction to software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important given that errors in complex software systems can have devastating consequences. It also outlines some key software engineering concepts like the software development process, process models, types of software, and important attributes of good software.
This document provides an introduction to software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important given past "software crises" involving costly failures. It also outlines the software engineering process, including specification, development, validation, and evolution. Key challenges in the field are coping with increasing diversity, demands for reduced delivery times, and developing trustworthy software.
This document provides an introduction to software engineering. It defines software engineering as a discipline concerned with all aspects of software development. It notes that software engineering is important because complex software systems need to be developed and managed in a disciplined way. The document discusses some examples of software failures that demonstrate the need for engineering practices. It also outlines some key software engineering concepts like the software development process, process models, and attributes of high-quality software.
This document provides an introduction to software engineering. It defines software engineering as a discipline concerned with all aspects of software development. It notes that software engineering is important because complex software systems need to be developed and managed in a disciplined way. The document discusses some examples of software failures that demonstrate the need for engineering practices. It also outlines some key software engineering concepts like the software development process, process models, and attributes of high-quality software.
The document provides an overview of software engineering, discussing what it is, why it is important, common challenges, and key concepts. It defines software engineering as the application of engineering principles to software development. Major points covered include the software crisis that led to its emergence as a discipline, examples of costly software failures, attributes of good software like maintainability and dependability, different software development models and their costs, and ongoing challenges like managing heterogeneity.
Ian Sommerville, Software Engineering, 9th Edition Ch1Mohammed Romi
The document provides an introduction to software engineering concepts. It discusses what software engineering is, the importance of ethics in software development, and introduces three case studies that will be used as examples throughout the book. Specifically:
[1] It defines software engineering as an engineering discipline concerned with all aspects of software production. Professional and ethical practices are important.
[2] It discusses software engineering ethics and introduces the ACM/IEEE code of ethics for software engineers.
[3] It provides an overview of three case studies that will be referenced in later chapters: an insulin pump system, a patient management system, and a weather station system.
The document provides an introduction to software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important given that errors in complex software systems can have devastating consequences, as shown through examples of software failures in air traffic control, satellite launches, and ambulance dispatch systems. The document also covers fundamental software engineering concepts like the software process, process models, and costs.
This document provides an overview of key concepts in the field of software engineering. It defines software engineering as the application of systematic and disciplined approaches to software development, operation, and maintenance. The document discusses the importance of software engineering in producing reliable and economical software. It also summarizes essential attributes of good software such as maintainability, dependability, efficiency, and acceptability. Additionally, the document outlines a generic software engineering process framework involving activities like communication, planning, modeling, construction, and deployment. It notes that the process should be adapted to the specific project.
This document provides an introduction to a software engineering course. It outlines the topics that will be covered, including software processes, requirements, design, coding, testing, and project management. It describes the learning objectives of explaining software engineering principles and techniques for developing quality software. Students will be assessed through exams, presentations, and laboratory work. References for further reading are also provided.
The document provides an overview of software engineering concepts including the software engineering process, prescriptive process models (waterfall model, V-model, incremental model), evolutionary process models (prototyping), and software engineering principles. It defines software engineering and discusses the software engineering layered technology of quality focus, process layer, methods, and tools. It also describes common software process activities and umbrella activities applied throughout a software project.
The document describes a course on software engineering taught by Dr. P. Visu at Velammal Engineering College. It includes the course objectives, outcomes, syllabus, and learning resources. The key objectives are to understand software processes, requirements engineering, object-oriented concepts, software design, testing, and project management techniques. The syllabus covers topics like software processes, requirements analysis, object-oriented concepts, software design, testing, and project management over 5 units. Recommended textbooks and online references are also provided.
The document provides information about a course on software engineering taught by Dr. P. Visu at Velammal Engineering College. It includes the course objectives, outcomes, syllabus, textbooks and references. The objectives are to understand software project phases, requirements engineering, object-oriented concepts, enterprise integration and various testing and project management techniques. The outcomes cover comparing process models, formulating requirements engineering concepts, understanding object-oriented fundamentals, applying software design systematically, and evaluating project schedules and costs. The syllabus covers topics like software processes, requirements analysis, object-oriented concepts, software design, and testing and management over 5 units.
Software engineering is the systematic application of engineering principles and techniques to software development and maintenance. It involves designing, implementing, and modifying software to ensure it is of high quality, affordable, maintainable and delivered quickly. Software engineers apply defined processes with activities like communication, planning, modeling, construction and deployment to build computer programs, documents and data that meet user needs.
The document provides an overview of an introduction to software engineering course. It discusses the course objectives which are to learn about difficulties in software development, different software processes, designing high-quality software, and advanced software engineering methods. The course contents are then listed, covering topics like requirements engineering, software design, testing, and project management. It also discusses the software crisis and reasons for poor project outcomes like misunderstanding software as just programming and lack of engineering practices.
The document provides an overview of software engineering concepts including definitions of software, characteristics of good software, and the software engineering process. It discusses that software engineering aims to apply systematic and disciplined approaches to software development and maintenance to economically produce reliable and efficient software. The document also outlines key activities in a generic software process framework including communication, planning, modeling, construction, and deployment.
The document provides an overview of software engineering concepts. It defines software and its key characteristics, such as being developed rather than manufactured. It discusses different types of software applications and attributes of good software like maintainability and dependability. The document also outlines the activities in a generic software process, including communication, planning, modeling, construction, and deployment. It emphasizes that the process should be adapted to each project's specific needs.
Similar to SE Introduction sharbani bhattacharya (20)
The document provides information about biometric authentication techniques. It discusses some common problems with traditional password and ID-based security systems. It then introduces biometrics as a more secure method of authentication based on unique physiological or behavioral characteristics. The document summarizes several biometric techniques including fingerprint, face, voice, palm print, hand geometry, hand vein, iris, and discusses their strengths and weaknesses. It also provides historical background on the use of biometrics.
The document provides information about JavaScript, including that it is a dynamic programming language commonly used in web pages to provide interactive and dynamic content. It describes JavaScript as lightweight, interpreted, and object-based. The summary also mentions that JavaScript allows for client-side validation of user input before form submission to reduce server loads. It can also be used to create richer interfaces with features like drag-and-drop.
PHP is a programming language used for building dynamic web sites. PHP code is embedded within HTML and runs on the web server, generating web pages dynamically as requested by visitors. PHP allows for easy creation of dynamic content. Common web programming technologies that PHP can be compared to include ASP, ASP.NET, Perl, Java, Python, Ruby, ColdFusion and more. PHP provides tools for building arrays, loops, functions and other essential elements for programming dynamic web applications.
The document discusses software design and implementation. It covers topics like the two levels of design (system design and detailed design), design methodologies, abstraction mechanisms, modularity, coupling and cohesion between modules, module interfaces, and design metrics. Some key points include: software design refines requirements and architecture, system design defines modules and interactions, detailed design provides processing logic, modularity means minimal impact of changes, and coupling/cohesion impact understandability and changeability.
Interfaces allow for multiple inheritance in .NET and contain only method and property definitions without implementations. They are declared using the Interface keyword and implemented using the Implements keyword. Abstract classes can contain implemented members while interfaces cannot. Interfaces are useful when different objects need to share common behaviors. Events allow objects to notify other objects of actions through messages. They are handled by subscribing event handler methods. Exceptions disrupt normal program execution and are handled using try, catch, and finally blocks.
This document contains notes from a training course on various topics related to the .NET framework and Visual Basic programming. It includes sections on replacing text in text boxes, working with multiline text boxes, using controls collections to reference form objects, characteristics of assemblies like being self-describing and using manifests, types of assemblies like private and shared, and using strong names and application domains.
This document outlines a workshop on Microsoft FrontPage technologies, which will cover FrontPage Explorer, the FrontPage web server, and FrontPage database connectivity. It will discuss FrontPage as a popular all-in-one web design toolkit that allows users to create complete websites on their PC and publish them to the World Wide Web. The workshop will specifically cover FrontPage Explorer as a tool for creating, organizing, administering and publishing FrontPage websites.
The document discusses various topics related to Visual Basic user interfaces and .NET architecture, including:
- It describes 2-tier and 3-tier architectures and how .NET enables easier development of N-tier applications.
- It discusses the benefits of .NET such as a common language runtime, support for multiple languages, and easier deployment.
- It explains key aspects of .NET architecture like the common language runtime, .NET framework class library, and how .NET applications can be developed for different environments and user interfaces.
The document discusses Visual Basic code for creating menus and menu items dynamically at runtime. It includes code to:
1) Add menu items to a runtime option menu by getting text values from textboxes and creating ToolStripMenuItems with that text.
2) Add click event handlers for the menu items that display a message box with the text of the clicked menu item.
3) Add a timer to a form and code to start, stop, and update a textbox with the elapsed time from the timer.
The document discusses requirements gathering and analysis. It describes how requirements elicitation is difficult due to problems of scope, understanding, and volatility. It emphasizes the importance of requirement gathering and states that requirement analysis may be error-prone. Various techniques for requirements elicitation and analysis are discussed, including interviews, prototypes, quality function deployment, and system modeling. The goals of requirements specification and characteristics of a good SRS are also outlined.
Estimation of resources, cost, and schedule for a software engineering effort requires experience, access to good historical information, and the courage to commit to quantitative predictions when qualitative information is all that exists. Halstead’s Measure & COCOMO Modeol COCOMO II Model of Estimation techniquesused or S/w Developments and Maintenance
This document discusses a user interface class held on August 31st, 2016 at the Govt. Polytechnic(W) in Faridabad. The class covered Visual Basic and its user interface. It concludes by thanking the audience.
This document provides information on various data types, variables, and structures in Visual Basic, including:
- The differences between information and data, with data being information formatted for computer software.
- Common variable types like Integer, String, and Date that can be declared and initialized.
- Mathematical and string methods that can be used to manipulate variable values.
- Control structures like If/Then/Else statements, loops, and Select Case that allow conditional execution of code.
- Collections like arrays and ArrayLists that can store and manage multiple values.
The document covers many fundamental concepts in Visual Basic programming for representing and manipulating data.
This document discusses various topics related to software project management and metrics. It describes the roles and skills needed for a software project manager, including motivation, organization, and innovation. It also discusses characteristics of effective project managers such as problem solving, leadership, achievement, and team building. The document outlines several software metrics that can be collected, such as size-oriented metrics, function-oriented metrics, quality metrics, and defect metrics. It provides details on calculating and using function points and discusses measuring aspects of quality like correctness, maintainability, and integrity.
This document provides an overview of several software development life cycle models:
- The Waterfall Model involves sequential phases from requirements to maintenance without iteration.
- Prototyping allows for experimenting with designs through iterative prototype development and user testing.
- Iterative models like the Spiral Model involve repeating phases of design, implementation, and testing in cycles with user feedback.
The document announces a workshop on Macromedia Flash Professional 8 to be held on September 2nd, 2015 at the Govt. Polytechnic(W) in Sector-8, Faridabad. The workshop will cover how to use Flash to create rich web content and applications, and include demonstrations of specific Flash files like pic1, pic2, trapez._blur, Demen.fla, Spin.fla, Slide.fla, Oscillate.fla, Swipe.fla, Fade.fla, Butterfly.fla and Some_motion.fla. Attendees will learn how Flash provides tools for building interactive content and experiences.
Microsoft Visual Studio 2015 is an integrated development environment that allows developers to create applications from planning through deployment across many platforms. It includes tools for coding, debugging, testing and managing projects. Visual Studio supports languages like C#, C++, JavaScript and Visual Basic. It can be used to create applications for Windows, Android, iOS as well as web and cloud applications. Visual Studio integrates with Microsoft Team services and Team Foundation Server for source control and collaboration.
The document discusses fuzzy logic in watermarking systems. It provides an overview of watermarking, encryption, fuzzy logic, and fuzzification/defuzzification. It then discusses how fuzzy sets can be used to design the front-end of a watermarking system, with fuzzy sets defined for factors like robustness, encryption algorithms, and watermarking methods. The front-end architecture is designed based on fuzzy rules to provide a more user-friendly interface. In conclusion, this approach can make software architecture design easier by incorporating user-defined fuzzy sets and rules.
This document discusses using fuzzy matrix rules for watermarking digital images. It describes how watermarking can be used for authentication and restricting unauthorized usage of images. There are two types of watermarks: visible and invisible. The document then explains how encryption is done using fuzzy matrices. Fuzzy rules are defined on fuzzy sets, which are derived from crisp sets using membership functions. The fuzzy sets assign membership values between 0 and 1 to elements. Various fuzzy compositions are used for encryption and embedding encrypted files in images at different locations to create an invisible watermark. Decryption extracts the encrypted files from the watermarked image. The method provides robust watermarking that is resistant to attacks like compression or noise filtering.
Electric vehicle and photovoltaic advanced roles in enhancing the financial p...IJECEIAES
Climate change's impact on the planet forced the United Nations and governments to promote green energies and electric transportation. The deployments of photovoltaic (PV) and electric vehicle (EV) systems gained stronger momentum due to their numerous advantages over fossil fuel types. The advantages go beyond sustainability to reach financial support and stability. The work in this paper introduces the hybrid system between PV and EV to support industrial and commercial plants. This paper covers the theoretical framework of the proposed hybrid system including the required equation to complete the cost analysis when PV and EV are present. In addition, the proposed design diagram which sets the priorities and requirements of the system is presented. The proposed approach allows setup to advance their power stability, especially during power outages. The presented information supports researchers and plant owners to complete the necessary analysis while promoting the deployment of clean energy. The result of a case study that represents a dairy milk farmer supports the theoretical works and highlights its advanced benefits to existing plants. The short return on investment of the proposed approach supports the paper's novelty approach for the sustainable electrical system. In addition, the proposed system allows for an isolated power setup without the need for a transmission line which enhances the safety of the electrical network
Using recycled concrete aggregates (RCA) for pavements is crucial to achieving sustainability. Implementing RCA for new pavement can minimize carbon footprint, conserve natural resources, reduce harmful emissions, and lower life cycle costs. Compared to natural aggregate (NA), RCA pavement has fewer comprehensive studies and sustainability assessments.
Advanced control scheme of doubly fed induction generator for wind turbine us...IJECEIAES
This paper describes a speed control device for generating electrical energy on an electricity network based on the doubly fed induction generator (DFIG) used for wind power conversion systems. At first, a double-fed induction generator model was constructed. A control law is formulated to govern the flow of energy between the stator of a DFIG and the energy network using three types of controllers: proportional integral (PI), sliding mode controller (SMC) and second order sliding mode controller (SOSMC). Their different results in terms of power reference tracking, reaction to unexpected speed fluctuations, sensitivity to perturbations, and resilience against machine parameter alterations are compared. MATLAB/Simulink was used to conduct the simulations for the preceding study. Multiple simulations have shown very satisfying results, and the investigations demonstrate the efficacy and power-enhancing capabilities of the suggested control system.
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressionsVictor Morales
K8sGPT is a tool that analyzes and diagnoses Kubernetes clusters. This presentation was used to share the requirements and dependencies to deploy K8sGPT in a local environment.
Literature Review Basics and Understanding Reference Management.pptxDr Ramhari Poudyal
Three-day training on academic research focuses on analytical tools at United Technical College, supported by the University Grant Commission, Nepal. 24-26 May 2024
Introduction- e - waste – definition - sources of e-waste– hazardous substances in e-waste - effects of e-waste on environment and human health- need for e-waste management– e-waste handling rules - waste minimization techniques for managing e-waste – recycling of e-waste - disposal treatment methods of e- waste – mechanism of extraction of precious metal from leaching solution-global Scenario of E-waste – E-waste in India- case studies.
Harnessing WebAssembly for Real-time Stateless Streaming PipelinesChristina Lin
Traditionally, dealing with real-time data pipelines has involved significant overhead, even for straightforward tasks like data transformation or masking. However, in this talk, we’ll venture into the dynamic realm of WebAssembly (WASM) and discover how it can revolutionize the creation of stateless streaming pipelines within a Kafka (Redpanda) broker. These pipelines are adept at managing low-latency, high-data-volume scenarios.
International Conference on NLP, Artificial Intelligence, Machine Learning an...gerogepatton
International Conference on NLP, Artificial Intelligence, Machine Learning and Applications (NLAIM 2024) offers a premier global platform for exchanging insights and findings in the theory, methodology, and applications of NLP, Artificial Intelligence, Machine Learning, and their applications. The conference seeks substantial contributions across all key domains of NLP, Artificial Intelligence, Machine Learning, and their practical applications, aiming to foster both theoretical advancements and real-world implementations. With a focus on facilitating collaboration between researchers and practitioners from academia and industry, the conference serves as a nexus for sharing the latest developments in the field.
2. SOFTWARE ENGINEERING
The notion of ‘software engineering’ was first
proposed in 1968 at a conference held to
discuss what was then called the ‘software
crisis’ (Naur and Randell, 1969).
It became clear that individual approaches
to program development did not scale up to
large and complex software systems. These
were unreliable, cost more than expected,
and were delivered late.
2
3. SOFTWARE ENGINEERING
Throughout the 1970s and 1980s, a variety
of new software engineering techniques and
methods were developed, such as structured
programming, information hiding and object-
oriented development.
Tools and standard notations were
developed and are now extensively used.
3
5. SOFTWARE ENGINEER
A software engineer, or programmer, writes
software (or changes existing software) and
compiles software using methods that make it
better quality
5
6. SOFTWARE ENGINEERING
Software engineering can broadly be split into the following steps-
Requirements say what the software should do.
Software design is usually done on paper. It says what the
different parts of the software are, and how they talk to each
other.
After the design phase is done, each component (part) of the
software is coded. Code is what tells the computer exactly what
to do at each step.
Testing is done to see if the components meet the requirements
and that the system as a whole meet the requirements.
Part or all of this process can repeat if bugs are found or new
requirements are needed.
6
7. SOFTWARE ENGINEERS
A software engineer is a person who applies
the principles of software engineering to the
design, development, maintenance, testing,
and evaluation of the software and systems
that make computers or anything containing
software work
7
12. SOFTWARE ENGINEERS
In May 2015, the United States U. S. Bureau of
Labor Statistics published an updated count of
software engineers which has gone up from
760,840 in 2004
to 1,554,960 in 2015;
in the same period there were some 1,610,480
practitioners employed in the U.S. in all other
engineering disciplines combined.
12
13. TOOLS
Software engineers use many tools and practices
in making software. Some of the most common
are:
Flowcharts
UML diagram
Debugging tools
Compiler
Text editor, usually part of an IDE - Integrated
Development Environment
13
14. PRIZES IN SOFTWARE ENGINEERING
The CODiE awards is a yearly award issued
by the Software and Information Industry
Association for excellence in software
development within the software industry.
Jolt Awards are awards in the software
industry.
Stevens Award is a software engineering
award given in memory of Wayne Stevens.
14
15. SOFTWARE ENGINEERING BODY OF
KNOWLEDGE
ETS University and UQAM (Université du
Québec à Montréal) were mandated by IEEE
to develop the Software Engineering Body of
Knowledge (SWEBOK), which has become an
ISO standard describing the body of
knowledge covered by a software engineer.
15
17. SOFTWARE PRODUCT/ENGINEERING
Software is more than just a program code. A
program is an executable code, which serves
some computational purpose. Software is
considered to be collection of executable
programming code, associated libraries and
documentations.
Software, when made for a specific requirement
is called software product.
Engineering on the other hand, is all about
developing products, using well-defined,
scientific principles and methods.
17
19. TYPE OF SOFTWARE PRODUCTS
Generic products
Customized (or bespoke) products
19
20. GENERIC PRODUCTS
Generic products These are stand-alone systems
that are produced by a development organization
and sold on the open market to any customer who
is able to buy them. Examples of this type of
product include software for PCs such as
databases, word processors, drawing packages,
and project-management tools.It also includes so-
called vertical applications designed for some
specific purpose such as library information
systems, accounting systems, or systems for
maintaining dental records.
20
21. CUSTOMIZED PRODUCTS
These are systems that are commissioned by
a particular customer. A software contractor
develops the software especially for that
customer. Examples of this type of software
include control systems for electronic devices,
systems written to support a particular
business process, and air traffic control
systems.
21
22. SOFTWARE ENGINEERING IS IMPORTANT FOR
TWO REASONS:
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.
It is usually cheaper, in the long run, to use
software engineering methods and techniques
for software systems rather than just write the
programs as if it was a personal programming
project. For most types of systems, the majority
of costs are the costs of changing the software
after it has gone into use.
22
23. 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.
23
24. FOUR FUNDAMENTAL 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.
24
25. IEEE
IEEE defines software engineering as:
(1) The application of a systematic,
disciplined, quantifiable approach to the
development, operation, and maintenance of
software; that is, the application of
engineering to software.
(2) The study of approaches as in the above
statement.
25
26. Fritz Bauer, a German computer scientist,
defines software engineering as:
“Software engineering is the establishment and
use of sound engineering principles in order to
obtain economically software that is reliable
and work efficiently on real machines.”
26
27. SOFTWARE EVOLUTION
The process of developing a software product
using software engineering principles and
methods is referred to as Software Evolution.
This includes the initial development of
software and its maintenance and updates, till
desired software product is developed, which
satisfies the expected requirements.
27
29. SOFTWARE EVOLUTION LAWS
Lehman has given laws for software evolution.
He divided the software into three different
categories:
Static-type (S-type)
Practical-type (P-type)
Embedded-type (E-type)
29
30. SOFTWARE EVOLUTION LAWS
Static-type (S-type) - This is a software, which works strictly
according to defined specifications and solutions. The solution
and the method to achieve it, both are immediately understood
before coding. The s-type software is least subjected to changes
hence this is the simplest of all. For example, calculator program
for mathematical computation.
Practical-type (P-type) - This is a software with a collection of
procedures. This is defined by exactly what procedures can do. In
this software, the specifications can be described but the solution
is not obviously instant. For example, gaming software.
Embedded-type (E-type) - This software works closely as the
requirement of real-world environment. This software has a high
degree of evolution as there are various changes in laws, taxes
etc. in the real world situations. For example, Online trading
software.
30
31. SOFTWARE PARADIGMS
Software paradigms refer to the methods and
steps, which are taken while designing the
software. There are many methods proposed
and are implemented. But, we need to see
where in the software engineering concept,
these paradigms stand.
31
33. SOFTWARE DEVELOPMENT PARADIGM
This paradigm is known as software engineering
paradigms; where all the engineering concepts
pertaining to the development of software are
applied. It includes various researches and
requirement gathering which helps the software
product to build.
Requirement gathering
Software design
Programming
33
36. NEED OF SOFTWARE ENGINEERING
The need of software engineering arises
because of higher rate of change in user
requirements and environment on which the
software is working. Following are some of the
needs stated:
36
37. NEED OF SOFTWARE ENGINEERING
Large software - It is easier to build a wall than a house or building,
likewise, as the size of the software becomes large, engineering has to
step to give it a scientific process.
Scalability- If the software process were not based on scientific and
engineering concepts, it would be easier to re-create new software than
to scale an existing one.
Cost- As hardware industry has shown its skills and huge manufacturing
has lower down the price of computer and electronic hardware. But, cost
of the software remains high if proper process is not adapted.
Dynamic Nature- Always growing and adapting nature of the software
hugely depends upon the environment in which the user works. If the
nature of software is always changing, new enhancements need to be
done in the existing one. This is where the software engineering plays a
good role.
Quality Management- Better process of software development provides
better and quality software product.
37
38. CHARACTERISTICS OF GOOD SOFTWARE
This software must satisfy on the following
grounds:
Operational
Transitional
Maintenance
38
43. ISSUES THAT AFFECT SOFTWARE
Heterogeneity
Business and social change
Security and trust
43
44. HETEROGENEITY
Increasingly, systems are required to operate as
distributed systems across networks that include
different types of computer and mobile devices. As
well as running on general-purpose computers,
software may also have to execute on mobile
phones. You often have to integrate new software
with older legacy systems written in different
programming languages. The challenge here is to
develop techniques for building dependable
software that is flexible enough to cope with this
heterogeneity.
44
45. BUSINESS AND SOCIAL CHANGE
Business and society are changing incredibly
quickly
as emerging economies develop and new
technologies become available. They need to be
able to change their existing software and to
rapidly develop new software. Many traditional
software engineering techniques are time
consuming and
delivery of new systems often takes longer than
planned. They need to evolve so that the time
required for software to deliver value to its
customers is reduced. 45
46. SECURITY AND TRUST
As software is intertwined with all aspects of
our lives, it is essential that we can trust that
software. This is especially true for remote
software systems accessed through a web
page or web service interface. We have to
make sure that malicious users cannot attack
our software and that information security is
maintained.
46
47. TYPES OF SOFTWARE APPLICATION
Stand-alone applications
Interactive transaction-based applications
Embedded control systems
Batch processing systems
Entertainment systems
Systems for modeling and simulation
Data collection systems
Systems of systems
47
48. STAND-ALONE APPLICATIONS
These are application systems that run on a
local computer, such as a PC. They include
all necessary functionality and do not need to
be connected to a network. Examples of
such applications are office applications on a
PC, CAD programs, photo manipulation
software, etc.
48
49. INTERACTIVE TRANSACTION-BASED
APPLICATIONS
These are applications that execute on a remote
computer and that are accessed by users from their
own PCs or terminals. Obviously, these include web
applications such as e-commerce applications
where you can interact with a remote system to buy
goods and services.
This class of application also includes business
systems, where a business provides access to its
systems through a web browser or special-purpose
client program and cloud-based services, such as mail
and photo sharing. Interactive applications often
incorporate a large data store that is accessed and
updated ineach transaction.
49
50. EMBEDDED CONTROL SYSTEMS
These are software control systems that
control and manage hardware devices.
Numerically, there are probably more
embedded systems than any other type of
system. Examples of embedded systems
include the software in a mobile (cell) phone,
software that controls anti-lock braking in a car,
and software in a microwave oven to control
the cooking process.
50
51. BATCH PROCESSING SYSTEMS
These are business systems that are designed
to process data in large batches. They process
large numbers of individual inputs to create
corresponding outputs. Examples of batch
systems include periodic billing systems, such
as phone billing systems, and salary payment
systems.
51
52. ENTERTAINMENT SYSTEMS
These are systems that are primarily for
personal use and which are intended to
entertain the user. Most of these systems are
games of one kind or another. The quality of
the user interaction offered is the most
important distinguishing characteristic of
entertainment systems.
52
53. SYSTEMS FOR MODELING AND SIMULATION
These are systems that are developed by
scientists and engineers to model physical
processes or situations, which include many,
separate, interacting objects. These are often
computationally intensive and require high-
performance parallel systems for execution.
53
54. DATA COLLECTION SYSTEMS
These are systems that collect data from their
environment using a set of sensors and send
that data to other systems for processing.
The software has to interact with sensors and
often is installed in a hostile environment such
as inside an engine or in a remote location.
54
55. SYSTEMS OF SYSTEMS
These are systems that are composed of a
number of other software systems. Some of
these may be generic software products, such
as a spreadsheet program. Other systems in
the assembly may be specially written for that
environment.
55
57. CONFIDENTIALITY
You should normally respect the confidentiality
of your employers or clients irrespective of
whether or not a formal confidentiality
agreement has been signed.
57
58. COMPETENCE
You should not misrepresent your level of
competence. You should not knowingly accept
work that is outside your competence.
58
59. INTELLECTUAL PROPERTY RIGHTS
You should be aware of local laws governing
the use of intellectual property such as patents
and copyright. You should be careful to ensure
that the intellectual property of employers and
clients is protected.
59
60. COMPUTER MISUSE
You should not use your 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 or
other malware).
60
61. ACM/IEEE-CS JOINT TASK FORCE ON SOFTWARE ENGINEERING
ETHICS AND PROFESSIONAL PRACTICES
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
61
62. EIGHT PRINCIPLES:
1.PUBLIC — Software engineers shall act consistently with the public
interest.
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.
3. PRODUCT — Software engineers shall ensure that their products and
related
modifications meet the highest professional standards possible.
4. JUDGMENT — Software engineers shall maintain integrity and
independence in their professional judgment.
5. MANAGEMENT — Software engineering managers and leaders shall
subscribe to and promote an ethical approach to the management of
software development and
maintenance.
6. PROFESSION — Software engineers shall advance the integrity and
reputation of
the profession consistent with the public interest.
7. COLLEAGUES — Software engineers shall be fair to and supportive of
their colleagues.
8. SELF — Software engineers shall participate in lifelong learning
regarding the
62
63. WEB-BASED SYSTEMS ARE ENGINEERED
Software reuse has become the dominant
approach for constructing web-based systems.
When building these systems, you think about
how you can assemble them from pre-existing
software components and systems.
It is now generally recognized that it is
impractical to specify all the requirements for
such systems in advance. Web-based systems
should be developed
and delivered incrementally.
63
64. WEB-BASED SYSTEMS ARE ENGINEERED
User interfaces are constrained by the
capabilities of web browsers. Although
technologies such as AJAX (Holdener, 2008)
mean that rich interfaces can be created
within a web browser, these technologies are
still difficult to use. Web forms with local
scripting are more commonly used.
Application interfaces on web-based systems
are often poorer than the specially designed
user interfaces on PC system products.
64