software
____ the key driver that enables digital systems in a global scale.
False
True/False:
Software quality must not undergo validation and verification during the software development life cycle
software engineering addresses more practical problems needed for designing reliable, secure, and high-quality software.
If Computer science spans both theoretical and applied disciplines, what would software engineering be?
Information technology and information systems
__________________ focus on organizational needs and uses for computing from infrastructural and organizational process perspectives, respectively
System Engineering
__________________ is an older discipline focused on more complex computer-based systems that involves hardware, software, policies, users, and its environment which requires expertise across other engineering disciplines.
True
True/False:
The majority of global operations now heavily depend on the interconnected complex computer-based systems to enable the industry, commerce, government, medicine, education, and the society at large to operate optimally
Software
____________ encompasses the data and data structures that enable effective information manipulation, as well as the documentations detailing its design, development, operation, and maintenance. It also includes configuration files needed to set it up and operate successfully.
Software
____________ it is a set of programs that enables computers to perform a specific task
Human computers
Mathematicians and employees who worked in the early theoretical field of computing were called what?
software crisis
This software aging and chronic disease is the gradual decline of software performance and reliability overtime such as memory leaks, crashes, and data corruption due to the accumulation of inefficiencies, bugs, and errors was caused of?
Software crisis
due to the initial lack of skilled engineers and the lack of competence and experience of the involved engineers during the software development process
1968 during a NATO conference
When was the term “Software Engineering” used?
1. Hardware advances outpace software
2. The demand outpaces development
3. The demand for quality and reliability
4. Inadequate resources and poor design
What are the Software-Related problems?
Stakeholders
sets of people having interest or role in software development project including those with the highest control in the overall direction of the project but may not directly contribute to the management of the project and development of the software
Stakeholders
sets of people having interest or role in software development project including those with the highest control in the overall direction of the project but may not directly contribute to the management of the project and development of the software
Project Team
Is an ad hoc team of experts from various organizational units authorized and empowered to lead and manage the software development project
Customers
are a group of people or an enterprise organization that buys or subscribes to access or use a software from a vendor, representing the target market
Clients
are businesses or organization that through a representative, who acts as a bridge between a software contractor, can legally control the software requirements.
End-users
set of people that directly interacts with a software bought by an enterprise customer or commission by a client
Software product involves one-time purchase or a perpetual license while software service is a software product delivered through the internet and the access is contingent on a subscription model
What is the difference between software product and software service?
Software Vendor
Sells a software product to a customer.
Generic Software
Software vendors develop and sell this type of application or system to a certain market segment, which could be an enterprise customer or direct end-users. The long term monetization of this type is heavily based on wide-scale adoption or through in-app purchases.
Customized or bespoke software
Specific clients commission a software contractor to develop this type of application or system for a particular purpose.
Quality, Safety, and Security
What are the unwritten etiquette or rules in the software industry?
Quality
This etiquette means meeting or exceeding the client’s expectations.
Safety
This etiquette means not increasing the risks of injury or fatality with the use of a device
Security
This etiquette means that the software should not function as a means for malicious or criminal intents and leakage of personal information that can directly or indirectly damage or lead to damage to the users.
System Software
serves as the manager of a computer system and enables the execution of other applications, typically built for general-purpose computers and microprocessors.
Embedded software
also known as firmware, is responsible for initializing and controlling specific hardware components. It also acts as a interaction layer between hardware and the higher-level software.
Application Software
refers to a wide range of software used for specific tasks such as entertainment or productivity. This software comes as a GUI-based app, a website, or a command-line tool, designed for a specific type of end-user.
Business Software
a sub-type of applications designed to assist with daily operations in business organizations, including management, human resources, accounting, inventory, sales, and customer relationship management
Scientific Software
specialized application developed for researchers such as in the fields of engineering, physics, chemistry, and biology, to be able to perform complex calculations, simulations, predictions, or data analysis with high accuracy and precision.
Artificial Intelligence
a complex and hybrid system that employs machine learning and other deep learning that aims to mimic or even outperform human intelligence and efficiency for various tasks.
Software development
refers to the entire process from the initial ideation to the maintenance of a software. It involves skills on specific programming languages, libraries, frameworks, and tools depending on the specific project requirements.
it is the “application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.”
What is software engineering according to IEEE (1990)?
Sound Engineering principles
It means that we will also borrow and apply knowledge found on related fields such as Project Management which we will cover in-depth later on.
Economical Software
Businesses operate for profits, which means software contractors and vendors apply “sound engineering principles” to increase profitability while also satisfying the needs of their client.
Efficiently works on real machines
This includes security, performance, stress, and reliability testing to ensure it works as intended when subjected to extreme stress or usage.
software development with carpentry, then software engineering is the same as civil engineering. In software engineering, we build high-quality projects that satisfy clients, strongly withstand risks, and drive long-term sustainability as a software contractor or vendor.
Compare software engineering to software development
Tools, Methods, Process, A quality focus
What are the software engineering layers?
Computer science
Spans both theoretical and applied disciplines,
Software engineering
Addresses on practical problems needed for designing reliable, secure, and high-quality software
Information Technology
Focus on organizational needs
Information System
Uses for computing for infrastructural and organizational process perspectives
Customer Requirements
Requirements Model(Prototype)
Design
Language Form
Machine Executable Code
What are the Five software components?
Public - act consistently with public interest
Client and Employer - act in a manner that is in the best interests of their client and employer
Product - Ensure that their products and related modifications meet the highest professional standards possible
Judgment - maintain integrity and independence
Management - Managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance
Profession - shall advance the integrity and reputation
Colleagues - Shall be fair to and supportive of their colleagues
Self - shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of profession.
What are the 8 principles under the Software Engineering Code of EThics and Professional Practice?
Agile Methodology
Is a methodology where the output of each iteration is already shippable product. This paradigm is under iterative-incremental development.
Scrum
Aims for timeboxing, communication and transparency. A method in a form of agile designed for project management in mind
Extreme Programming
Agile-based methodology focused on Test-Driven Development, Daily Builds, and Continuous Integration used together with scrum.
Lean Methodology
Production methodology used by Toyota and used together with Scrum
Structural Methodology
A methodology that focuses on business activities following traditional principles of abstraction, structurization, stepwise refinement, and modularization.
Information Engineering methodology
It is a methodology where it is data-focused and with strong understanding in business systems and information technology. Emphasis on data and data structures
Object-oriented methodology
A methodology where it focuses on the identification of objects, classes, and its relationships through a design model. Its deliverables include conceptual and UML diagrams.
V model
It is a model that emphasizes on verification and validation, it ensures that the product meets requirements and functions correctly.
Evolutionary model
This model introduces improved or added features through modified requirements, it is similar to an iterative model but with each iteration is a complete software product.
Iterative/Incremental model
This model focuses on an initial implementation and adding a broader feature set and complexity on each iteration until the final system is completed.
Spiral model
This model is a combination of sequential and prototype models followed in a more defined manner, …, and repetition or the whole process until the client is satisfied
Waterfall model
A classic lifecycle model where software development is done sequentially. This simplicity makes it applicable to small projects conducted by those outside the computing discipline
Prototype model
This model is a trial-and-error approach between the developer and the client, it is useful when the requirements are not yet known in detail. It is an iterative rebuilding until the client expresses satisfaction
To help software engineers to obtain highly-quality software
What is the main objective of the software engineering layers?
A quality focus, Process, Methods, Tools
What are the software engineering layers from most-to-least importance?
False. “Quality in Mind”
True/False:
Deliver software development projects with “safety in mind” and a product that satisfies the need of its customers
False
True/False:
Hardware is the key driver that enables digital systems in a global scale.
True
True/False:
Software quality must undergo validation and verification during the software development life cycle.
True
True/False:
In the 1940s, the hardware defined the software, primarily focused on scientific, military, and defense endeavors to manage supply chains, etc.
True
True/False
In pre-1960s, punch cards and paper tapes as I/O was developed, where computers perform batch operation and processing only.
False
True/False:
In pre-1960s, during the early days of computing, software engineering is already a thing!
low-code and AI-driven
Modern software development trends had seen _____ and _____ applications with shared-source and customizable licenses.
1940s - hardware defined software, used mainly for wars and logistics operations.
Pre-1960s - used punch cards as I/O which required deep knowledge and understanding of machine language. Here, computer performs batch operation and processing only.
1960s - Wide adoption of mainframe computers. Early iterations of computer are expensive and bulky. Software crisis is prevalent because of experts working without formal training
1968 - Software engineering term was first used during NATO conference
1970s - commercialization of early microprocessors led to a boom of small and affordable computers used in business
1972 onwards - the progress in the field began to help solve the software crisis by formalizing practices and developing standards
1980s - personal computers with MS-DOS and early GUIs gained
1990s - Software architecture shifted towards client-server model
2000s - internet became the major platform for software delivery and end-user access
2010s - rise of modern smartphones and tablets.
2020s - major industry players invested in cloud computing infrastructure leading to cloud-native and serverless applications
Plot the timeline of the history of software
Institute of Electrical and Electronics Engineers
What is IEEE?
IEEE or Institute of Electrical and Electronics Engineers
is a global, professional, technical organization dedicated to progressing the technology
ACM/IEEE-CS
Developed a more specific software engineering code of ethics and professional practice
Association for Computing Machinery
What does ACM stand for?
Managerial and soft skills
What are some of the future demands of the industry?
True
True/False:
the applications development contributed up to 28% to the overall software revenue in 2016.