Software Engineering
Class overview, Class Goals, Prerequisites, Mechanics

"How not to get lost in complexities of our own making is still computing's core challenge."
Edsger Dijsktra

"Science is about understanding nature, understanding what is.
By contrast, engineering is synthetic; it is about creating what has never been."
Theodore von Karman

What Is Computing (informatyka)?
In a general way, we can define computing to mean any goal-oriented activity requiring, benefiting from, or creating computers. Thus, computing includes designing and building hardware and software systems for a wide range of purposes; processing, structuring, and managing various kinds of information; doing scientific studies using computers; making computer systems behave intelligently; creating and using communications and entertainment media; finding and gathering information relevant to any particular purpose, and so on.

Knowledge areas


The Next 100 Years

The next 100 years


Agenda


My Experience with Computing

(http://sorcersoft.org/sobol/)


Course Website

http://sorcersoft.org/sobol/io/ (USA)
login/password = io/pjwstk-io

Syllabus


Course Goals: Software Engineering


Computer Science Curriculum 2008, ACM & IEEE Computer Society
31 core hours

  1. SE/SoftwareDesign [core] - 8 hours
  2. SE/UsingAPIs [core] - 5 hours
  3. SE/ToolsAndEnvironments [core] - 3 hours
  4. SE/SoftwareProcesses [core] - 2 hours
  5. SE/RequirementsSpecifications [core] - 4 hours
  6. SE/SoftwareVerificationValidation [core] - 3 hours
  7. SE/SoftwareEvolution [core] - 3 hours
  8. SE/SoftwareProjectManagement [core] - 3 hours
  9. SE/ComponentBasedComputing [elective]
  10. SE/FormalMethods [elective]
  11. SE/SoftwareReliability [elective]
  12. SE/SpecializedSystems [elective]
  13. SE/RiskAssessment [elective]
  14. SE/RobustAndSecurity-EnhancedProgramming [elective]

Quantum Jumps in Programming Complexity

SP - sequential programming
MTP - multi-threaded programming
MPP - multi-process programming
MMPP - multiple-machine-process programming


Harder Choices: How the Disciplines Might Appear to Prospective Students


Computing Domains

Computer Science (Podstawy informatyki)

 

Information Systems (Systemy informacyjne)

 

Information Technology (Technologia informacyjna)

Całokształt wiedzy dotyczącej tworzenia, przesyłania, prezentowania i zabezpieczania informacji.

 

Software Engineering (Inżynieria oprogramowania)


Motivations for component computing

metacomponenets


RPC Generations

  1. First generation RPCs: Sun RPC (ONC RPC) , DCE RPC
  2. Second generation RPCs: CORBA, Microsoft DCOM-ORPC
  3. Third generation: Java RMI
  4. Fourth generation RPCs: Jini Extensible Remote Invocation (Jini ERI)
  5. Fifth generation RPCs: Web Services RPC and the XML bandwagon
  6. Sixth generation RPCs: SORCER Federated Method Invocation (FMI)

Transdisciplinary Approach to R&D


Synergy Helps

Synergy


Rate of Change

The pace of technology is increasing => team research

  • More practitioners
  • More departments
  • More startups
  • More application pull
  • Your competitors are teams, not individuals


    Innovate or Die

    Innovate


    Being Focused and Synergistic

    Focus

     


    Dealing with Complexity at the System Level (Systems Engineering)
    Does Not Compute

    Constructive triplet (domain, management, carrier - dziedzina, zarzadzanie, nośnik)


    Language – Mankind (Człowieczeństwo)

    Writing – Civilization (Cywilizaja)


    Language Engineering

    Language engineering is the art of creating languages


    Programming Languages vs. SW Languages

     

    The interpreter for a programming language is just another program.










    SORCER Operating System (SOS)

    SORCER SOS

    Network-centric Service Orientation: hiding services not the network


    UNIX Platform vs. SORCER Platform


    Introductions

    1. SE/SoftwareDesign [core] - 8 hours
    2. SE/UsingAPIs [core] - 5 hours
    3. SE/ToolsAndEnvironments [core] - 3 hours
    4. SE/SoftwareProcesses [core] - 2 hours
    5. SE/RequirementsSpecifications [core] - 4 hours
    6. SE/SoftwareVerificationValidation [core] - 3 hours
    7. SE/SoftwareEvolution [core] - 3 hours
    8. SE/SoftwareProjectManagement [core] - 3 hours
    9. SE/ComponentBasedComputing [elective]
    10. SE/FormalMethods [elective]
    11. SE/SoftwareReliability [elective]
    12. SE/SpecializedSystems [elective]
    13. SE/RiskAssessment [elective]
    14. SE/RobustAndSecurity-EnhancedProgramming [elective]