This document introduces software engineering and model-driven development. It discusses that software engineering is about building complex systems while dealing with frequent change and complexity. It aims to help readers understand system modeling using techniques like use case, object, dynamic, and issue modeling. The document also discusses that software engineering involves both technical and managerial knowledge, including modeling methods, UML, design patterns, and software project management. The overall goal is to help readers learn how to produce high-quality software on time while managing complexity and change.
There is no single methodology or approach that can be universally applied to solve all software problems. While past advances like high-level programming languages and time-sharing helped address accidental difficulties, the essential challenges of software development remain. These include complexity, the need for conformity, frequent changes, and the invisible nature of software. Future hopes include improved programming languages, object-oriented programming, artificial intelligence, and iterative development approaches. However, the author argues the fundamental difficulties inherent in software's conceptual nature and complex, changeable requirements cannot be fully solved by any single "silver bullet."
This webinar will provide you with a better understanding of digital engineering and a "digital thread." Your host, Dr. Steven Dam, discusses how tool integration plays a role in the path to digital engineering and what SPEC Innovations is doing with Innoslate to foster that role. Often overlooked are the potential issues with creating a full digital twin. Dr. Dam discusses these issues and how systems engineers can combat them.
Watch the full webinar here: https://youtu.be/PID-1v9ZAMw
This document discusses object oriented programming using C++. It begins by covering topics like principles of OOP, the need for studying the subject, and how C++ overcomes the software crisis. It then discusses the software crisis in more detail, including characteristics of problematic software. The evolution of programming languages from machine code to assembly to high-level languages is examined. Finally, the document introduces C++ and how it facilitates object oriented programming to address issues with procedural programming.
This document discusses object-oriented system design and modeling. It introduces key concepts like object-oriented principles, the software development lifecycle, and UML modeling. It explains that object-oriented concepts are widely used in software solution design across domains. Skilled professionals with a strong foundation in object-oriented design are needed to fulfill increasing requirements. The document then covers stages of software development like analysis, design, and implementation. It also discusses phases of object-oriented development like analysis, design, and self-contained objects and classes.
This document discusses object-oriented analysis and design (OOAD). It introduces the Unified Modeling Language (UML) as a standard notation for capturing objects. Analysis investigates the problem domain to identify objects, while design defines how software objects will collaborate to meet requirements. Key concepts discussed include abstraction, encapsulation, information hiding, and the class-responsibility-collaborator modeling technique. Quality management aims to reduce defects through practices applied throughout the software development process.
The document provides an overview of object-oriented analysis and design (OOAD). It discusses key OOAD concepts like iterative development, the Unified Process, UML notation, thinking in terms of objects and their services/responsibilities. It explains the differences between object-oriented analysis, which focuses on identifying domain objects, and object-oriented design, which defines software objects and how they collaborate. The document uses a dice game example to illustrate domain modeling with objects, interaction diagrams to show message flows, and a class diagram to define class attributes and methods.
This document provides an overview of software engineering concepts. It defines software engineering as the application of engineering principles to software development. It discusses the differences between software programming and software engineering. The roles of a software engineer are also outlined, which include adopting a systematic approach and using appropriate tools and techniques. The document also discusses related disciplines like web engineering, programming languages, and databases. It covers challenges in the field, professional ethics, and how software engineering has changed over time.
There is no single methodology or approach that can be universally applied to solve all software problems. While past advances like high-level programming languages and time-sharing helped address accidental difficulties, the essential challenges of software development remain. These include complexity, the need for conformity, frequent changes, and the invisible nature of software. Future hopes include improved programming languages, object-oriented programming, artificial intelligence, and iterative development approaches. However, the author argues the fundamental difficulties inherent in software's conceptual nature and complex, changeable requirements cannot be fully solved by any single "silver bullet."
This webinar will provide you with a better understanding of digital engineering and a "digital thread." Your host, Dr. Steven Dam, discusses how tool integration plays a role in the path to digital engineering and what SPEC Innovations is doing with Innoslate to foster that role. Often overlooked are the potential issues with creating a full digital twin. Dr. Dam discusses these issues and how systems engineers can combat them.
Watch the full webinar here: https://youtu.be/PID-1v9ZAMw
This document discusses object oriented programming using C++. It begins by covering topics like principles of OOP, the need for studying the subject, and how C++ overcomes the software crisis. It then discusses the software crisis in more detail, including characteristics of problematic software. The evolution of programming languages from machine code to assembly to high-level languages is examined. Finally, the document introduces C++ and how it facilitates object oriented programming to address issues with procedural programming.
This document discusses object-oriented system design and modeling. It introduces key concepts like object-oriented principles, the software development lifecycle, and UML modeling. It explains that object-oriented concepts are widely used in software solution design across domains. Skilled professionals with a strong foundation in object-oriented design are needed to fulfill increasing requirements. The document then covers stages of software development like analysis, design, and implementation. It also discusses phases of object-oriented development like analysis, design, and self-contained objects and classes.
This document discusses object-oriented analysis and design (OOAD). It introduces the Unified Modeling Language (UML) as a standard notation for capturing objects. Analysis investigates the problem domain to identify objects, while design defines how software objects will collaborate to meet requirements. Key concepts discussed include abstraction, encapsulation, information hiding, and the class-responsibility-collaborator modeling technique. Quality management aims to reduce defects through practices applied throughout the software development process.
The document provides an overview of object-oriented analysis and design (OOAD). It discusses key OOAD concepts like iterative development, the Unified Process, UML notation, thinking in terms of objects and their services/responsibilities. It explains the differences between object-oriented analysis, which focuses on identifying domain objects, and object-oriented design, which defines software objects and how they collaborate. The document uses a dice game example to illustrate domain modeling with objects, interaction diagrams to show message flows, and a class diagram to define class attributes and methods.
This document provides an overview of software engineering concepts. It defines software engineering as the application of engineering principles to software development. It discusses the differences between software programming and software engineering. The roles of a software engineer are also outlined, which include adopting a systematic approach and using appropriate tools and techniques. The document also discusses related disciplines like web engineering, programming languages, and databases. It covers challenges in the field, professional ethics, and how software engineering has changed over time.
Here are the key issues with this use case description:
- It does not clearly identify the actors involved
- The flow of events is not clear as it does not specify which actions are performed by the system versus the actors
- It uses passive voice (e.g. "the gate is opened") rather than active voice, so it is unclear who performs the actions
- It does not describe a complete transaction or flow from initiation to completion
Proper identification of actors, use of active voice, and description of a complete flow would result in a better written use case.
The document discusses key concepts in software design. It covers 5 levels of design from the system level down to the individual routine level. It also discusses design challenges and provides heuristics to guide design decisions, such as finding real-world objects, hiding secrets through information hiding and encapsulation, forming consistent abstractions, and identifying areas likely to change. The overall goal is to manage complexity through decomposition and isolation of volatile components.
The document provides an overview of basic software design concepts including the design process, quality factors, techniques, methodologies, approaches, models, modularization, data design, guidelines, verification, and key issues. It discusses that software design is an iterative process of translating requirements into a system blueprint. The design process involves informal to more formal designs. Quality factors, architectures, technologies, styles, and decomposition are considered. Top-down and bottom-up approaches are described. Modularization, data design, and guidelines are covered. Verification ensures the design is valid before implementation. Key issues are areas most prone to mistakes.
COMPUTING AND PROGRAMMING FUNDAMENTAL.pptxSherinRappai1
The document discusses computing, programming, algorithms, and program development life cycle. It provides definitions and explanations of key concepts:
1. A program is a set of instructions that tells a computer how to perform tasks, written in a programming language. Programs range from simple scripts to complex applications.
2. Algorithms are step-by-step procedures for solving problems or performing tasks. They are incorporated into programs.
3. The program development life cycle includes phases like analysis, design, coding, testing, and maintenance to systematically create reliable programs. Diagramming tools like pseudocode, flowcharts, and UML diagrams are used.
COMPUTING AND PROGRAMMING FUNDAMENTAL.pptxSherinRappai
The document discusses computing, programming, algorithms, and program development life cycle. It provides definitions and explanations of key concepts:
1. A program is a set of instructions that tells a computer how to perform tasks, written in a programming language. Programs range from simple scripts to complex applications.
2. Algorithms are step-by-step procedures for solving problems or performing tasks. They are incorporated into programs.
3. The program development life cycle includes phases like analysis, design, coding, testing, and maintenance to systematically create reliable programs. Diagramming tools like pseudocode, flowcharts, and UML diagrams are used in the design process.
This document discusses software engineering and requirements engineering. It defines software engineering as using techniques, methodologies and tools to produce high quality software within budget and deadline constraints. It describes requirements engineering as identifying functional, non-functional and pseudo requirements to develop software. Key activities in requirements engineering include domain analysis, defining the problem scope, and determining what constitutes a requirement.
Explain the system development process and basicsEdwin Lapat
The document discusses the systems development life cycle (SDLC) process and the role of a systems analyst. It provides details on the following:
- The SDLC includes phases such as planning, analysis, design, implementation, testing, deployment, operations, and maintenance.
- A systems analyst guides the SDLC process by defining requirements, prioritizing needs, and ensuring the system meets user and organizational goals.
- The analyst must possess strong interpersonal, analytical, management, and technical skills to effectively carry out their role.
The document provides an overview of object-oriented analysis and design (OOAD). It discusses the objectives of learning OOAD skills like UML design diagrams and mapping design to code. The agenda includes an introduction to OOAD, UML diagrams, implementation, and OO testing. Object-oriented analysis focuses on identifying domain objects and requirements, while object-oriented design defines software objects and their relationships to meet requirements. UML is the standard notation used to capture objects and relationships. The design is then mapped to code through implementation. Testing ensures the software functions as intended.
This chapter introduces software engineering and its objectives. It discusses dealing with complexity through abstraction, decomposition, and hierarchy. Models are used to provide different views of a system, such as functional, object, and dynamic models. Design patterns and frameworks help make software more reusable and reduce complexity. The software lifecycle encompasses activities like requirements, design, implementation, and testing to develop software.
No Silver Bullet - Essence and Accidents of Software EngineeringAditi Abhang
”There is no single development, in either technology or in management technique, that by itself promises even one order of magnitude improvement in productivity, in reliability, in simplicity.”
The document discusses key concepts in software engineering including:
1. The differences between programs and software products. Software products are larger, have multiple users, and follow a more systematic development process.
2. Software is defined as the instructions, data structures, and documentation that make up a computer system. It is developed rather than manufactured.
3. Software engineering aims to apply systematic and quantifiable approaches to software development, operation, and maintenance to produce reliable software economically.
MODULE 1 :
Software Product and Process
Introduction –FAQs About Software Engineering,
Definition Of Software Engineering,
Difference Between Software Engineering And Computer Science,
Difference Between Software Engineering And System Engineering,
Software Process,
Software Process Models,
The Waterfall Model,
Incremental Process Models,
Evolutionary Process Models
Spiral Development, Prototyping,
Component Based Software Engineering ,
The Unified Process, Attributes Of Good Software,
Key Challenges Facing By Software Engineering,
Verification – Validation,
Computer Based System,
Business Process Engineering,
The document discusses object-oriented design and its role in software development. It describes how design builds upon analysis to provide implementation details. Key aspects of object-oriented design include defining a multilayered architecture, specifying subsystems and components, describing classes and objects, and defining communication mechanisms. The input to design comes from artifacts created in analysis like use cases and class models. The output of design serves as a blueprint to guide construction.
for coding and implementation, there is a need of more specific and detailed requirements. The output of this process can directly be used into implementation in programming languages.
This document discusses an introduction to software engineering. It begins by defining what a computer program and software are, noting that software includes computer programs, configuration files, user documentation, support services, and system documentation. The document then discusses some key attributes of software like maintainability, dependability, efficiency, and usability. It notes that software engineering is needed for medium to large projects involving teams to deal with complexity and change. The document discusses why software development is difficult due to changes in requirements and technology, complex problem and solution domains, and difficult management of development processes. It describes how abstraction, decomposition, and hierarchy can be used to deal with complexity. Finally, it discusses different models used in software engineering like object, functional, dynamic
The document provides an overview of a lecture on software design and architecture. It begins with disclaimers about content being used for educational purposes and includes fair use policies. The document then outlines topics to be covered, including introductions to software architecture, the architecture business cycle, how architectures relate to software processes, and characteristics of good and bad architectures.
The document discusses architectural documentation. It covers views, which divide an architecture into manageable representations. Relevant views depend on usage and include module, component-and-connector, and allocation views. Each view has a template for documentation, including a primary presentation, element catalog, context diagram, variability guide, and rationale. Cross-view documentation explains the organization, what the architecture contains through a system overview and element list, and the rationale for design decisions. Architectural documentation aims to educate users, enable communication, and provide a basis for construction and analysis.
How to Make a Field Mandatory in Odoo 17Celine George
In Odoo, making a field required can be done through both Python code and XML views. When you set the required attribute to True in Python code, it makes the field required across all views where it's used. Conversely, when you set the required attribute in XML views, it makes the field required only in the context of that particular view.
Here are the key issues with this use case description:
- It does not clearly identify the actors involved
- The flow of events is not clear as it does not specify which actions are performed by the system versus the actors
- It uses passive voice (e.g. "the gate is opened") rather than active voice, so it is unclear who performs the actions
- It does not describe a complete transaction or flow from initiation to completion
Proper identification of actors, use of active voice, and description of a complete flow would result in a better written use case.
The document discusses key concepts in software design. It covers 5 levels of design from the system level down to the individual routine level. It also discusses design challenges and provides heuristics to guide design decisions, such as finding real-world objects, hiding secrets through information hiding and encapsulation, forming consistent abstractions, and identifying areas likely to change. The overall goal is to manage complexity through decomposition and isolation of volatile components.
The document provides an overview of basic software design concepts including the design process, quality factors, techniques, methodologies, approaches, models, modularization, data design, guidelines, verification, and key issues. It discusses that software design is an iterative process of translating requirements into a system blueprint. The design process involves informal to more formal designs. Quality factors, architectures, technologies, styles, and decomposition are considered. Top-down and bottom-up approaches are described. Modularization, data design, and guidelines are covered. Verification ensures the design is valid before implementation. Key issues are areas most prone to mistakes.
COMPUTING AND PROGRAMMING FUNDAMENTAL.pptxSherinRappai1
The document discusses computing, programming, algorithms, and program development life cycle. It provides definitions and explanations of key concepts:
1. A program is a set of instructions that tells a computer how to perform tasks, written in a programming language. Programs range from simple scripts to complex applications.
2. Algorithms are step-by-step procedures for solving problems or performing tasks. They are incorporated into programs.
3. The program development life cycle includes phases like analysis, design, coding, testing, and maintenance to systematically create reliable programs. Diagramming tools like pseudocode, flowcharts, and UML diagrams are used.
COMPUTING AND PROGRAMMING FUNDAMENTAL.pptxSherinRappai
The document discusses computing, programming, algorithms, and program development life cycle. It provides definitions and explanations of key concepts:
1. A program is a set of instructions that tells a computer how to perform tasks, written in a programming language. Programs range from simple scripts to complex applications.
2. Algorithms are step-by-step procedures for solving problems or performing tasks. They are incorporated into programs.
3. The program development life cycle includes phases like analysis, design, coding, testing, and maintenance to systematically create reliable programs. Diagramming tools like pseudocode, flowcharts, and UML diagrams are used in the design process.
This document discusses software engineering and requirements engineering. It defines software engineering as using techniques, methodologies and tools to produce high quality software within budget and deadline constraints. It describes requirements engineering as identifying functional, non-functional and pseudo requirements to develop software. Key activities in requirements engineering include domain analysis, defining the problem scope, and determining what constitutes a requirement.
Explain the system development process and basicsEdwin Lapat
The document discusses the systems development life cycle (SDLC) process and the role of a systems analyst. It provides details on the following:
- The SDLC includes phases such as planning, analysis, design, implementation, testing, deployment, operations, and maintenance.
- A systems analyst guides the SDLC process by defining requirements, prioritizing needs, and ensuring the system meets user and organizational goals.
- The analyst must possess strong interpersonal, analytical, management, and technical skills to effectively carry out their role.
The document provides an overview of object-oriented analysis and design (OOAD). It discusses the objectives of learning OOAD skills like UML design diagrams and mapping design to code. The agenda includes an introduction to OOAD, UML diagrams, implementation, and OO testing. Object-oriented analysis focuses on identifying domain objects and requirements, while object-oriented design defines software objects and their relationships to meet requirements. UML is the standard notation used to capture objects and relationships. The design is then mapped to code through implementation. Testing ensures the software functions as intended.
This chapter introduces software engineering and its objectives. It discusses dealing with complexity through abstraction, decomposition, and hierarchy. Models are used to provide different views of a system, such as functional, object, and dynamic models. Design patterns and frameworks help make software more reusable and reduce complexity. The software lifecycle encompasses activities like requirements, design, implementation, and testing to develop software.
No Silver Bullet - Essence and Accidents of Software EngineeringAditi Abhang
”There is no single development, in either technology or in management technique, that by itself promises even one order of magnitude improvement in productivity, in reliability, in simplicity.”
The document discusses key concepts in software engineering including:
1. The differences between programs and software products. Software products are larger, have multiple users, and follow a more systematic development process.
2. Software is defined as the instructions, data structures, and documentation that make up a computer system. It is developed rather than manufactured.
3. Software engineering aims to apply systematic and quantifiable approaches to software development, operation, and maintenance to produce reliable software economically.
MODULE 1 :
Software Product and Process
Introduction –FAQs About Software Engineering,
Definition Of Software Engineering,
Difference Between Software Engineering And Computer Science,
Difference Between Software Engineering And System Engineering,
Software Process,
Software Process Models,
The Waterfall Model,
Incremental Process Models,
Evolutionary Process Models
Spiral Development, Prototyping,
Component Based Software Engineering ,
The Unified Process, Attributes Of Good Software,
Key Challenges Facing By Software Engineering,
Verification – Validation,
Computer Based System,
Business Process Engineering,
The document discusses object-oriented design and its role in software development. It describes how design builds upon analysis to provide implementation details. Key aspects of object-oriented design include defining a multilayered architecture, specifying subsystems and components, describing classes and objects, and defining communication mechanisms. The input to design comes from artifacts created in analysis like use cases and class models. The output of design serves as a blueprint to guide construction.
for coding and implementation, there is a need of more specific and detailed requirements. The output of this process can directly be used into implementation in programming languages.
This document discusses an introduction to software engineering. It begins by defining what a computer program and software are, noting that software includes computer programs, configuration files, user documentation, support services, and system documentation. The document then discusses some key attributes of software like maintainability, dependability, efficiency, and usability. It notes that software engineering is needed for medium to large projects involving teams to deal with complexity and change. The document discusses why software development is difficult due to changes in requirements and technology, complex problem and solution domains, and difficult management of development processes. It describes how abstraction, decomposition, and hierarchy can be used to deal with complexity. Finally, it discusses different models used in software engineering like object, functional, dynamic
The document provides an overview of a lecture on software design and architecture. It begins with disclaimers about content being used for educational purposes and includes fair use policies. The document then outlines topics to be covered, including introductions to software architecture, the architecture business cycle, how architectures relate to software processes, and characteristics of good and bad architectures.
The document discusses architectural documentation. It covers views, which divide an architecture into manageable representations. Relevant views depend on usage and include module, component-and-connector, and allocation views. Each view has a template for documentation, including a primary presentation, element catalog, context diagram, variability guide, and rationale. Cross-view documentation explains the organization, what the architecture contains through a system overview and element list, and the rationale for design decisions. Architectural documentation aims to educate users, enable communication, and provide a basis for construction and analysis.
How to Make a Field Mandatory in Odoo 17Celine George
In Odoo, making a field required can be done through both Python code and XML views. When you set the required attribute to True in Python code, it makes the field required across all views where it's used. Conversely, when you set the required attribute in XML views, it makes the field required only in the context of that particular view.
Beyond Degrees - Empowering the Workforce in the Context of Skills-First.pptxEduSkills OECD
Iván Bornacelly, Policy Analyst at the OECD Centre for Skills, OECD, presents at the webinar 'Tackling job market gaps with a skills-first approach' on 12 June 2024
Philippine Edukasyong Pantahanan at Pangkabuhayan (EPP) CurriculumMJDuyan
(𝐓𝐋𝐄 𝟏𝟎𝟎) (𝐋𝐞𝐬𝐬𝐨𝐧 𝟏)-𝐏𝐫𝐞𝐥𝐢𝐦𝐬
𝐃𝐢𝐬𝐜𝐮𝐬𝐬 𝐭𝐡𝐞 𝐄𝐏𝐏 𝐂𝐮𝐫𝐫𝐢𝐜𝐮𝐥𝐮𝐦 𝐢𝐧 𝐭𝐡𝐞 𝐏𝐡𝐢𝐥𝐢𝐩𝐩𝐢𝐧𝐞𝐬:
- Understand the goals and objectives of the Edukasyong Pantahanan at Pangkabuhayan (EPP) curriculum, recognizing its importance in fostering practical life skills and values among students. Students will also be able to identify the key components and subjects covered, such as agriculture, home economics, industrial arts, and information and communication technology.
𝐄𝐱𝐩𝐥𝐚𝐢𝐧 𝐭𝐡𝐞 𝐍𝐚𝐭𝐮𝐫𝐞 𝐚𝐧𝐝 𝐒𝐜𝐨𝐩𝐞 𝐨𝐟 𝐚𝐧 𝐄𝐧𝐭𝐫𝐞𝐩𝐫𝐞𝐧𝐞𝐮𝐫:
-Define entrepreneurship, distinguishing it from general business activities by emphasizing its focus on innovation, risk-taking, and value creation. Students will describe the characteristics and traits of successful entrepreneurs, including their roles and responsibilities, and discuss the broader economic and social impacts of entrepreneurial activities on both local and global scales.
Temple of Asclepius in Thrace. Excavation resultsKrassimira Luka
The temple and the sanctuary around were dedicated to Asklepios Zmidrenus. This name has been known since 1875 when an inscription dedicated to him was discovered in Rome. The inscription is dated in 227 AD and was left by soldiers originating from the city of Philippopolis (modern Plovdiv).
Strategies for Effective Upskilling is a presentation by Chinwendu Peace in a Your Skill Boost Masterclass organisation by the Excellence Foundation for South Sudan on 08th and 09th June 2024 from 1 PM to 3 PM on each day.
বাংলাদেশের অর্থনৈতিক সমীক্ষা ২০২৪ [Bangladesh Economic Review 2024 Bangla.pdf] কম্পিউটার , ট্যাব ও স্মার্ট ফোন ভার্সন সহ সম্পূর্ণ বাংলা ই-বুক বা pdf বই " সুচিপত্র ...বুকমার্ক মেনু 🔖 ও হাইপার লিংক মেনু 📝👆 যুক্ত ..
আমাদের সবার জন্য খুব খুব গুরুত্বপূর্ণ একটি বই ..বিসিএস, ব্যাংক, ইউনিভার্সিটি ভর্তি ও যে কোন প্রতিযোগিতা মূলক পরীক্ষার জন্য এর খুব ইম্পরট্যান্ট একটি বিষয় ...তাছাড়া বাংলাদেশের সাম্প্রতিক যে কোন ডাটা বা তথ্য এই বইতে পাবেন ...
তাই একজন নাগরিক হিসাবে এই তথ্য গুলো আপনার জানা প্রয়োজন ...।
বিসিএস ও ব্যাংক এর লিখিত পরীক্ষা ...+এছাড়া মাধ্যমিক ও উচ্চমাধ্যমিকের স্টুডেন্টদের জন্য অনেক কাজে আসবে ...
Chapter wise All Notes of First year Basic Civil Engineering.pptxDenish Jangid
Chapter wise All Notes of First year Basic Civil Engineering
Syllabus
Chapter-1
Introduction to objective, scope and outcome the subject
Chapter 2
Introduction: Scope and Specialization of Civil Engineering, Role of civil Engineer in Society, Impact of infrastructural development on economy of country.
Chapter 3
Surveying: Object Principles & Types of Surveying; Site Plans, Plans & Maps; Scales & Unit of different Measurements.
Linear Measurements: Instruments used. Linear Measurement by Tape, Ranging out Survey Lines and overcoming Obstructions; Measurements on sloping ground; Tape corrections, conventional symbols. Angular Measurements: Instruments used; Introduction to Compass Surveying, Bearings and Longitude & Latitude of a Line, Introduction to total station.
Levelling: Instrument used Object of levelling, Methods of levelling in brief, and Contour maps.
Chapter 4
Buildings: Selection of site for Buildings, Layout of Building Plan, Types of buildings, Plinth area, carpet area, floor space index, Introduction to building byelaws, concept of sun light & ventilation. Components of Buildings & their functions, Basic concept of R.C.C., Introduction to types of foundation
Chapter 5
Transportation: Introduction to Transportation Engineering; Traffic and Road Safety: Types and Characteristics of Various Modes of Transportation; Various Road Traffic Signs, Causes of Accidents and Road Safety Measures.
Chapter 6
Environmental Engineering: Environmental Pollution, Environmental Acts and Regulations, Functional Concepts of Ecology, Basics of Species, Biodiversity, Ecosystem, Hydrological Cycle; Chemical Cycles: Carbon, Nitrogen & Phosphorus; Energy Flow in Ecosystems.
Water Pollution: Water Quality standards, Introduction to Treatment & Disposal of Waste Water. Reuse and Saving of Water, Rain Water Harvesting. Solid Waste Management: Classification of Solid Waste, Collection, Transportation and Disposal of Solid. Recycling of Solid Waste: Energy Recovery, Sanitary Landfill, On-Site Sanitation. Air & Noise Pollution: Primary and Secondary air pollutants, Harmful effects of Air Pollution, Control of Air Pollution. . Noise Pollution Harmful Effects of noise pollution, control of noise pollution, Global warming & Climate Change, Ozone depletion, Greenhouse effect
Text Books:
1. Palancharmy, Basic Civil Engineering, McGraw Hill publishers.
2. Satheesh Gopi, Basic Civil Engineering, Pearson Publishers.
3. Ketki Rangwala Dalal, Essentials of Civil Engineering, Charotar Publishing House.
4. BCP, Surveying volume 1
2. Requirements for this Class
❖ You are proficient in a programming language,
but you have no or limited experience in analysis
or design of a system
❖ You want to learn more about the technical
aspects of Model-Driven Development in analysis
and design of complex software systems
3. Objectives of the Class
❖ Appreciate Software Engineering:
▪ Build complex software systems in the context of frequent
change
❖ Understand how to
▪ produce a high quality software system within time
▪ while dealing with complexity and change
❖ Acquire technical knowledge (main emphasis)
❖ Acquire managerial knowledge
4. Focus: Acquire Technical Knowledge
❖ Understand System Modeling
❖ Learn UML (Unified Modeling Language)
❖ Learn different modeling methods:
• Use Case modeling
• Object Modeling
• Dynamic Modeling
• Issue Modeling
❖ Learn how to use Language and Tool:
▪ OCL (Object Constraint Language)
• Tool: USE
❖ Model-Driven Software Engineering
▪ Learn how to use Design Patterns and Frameworks
5. Use Case Modeling – Sample UML Diagram
http://conceptdraw.com/en/products/cd5/ap_uml.php
8. ❖ Learn the basics of software project management
❖ Understand how to manage with a software
lifecycle
❖ Be able to capture software development
knowledge (Rationale Management)
❖ Manage change: Configuration Management
❖ Learn the basic methodologies
▪ Traditional software development
▪ Model-Driven methods.
Acquire Managerial Knowledge
10. Software Production has a Poor Track Record
Example: Space Shuttle Software
❖ Cost: $10 Billion, millions of dollars more than
planned
❖ Time: 3 years late
❖ Quality: First launch of Columbia was cancelled
because of a synchronization problem with the
Shuttle's 5 onboard computers.
▪ Error was traced back to a change made 2 years earlier
when a programmer changed a delay factor in an interrupt
handler from 50 to 80 milliseconds.
▪ The likelihood of the error was small enough, that the
error caused no harm during thousands of hours of testing.
❖ Substantial errors still exist.
▪ Astronauts are supplied with a book of known software
problems "Program Notes and Waivers".
11. Quality of today’s software….
❖ The average software product released on the market is
not error free.
13. Software Engineering is more than writing code
❖ Problem solving
▪ Creating a solution
▪ Engineering a system based on the solution
❖ Modeling
❖ Knowledge acquisition
❖ Rationale management
14. Software Engineering: A Problem Solving
Activity
For problem solving we use
❖ Techniques (methods):
▪ Formal procedures for producing results using some well-
defined notation
❖ Methodologies:
▪ Collection of techniques applied across software
development and unified by a philosophical approach
❖ Tools:
▪ Instrument or automated systems to accomplish a
technique
15. 20
Software Engineering: Definition
Software Engineering is a collection of techniques,
methodologies and tools that help
with the production of
❖ a high quality software system
❖ with a given budget
❖ before a given deadline
while change occurs.
16. Scientist vs Engineer
❖ Computer Scientist
▪ Proves theorems about algorithms, designs languages, defines
knowledge representation schemes
▪ Has infinite time…
❖ Engineer
▪ Develops a solution for an application-specific problem for a
client
▪ Uses computers & languages, tools, techniques and methods
❖ Software Engineer
▪ Works in multiple application domains
▪ Has only 3 months...
▪ …while changes occurs in requirements and available
technology
17. Factors affecting the quality of a software
system
❖ Complexity:
▪ The system is so complex that no single programmer can
understand it anymore
▪ The introduction of one bug fix causes another bug
❖ Change:
▪ The “Entropy” of a software system increases with each
change: Each implemented change erodes the structure of
the system which makes the next change even more
expensive (“Second Law of Software Dynamics”).
▪ As time goes on, the cost to implement a change will be too
high, and the system will then be unable to support its
intended task. This is true of all systems, independent of
their application domain or technological base.
18. Why are software systems so complex?
❖ The problem domain is difficult
❖ The development process is very difficult to
manage
❖ Software offers extreme flexibility
❖ Software is a discrete system
20. 1. Abstraction
❖ Inherent human limitation to deal with
complexity
▪ The 7 +- 2 phenomena
❖ Chunking: Group collection of objects
❖ Ignore unessential details: => Models
21. Models are used to provide abstractions
❖ System Model:
▪ Object Model: What is the structure of the system? What
are the objects and how are they related?
▪ Functional model: What are the functions of the system?
How is data flowing through the system?
▪ Dynamic model: How does the system react to external
events? How is the event flow in the system ?
❖ Task Model:
▪ PERT Chart: What are the dependencies between the
tasks?
▪ Schedule: How can this be done within the time limit?
▪ Org Chart: What are the roles in the project or
organization?
❖ Issues Model:
▪ What are the open and closed issues? What constraints
were posed by the client? What resolutions were made?
22. Interdependencies of the Models
System Model (Structure,
Functionality,
Dynamic Behavior)
Issue Model
(Proposals,
Arguments,
Resolutions)
Task Model
(Organization,
Activities
Schedule)
23. Model-based Software Engineering:
Code is a derivation of object model
Problem Statement: A stock exchange lists many companies.
Each company is identified by a ticker symbol
public class StockExchange
{
public Vector m_Company = new Vector();
};
public class Company
{
public int m_tickerSymbol
public Vector m_StockExchange = new Vector();
};
Implementation phase results in code
Analysis phase results in cbject model (UML Class Diagram):
StockExchange Company
tickerSymbol
Lists
*
*
A good software engineer writes as little code as possible
24. ❖ A technique used to master complexity (“divide
and conquer”)
❖ Functional decomposition
▪ The system is decomposed into modules
▪ Each module is a major processing step (function) in the
application domain
▪ Modules can be decomposed into smaller modules
❖ Object-oriented decomposition
▪ The system is decomposed into classes (“objects”)
▪ Each class is a major abstraction in the application domain
▪ Classes can be decomposed into smaller classes
Which decomposition is the right one?
2. Decomposition
25. 3. Hierarchy
❖ We got abstractions and decomposition
▪ This leads us to chunks (classes, objects) which we view
with object model
❖ Another way to deal with complexity is to provide
simple relationships between the chunks
❖ One of the most important relationships is
hierarchy
❖ 2 important hierarchies
▪ "Part of" hierarchy
▪ "Is-kind-of" hierarchy
28. Software Lifecycle Activities
Subsystems
Structured By
class...
class...
class...
Source
Code
Implemented
By
Solution
Domain
Objects
Realized By
System
Design
Object
Design
Implemen-
tation
Testing
Application
Domain
Objects
Expressed in
Terms Of
Test
Cases
?
Verified
By
class....?
Requirements
Elicitation
Use Case
Model
Analysis
...and their models
29. Summary
❖ Software engineering is a problem solving activity
▪ Developing quality software for a complex problem within
a limited time while things are changing
❖ There are many ways to deal with complexity
▪ Modeling, decomposition, abstraction, hierarchy
▪ Issue models: Show the negotiation aspects
▪ System models: Show the technical aspects
▪ Task models: Show the project management aspects
▪ Use Patterns: Reduce complexity even further
❖ Many ways to deal with change
▪ Tailor the software lifecycle to deal with changing project
conditions
▪ Use a nonlinear software lifecycle to deal with changing
requirements or changing technology
▪ Provide configuration management to deal with changing
entities