0% found this document useful (0 votes)
6 views4 pages

Software Engineering Principles and Methods

The document discusses software engineering and the software crisis. It defines software engineering as establishing sound engineering principles to create reliable and efficient software. It also discusses the goals of software engineering like maintainability and dependability. Principles like modularity and abstraction are covered. Methods like modeling, data-driven approaches, and object-oriented methods are summarized. Finally, process models like waterfall, incremental, and iterative development are briefly outlined.

Uploaded by

Kakz Karthik
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views4 pages

Software Engineering Principles and Methods

The document discusses software engineering and the software crisis. It defines software engineering as establishing sound engineering principles to create reliable and efficient software. It also discusses the goals of software engineering like maintainability and dependability. Principles like modularity and abstraction are covered. Methods like modeling, data-driven approaches, and object-oriented methods are summarized. Finally, process models like waterfall, incremental, and iterative development are briefly outlined.

Uploaded by

Kakz Karthik
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Review of Software

Engineering

The Software Crisis


Software Engineering
Goals of software engineering
Principles of software engineering
Methods
Process Models
1

The Software Crisis


Symptoms:

Unmanageable.
Over budget.
Late.
Poor quality.

Causes:

One word: Complexity.


2

Software Engineering (1of2)


Definition: The establishment and use
of sound engineering principles in
order to obtain economically software
that is reliable and works efficiently
on real machines. (Fritz Bauer, at
theFirst NATO Conference on
Software Engineering, 1969)
3

Software Engineering (2of2)


History:
Advances in hardware capability have enabled
increasingly complex software.
Our ability to intellectually manage this
complexity has always lagged the advances in
software complexity.
We continually require better tools.
CASE (Computer-Assisted Software Engineering)
tools.
Intellectual tools -- Software engineering techniques.
4

Goals of Software
Engineering
Maintainability the ability to easily make
changes, enhancements, or improvements.
Dependability the ability to rely on the
software to function properly when
needed.
Efficiency the ability for software to use
computing resources effectively (mainly
space and time).
Usability the ability for the end user to
easily and effectively put the software to
proper use.
5

Principles of Software
Engineering
Modularity divide and conquer.
Encapsulation hide the implementation.
Localization collect similar things
together.
Abstraction provide an illusion.
Uniformity make everything look similar.
Completeness do everything required.
Confirmability be able to prove that the
software works properly.
6

Methods
Modeling producing abstractions of
things.
Data-driven methods base the structure
of the solution on the structure of the
data.
Function-driven methods base the
structure of the solution on the required
functionality.
Object-oriented methods base the
structure of the solution on objects
(combinations of data and functions).

Process Models
Waterfall.

Strict sequence of activities.


One pass.

Incremental.

Multiple passes through sequence.


Start with skeletal system.
Add functionality in pre-planned increments.

Iterative.

Multiple passes.
Each pass starts with planning step.
Each pass ends with an evaluation step.

Common questions

Powered by AI

The main symptoms of the software crisis are projects being unmanageable, over budget, being completed late, and having poor quality. The root cause of these issues is identified as complexity .

Data-driven methods structure solutions based on data structure, emphasizing how data is stored and accessed; function-driven methods focus on the required functionalities of the software, outlining how processes should work; object-oriented methods organize solutions around objects, combining data and functions. Each method provides a different way to conceptualize and structure software based on varying primary concerns .

The primary goals of software engineering are maintainability, dependability, efficiency, and usability. Maintainability ensures software changes can be made easily, dependability allows software to function reliably, efficiency enables effective use of computing resources, and usability ensures end-users can effectively utilize the software. Combined, these goals help in delivering reliable, user-friendly, and cost-effective software products .

Fritz Bauer defines software engineering as the establishment and use of sound engineering principles to obtain software that is reliable, efficient, and economically viable for real machines. This definition arose from the historical context of increasing hardware capabilities that enabled more complex software, which exceeded our intellectual management abilities .

The principles that help manage software complexity include modularity, encapsulation, localization, abstraction, uniformity, completeness, and confirmability. Modularity involves breaking down a system into smaller parts; encapsulation hides the implementation details; localization groups similar components together; abstraction reduces complexity by focusing on the essential; uniformity makes components look similar; completeness ensures all elements are attended to; and confirmability enables validation of functionality .

The historical lag in managing software complexity as hardware capabilities advanced prompted the need for innovative software engineering techniques to bridge the gap between high potential and practical usability. This lag necessitated improved techniques and methods to ensure that increasingly complex software systems are developed in a reliable and efficient manner, keeping up with hardware advancements .

The principle of confirmability contributes to software reliability by ensuring that systems can be tested and proven to function as intended. This principle supports rigorous testing practices and validation processes that verify the correctness and performance of software, thereby enhancing its dependability and trustworthiness in real-world applications .

Incremental and iterative models address limitations of the waterfall model by allowing multiple development cycles. Incremental models start with a basic version and progressively add features, while iterative models involve repeated cycles of planning and evaluation, enabling feedback and adjustments at each stage, whereas waterfall requires completion of one stage before moving to the next with no reiterations .

CASE tools benefit software complexity management by providing automation and support for various development tasks, such as design, analysis, and testing, which enhances the productivity and accuracy of software engineers, facilitating the handling of complex software projects. They help in maintaining consistency, ensuring quality, and improving communication among team members .

Modularity addresses challenges like complexity, maintainability, and change management. It simplifies complex systems by dividing them into manageable modules, facilitates updates and modifications by isolating changes to specific components, and reduces interdependencies, minimizing the risk of errors affecting the entire system .

You might also like