0% found this document useful (0 votes)
30 views2 pages

Software Engineering Overview and Principles

Software engineering is defined as the application of a systematic, disciplined, and quantifiable approach to software development, operation, and maintenance. It involves engineering principles and techniques at all stages of software production. A well-engineered software is reliable, has a good user interface, is efficient, and has acceptable performance and quality within budget. Software engineering must balance these factors according to requirements. Adding additional resources to a project provides diminishing returns after a certain point due to the inherent complexity of software.

Uploaded by

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

Software Engineering Overview and Principles

Software engineering is defined as the application of a systematic, disciplined, and quantifiable approach to software development, operation, and maintenance. It involves engineering principles and techniques at all stages of software production. A well-engineered software is reliable, has a good user interface, is efficient, and has acceptable performance and quality within budget. Software engineering must balance these factors according to requirements. Adding additional resources to a project provides diminishing returns after a certain point due to the inherent complexity of software.

Uploaded by

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

Lecture#1

Cs504 Software Engineering Notes


Software Engineering S.E. (All lines in bold under this heading are different
definitions)
-The application of a systematic, disciplined, quantifiable approach to the
development operation, and maintenance of software that is the application of
engineering to software ~IEEE
-The study of approaches as in the above point is also S.E.
- All Aspects of software production, software engineering is not just concerned
with the technical processes of the software development but also with the
activities, such as software project management and with the development of
tools, method and theories to support software production ~Sommerville
-The Set of processes and tools to develop software
-Software Engineering is nothing but a disciplined and systematic approach to
software development
-The systematic engineering approach to software development
-Software does not wear out like cars/machines/gears etc
-A software keeps changing because there is inherent complexity in them because
the software keeps going through a continuous change and evolution in all
dimensions
-Coding alone is not alone enough but engineering techniques are also important
Well-Engineered Software
-A well-engineered software is Reliable, its User Interface is good, it is efficient
its Performance and quality is within acceptable limits and its Cost is effective
-Software engineering is generally a balancing act and we have to develop a
software while keeping in mind all the above factors depending upon the
requirements and conditions for a certain case for which the software is being
developed
Law of diminishing return
-The law of diminishing marginal returns is a theory in economics that predicts
that after some optimal level of capacity is reached, adding an additional factor
of production will actually result in smaller increases in output
An excerpt (means short extract from a writing) from “No Silver Bullet” ~Fred
Brooks
-The familiar software project has something of this character (at least) as seen
by the non-technical manager), usually innocent and straight forward, but
capable of becoming a monster of missed schedules, blown budgets and flawed
projects, so we hear desperate cries for a silver bullet, something to make
software costs drop as rapidly as hardware costs do. Skepticism is not
pessimism, however. Although we see no startling breakthroughs and indeed,
such to be inconsistent with the nature of the software

Lecture#2

Common questions

Powered by AI

The document contrasts software with physical entities like cars or machines to highlight the unique nature of software. Unlike physical entities that wear out over time, software undergoes continuous change and evolution, which introduces complexity . This comparison signifies that software requires a different approach to maintenance and development, focusing on adaptability and evolution rather than just durability and wear resistance.

In the context of software project management, 'skepticism is not pessimism' suggests that while one should be wary of overly optimistic solutions and recognize the complexities inherent in software development, it does not entail a negative outlook or resignation to failure . Instead, it encourages a balanced perspective that remains open to manageable improvements without expecting miraculous results .

Sommerville defines software engineering as encompassing all aspects of software production, not just the technical processes of development, but also activities such as software project management and the development of supporting tools, methods, and theories . This broad definition implies that successful software project management must integrate technical and non-technical aspects, ensuring that processes are in place for managing resources, timelines, and quality, while also focusing on developing tools and methods that aid in efficient production.

Well-engineered software is characterized by its reliability, good user interface, efficiency, acceptable performance, quality, and cost-effectiveness . Ensuring these attributes requires balancing various factors during development, such as functionality, performance, user needs, and budget constraints, while employing a disciplined and systematic engineering approach .

The definitions of software engineering emphasize a systematic, disciplined approach that incorporates technical development practices while addressing project management, the development of supportive tools, and theoretical advancements . This reflects its interdisciplinary nature, merged from engineering principles and software development, influencing practices by requiring collaboration across various domains such as computer science, project management, design, and economics to produce effective software solutions.

The 'Law of Diminishing Returns' suggests that after an optimal level of capacity is reached, adding additional resources results in smaller gains in output . In software engineering, this concept is relevant as it highlights the importance of optimizing resource allocation and recognizing that simply increasing workforce or tools might not linearly improve project outcomes, and could potentially lead to inefficiencies or waste .

The evolutionary nature of software means that it is constantly changing, influenced by updates, changes in user requirements, and technological advancements. This requires engineering management to be highly adaptive, focusing on iterative development, continuous integration, and maintenance practices that accommodate change . It necessitates robust change management strategies, flexible architecture, and proactive stakeholder engagement to ensure that evolution does not compromise stability, performance, or reliability .

Coding is a part of software development that primarily focuses on writing the code that forms the software. Software engineering, however, encompasses a broader scope that includes not only coding but also the systematic, disciplined, and quantifiable approach to the entire development process, operation, and maintenance of software . It involves activities such as software project management, development of tools, methods, and theories to support software production, and requires balancing multiple factors such as reliability, user interface efficiency, performance, and cost .

Fred Brooks' statement highlights the recurring belief that a revolutionary solution or 'silver bullet' could drastically reduce software development costs, akin to hardware cost reductions . However, Brooks argues that this is a misconception as the inherent complexities and unique challenges of software development prevent such sweeping breakthroughs. The implication is that skepticism should guide the software engineering community to focus on incremental improvements and realistic expectations rather than hoping for a single, transformative solution .

Relying solely on coding can lead to several risks including lack of scalability, poor maintainability, and inability to meet user needs effectively. Without incorporating engineering techniques, the development process may lack systematic requirements analysis, design considerations, testing, and quality assurance, contributing to unreliable software, missed deadlines, and budget overruns . Consequently, this can result in software that fails to address complexities and changes inherent in software systems, impacting overall success.

You might also like