Download Introduce to Software Engineering - Physical Engineering - Lecture Slides and more Slides Engineering Physics in PDF only on Docsity!
Introduction
• Getting started with
Software Engineering
software engineering
- What is software?
- What is software engineering?
- What is the difference between software
engineering and computer science?
- What is the difference between software
engineering and system engineering?
- What is a software process?
- What is a software process model?
What is software?
- Computer programs and associated
documentation
- Software products may be developed for a
particular customer or may be developed for a general market
- Software products may be
- Generic - developed to be sold to a range of different
customers
- Custom - developed for a single customer according to
their specification
What is Software?
- Software is the Definition and Organization of a Set of Tasks and Functionality Encapsulated into a Form that is Executable on a Computer
- What are Different Types of Software?
- Commercial-Off-the-Shelf (COTS)
- Government-Off-the-Shelf (GOTS)
- Legacy: Written in an “Old” Programming Language
- Cobol, PL/1 (Y2k/SNET), Fortran, etc.
- C and C++!
- Customized New Software
- Client vs. Server Software
- Database Management Systems/Applications
What are the key challenges facing software engineering?
- Coping with legacy systems, coping with increasing diversity and coping with demands for reduced delivery times
- Legacy systems
- Old, valuable systems must be maintained and updated
- Heterogeneity
- Systems are distributed and include a mix of hardware and software
- Delivery
- There is increasing pressure for faster delivery of software
Software engineering
- The economies of ALL developed nations are dependent on software
- More and more systems are software controlled
- Software engineering is concerned with theories, methods and tools for professional software development
- Software engineering expenditure represents a significant fraction of GNP in all developed countries
- The Application Of Engineering To SoftwareWhat^ is^ Software^ Engineering?
- Field of CSE Dealing with Software Systems
- Large and Complex
- Built By Teams
- Exist In Many Versions
- Last Many Years
- Undergo Changes
- Definitions:
- Application of a Systematic, Disciplined, Quantifiable Approach to the Development, Operation, and Maintenance of Software (IEEE 1990)
- Multi-person Construction of Multi-version Software (Parnas
Software Engineering
Software Engineering process can be described using three generic phases: definition, development, and maintenance phase.
Software engineering comprises a process, management techniques, technical methods, and the use of tools.
Process
Methods
Software engineering is a layered Tools technology. The foundation of software engineering is Process layer.
Software Engineering
Development phase: focuses on how (software design, code generation, software testing).
Software developer attempts to define how :
- Data structure are to be designed
- Software architecture are to be designed
- Procedural details are to be implemented
- Design will be translated into programming language
- Testing will be performed
Software Engineering
Maintenance phase: focuses on change
Corrective: Even with the best software quality assurance activities, it is possible that the customer will uncover defects in the software. Using corrective maintenance techniques, changes are made in the software to correct defects.
Adaptive: Over the time, the original environment for which software was developed is likely to change. Adaptive maintenance results in modifications to the software to accommodate changes to the environment.
Enhancement (Perfective): After using the software user recognizes additional functions that can be performed or business requirement could change. Perfective maintenance extends the functionality beyond the original requirements.
Why Software Engineering?
- Program Complexity Transcends Individual or Lone Programmer
- Software Engineering Targeted for
- Constructing Large Software Applications
- Defining Problem Clear and Completely
- Tools and Techniques to Support Process
- Team-Oriented Experience
- Software Engineering must Evolve to be an Engineering Discipline
- Software Engineering Must Promote and Support Multi- Person Construction of Multi-Version Software
Software Engineering - Historically
- “Early Days”
- 1950’s Programmers Wrote Programs
- Early 1960’s - Very Large Software Projects Constructed by “Experts”
- Mid-Late 1960’s - Advent of Large Commercial Software Applications - Large Systems Involved Teams of Individuals - Coining the Term “Software Engineering”
- Towards a Software Engineering Discipline
- Individuals Couldn’t see “Big Picture”
- Increase in Communication Time
- Personnel Changes Impact on Productivity
- SE: Management, Organization, Tools, Theories, Methodologies, Techniques, etc.
Programmer vs. Software Engineer
- Individual with Good Skills
- Programming-in-the-Small
- Knowledge on
- Data Structures
- Algorithms
- Fluent in Several Programming Languages
- May Lack Formal Training
- Minimal Exposure to CS
- Part of a Team
- Programming-in-the-Large
- Design Approaches
- OO, Modules, etc.
- Top-Down/Bottm-Up
- Translates Requirements into Specifications
- Familiarity in Multiple Application Areas
- Converses with Users
- Sees “Big Picture”
- Can Model Application
- Good Communication and Interpersonal Skills
Software costs
- Software costs often dominate system costs.
The costs of software on a PC are often greater than the hardware cost
- Software costs more to maintain than it does
to develop. For systems with a long life, maintenance costs may be several times development costs
- Software engineering is concerned with cost-
effective software development