Title: CS 3302 Software Engineering
1CS 3302Software Engineering
- Colin Potts
- Georgia Tech,
- College of Computing
2What is Software Engineering?
- An Exercise List all the ways in which
- Building a tinkertoy car for fun is different
from designing a new automobile - Building a treehouse is different from the
architecture of a high-rise office building - Having some friends round for a party is
different from organizing the Olympic Games - So, how might software engineering be different
from writing a 50-line Java applet?
3Software Engineering CS course projects
- "instructors" are professional customers or
company's marketing staff. - "assignments" are ill-defined and constantly
changing. - responsible for acquiring tools you need.
- professional responsibilities.
- have to be able to work in teams.
- large project that is far too big to understand
as a whole. - products may last for years or even decades.
- have to understand the problem domain in which
software will work.
4What You Will Learn
- Understanding, clarifying and documenting the
requirements for a customer. - Planning and managing a project, including effort
estimation, risk analysis, contingency planning,
and re-planning if the schedule is not met. - Designing a software system at the architectural
and detailed levels. - Communicating and justifying design decisions.
- Reviewing and testing designs and
implementations.
51. Software Engineering Principles Software
engineering programming. Software lifecycle
models. Complexity management CASE.
Design abstraction, OO devt. SE.
Testing2.Software Engineering Practice
Customer requirements Software
specification Object-oriented analysis
Project planning mgt. Software design.
Translating designs into running code.
Integration Evolution of software.
Course Details
- See Web page for (currently tentative) schedule,
information about the textbook, etc.
6Software Engineering
- What does designing a big software system most
resemble? - Engineering, architecture planning
- Designing a car? Constructing a high-rise
building? Planning a major event? - Softwares essence
- Conceptual complexity
- what is complexity? Why conceptual?
- Softness
- how are software maintenance and TV maintenance
different? - Invisibility
- just what is software anyway? And how can it be
engineered?
7Cost of SE phases
Can this much effort really be maintenance?
8Software Evolution
- All engineering artifacts exist in an environment
for external purposes, e.g - bridges / cars transportation
- sound equipment performing arts
- But software design usually involves work /
organization redesign - if software codified intent, then new software
shapes intents is focus of organizational
change - Software engineers are often unwitting change
agents their systems are treated with suspicion - Which means that software evolves gradually as
the environment/mission evolves
9Types of Software Maintenance
- Corrective maintenance
- Fixing defects (bugs)
- I.e. correcting design flaws
- Perfective maintenance
- Improving the product (enhancements)
- Because of new requirements
- Or misunderstood requirement
- Because of new technological opportunities
- E.g. increased distribution of a centralized IS
onto client-server architecture - Reflecting changes in the environment
- Changes to tax laws, changes to ways of working,
etc. - Or unanticipated changes
10Phases of Software Development(SE as planned
evolution testing of software, not just
developing it)
- Traditional phases of software generation
- Requirements
- Specification
- Design
- Implementation
- Integration
- Evolution
- Development and redevelopment throughout process,
not a phase at the end - Testing
- Reviewing and assessing throughout process, not a
phase near the end