Lecture 1-Intro - FAQS - Part2
Lecture 1-Intro - FAQS - Part2
Component Weight
Mini-Assignment + Quiz 5%
Examination 60%
Project Groups - circulated
• Multi-phase project, roughly broken into several
deliverables:
• Deliverable 1: Requirements Elicitation Report
• Deliverable 2: Requirements Analysis
• Deliverable 3: Architectural Design
• Deliverable 4: Object/Component Design
• Deliverable 5: Coding/Implementation
• Deliverable 6: Testing and Demo (Final Presentation)
Text Books
• No single prescribed book for CS4433
• Recommended readings are:
1. Software Engineering
Author: Sommerville (at least 8th edition).
Publisher: Addison Wesley
2. Bernd Bruegge, Allen Dutoit: “Object-Oriented Software Engineering:
Using UML, Patterns, and Java”, Prentice Hall, 2003.
3. Applying UML and Patterns: An Introduction to Object-Oriented Analysis
and Design and Unified Process, 2nd ed., C. Larman
4. Grady Booch, James Rumbaugh, Ivar Jacobson, “The Unified Modeling
Language User Guide”, Addison Wesley, 1999. Good reference for UML
5. Additional books may be recommended during individual lectures
Outline – Today’s Lecture
Introduction to Software Engineering (SWE)
Professional software development
• What, Why, How of software engineering?
• FAQs about SWE
• Essential Attributes of good SW
• Few definitions
Software engineering ethics
• Brief introduction to ethical issues that affect software engineering
Modeling complex systems
• Functional vs. Object-oriented decomposition
Software Lifecycle Modeling
Software Reuse with: (1) Design Patterns (2) Frameworks
Introduction
• More and more, individuals and societies rely on advanced software
systems.
• Economies of ALL developed countries are depended on “software”.
• More and more systems are software controlled
• Centralized/desktop-based systems TO Distributed systems
• Web-based systems Cloud-based systems
• More and more items are becoming software controlled
• Internet of Things (IoT) Internet of Everything (IoE)
• Expenditure of software represents a significant portion of GNP in developed
countries.
• GNP vs. GDP?
• SWE is concerned with theories, methods (techniques), and tools for
professional software development.
Software Costs
• Software costs dominate computer system (hardware) costs
• The costs of software running of company PCs are greater than the
hardware cost.
• Software costs more to maintain than it does to develop
• For systems with very long life, maintenance costs may be several
times development costs.
• SWE is concerned with cost-effective software development
WHY Software Engineering?
(1) Costs
• 13 software projects totalling $90 million. Delivered, but never
successfully used
Take a look at the Standish Report
45%
(The “Chaos” Report) – On Thuto
>> Resources Used as delivered
2%
Usable w. rework
Paid for, but
3% not delivered
Used w. extensive rework, 30%
but later abandoned
20%
What differences has • The web has led to the availability of software services - SOA
the web made to • The web has led to the possibility of developing highly
software engineering? distributed service-based systems - DSOA
• The web has led to software reuse
Essential Attributes of good software (1)
Maintainability
• Software should be written in such a way that it can evolve to meet the changing
needs of customers.
• This is a critical attribute because software change is an inevitable result of a
changing business environment.
Essential Attributes of good software (2)
Dependability
• Software dependability has a range of other dimensions, including:
• Reliability, Availability, Security, Safety, Robustness
• Reliability: Strong enough to withstand or overcome intellectual challenges or adversity
• Availability: the ability of the system to deliver services when requested
• Security: Malicious users (e.g. hackers) should not be able to access or damage a secure
system. E.g.
• Perform Database Vulnerability Scanning
• Perform Penetration Testing on systems
• Safety: the ability of the system to operate with catastrophic failure
• A robust system will not be broken by power failures – and should be able to restart
automatically when power returns – a non-robust system will need to be manually
restarted by a person
• A dependable software should not cause physical or economic damage in the event of
system failure.
Essential Attributes of good software (3)
Efficiency
Usability
CLIENT & SW engineers shall act in a manner that is in the best interest of
EMPLOYER their client and employer consistent with the public interest.
"Does this add real value to the system"? If the answer is NO, don't
do it.
Principle 2: KISS – Keep It Small, Simple