Introduction to software engineering Flashcards
learn Software engineering basics
What is Software Engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. This module provides an overview of the importance of software engineering, its evolution with time, and the difference between the exploratory program development approach and the software engineering approach.
When do we consider software application
successful?
- Development completed
- It is useful
- It is usable
- It is used
- Cost effective and maintainable.
The Nature of Software
SW vs. HW
- Software is developed or engineered not
manufactured - Software is intangible
- Hard to understand development effort
- Software does not “wear out”
- Software is complex
- Software is flexible
- Reusability of components.
What is Software crisis
Software products:
* Fail to meet user requirements.
* Frequently crash.
* Expensive.
* Difficult to alter, debug, and enhance.
* Often delivered late.
* Use resources non-optimally
Factors
Contributing to
the Software
Crisis
Software requirements do not adequately describe user needs
or customer expectations.
Lack of adequate training in software engineering.
Project planning is frequently unrealistic, incomplete, or
ignored.
Project cost and schedule estimates are underestimated.
Software is intangible
Increasing skill shortage
Standards are not used or documented.
Neglecting the initial phases in the software engineering process
often leads to costly consequences as
- Having to restructure code
- High maintenance costs due to due to poorly structured code
- Producing a product unacceptable to end-users
- Producing bugy or unreliable code
- Having difficulty integrating separate pieces of the system
- Difficult project management
- Budget and time overrun
Types of Software
System software
Ex: Operating systems, drivers
Application software
Web browsers, Media players,
payroll software,
Embedded software
Home appliances, smartphones,
Flight control systems
Essential Skills for Software Engineers
- Programming languages
- Problem-solving and Critical thinking
- Communication and Collaborations
- Project Management
- Continuous Learning and adaptability
Who are Stakeholders in Software
Engineering?
- Users
* Those who use the software - Customers
* Those who pay for the software - Software developers
- Development Managers
All four roles can be fulfilled by the
same person
What are Software Qualities?
- Usability
- Users can learn it and fast and get their job done
easily - Efficiency
- It doesn’t waste resources such as CPU time and
memory - Reliability
- It does what it is required to do without failing i.e.
frequency of occurrence of software problems
What is Wrong with the Exploratory Style? Cont…
- Besides the exponential growth of effort, cost,
and time with problem size: - Exploratory style usually results in unmaintainable
code. - It becomes very difficult to use the exploratory style
in a team development environment.
Exploratory software development style vs. modern
software engineering practice
- Exploratory development style is based on error correction
while the software engineering principles are based on error
prevention - Exploratory design coding was considered synonymous with
software development, whereas in the modern software
development style coding is a small part of the overall
development - A lot of attention is paid to requirements specification in
modern software engineering - Distinct design phase where standard design techniques are
employed - Periodic reviews are carried out during all stages of the
development process. - Testing techniques are used
- Better visibility of design and code.
- Production of good quality and consistent documents
- Projects are first thoroughly planned
- Several metrics are used to help in software project
management and software quality assurance
Emergence of Software Engineering
- 1950s-1960s: Early Days and Software Crisis
- Programs were being written in assembly language.
- Every programmer developed his own style of writing programs:
- According to his intuition (exploratory programming).
- 1960s-1970s: Structured Programming and Software
Engineering Emergence - Structured programming principles, such as modularization and control flow,
were introduced to improve software quality. - The idea of systematic software development gained traction, leading to the
emergence of software engineering as a formal discipline. - In 1968, NATO held a conference on software engineering, helping to establish
foundational principles.
Emergence of Software Engineering
- 1970s-1980s: Waterfall Model and Early Methodologies
- The Waterfall model, a linear approach to software development, became popular. It involved
sequential phases like requirements, design, implementation, testing, and maintenance. - Methods like the Structured Systems Analysis and Design Method (SSADM),
and Yourdon’s methodologies became popular. - 1980s-2000s: Object-Oriented Programming and Agile Movement
- Object-oriented programming (OOP) gained prominence, encouraging modular design and reusable
code.
Emergence of Software Engineering
- The Agile movement emerged in the early 2000s as a response to rigid methodologies. Agile
methodologies like Scrum and Extreme Programming (XP) prioritized collaboration, flexibility, and
incremental development.
49 - 2000s-2010: Rapid Technological Advancements
- The growth of the internet and the rise of e-commerce led to increased demand for web
applications and software. - DevOps practices emerged, emphasizing collaboration between development and operations
teams to streamline software delivery. - 2010s-Present: Cloud Computing, Continuous Integration, Agile
and DevOps - Cloud computing revolutionized software deployment and scalability.
- Continuous Integration/Continuous Deployment (CI/CD) became integral to software
development, enabling rapid and automated testing and deployment. - DevOps practices continued to evolve, focusing on cultural changes, automation, and
collaboration.
50