1 / 24

Software Engineering Methods and Technologies by Alfonso Fuggetta and Laura Sfardini

Software Engineering Methods and Technologies by Alfonso Fuggetta and Laura Sfardini. Presented by: Nestor Rivera EEL6883 UCF Spring 07. Introduction. Software is critical, complex, distributed. Software Engineering (concepts, principles)

khuong
Download Presentation

Software Engineering Methods and Technologies by Alfonso Fuggetta and Laura Sfardini

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Engineering Methods and Technologiesby Alfonso Fuggetta and Laura Sfardini Presented by: Nestor Rivera EEL6883 UCF Spring 07

  2. Introduction • Software is critical, complex, distributed. • Software Engineering (concepts, principles) • Also goal oriented (practical methods, and technologies) • Developers often disoriented. • Author presents coherent and comprehensive view.

  3. Organization • Classification Scheme: • Existing Methods • Software Development Technologies • Process Support Technologies • Infrastructure Technologies • Important Topics (open source movement and economics of software development) • Conclusions

  4. Classifying Methods and Technologies • Major changes (Internet and the WWW, component based software technologies) • Not an ideal classification, but better than SWEBOK. • 4 Main categories: • Methods -> orderly process in engineering . • Development Technologies -> create, evolve, test artifact. • Process Support Technologies -> support process wide activities. • Infrastructure Technologies -> enabling layer.

  5. Software Methods • Concepts, notions, guidelines and techniques. • Either embedded in specific technologies or knowledge used. • Include 4 different Entities: principles, development techniques, meta-methods and style and patterns

  6. Software Methods - Principles • Define foundation (modularity, robustness, interoperability, design for change, and software quality) • Modularity -> information hiding, cohesion, hierarchical decomposition, and decoupling. • Design for change (distributed applications)-> flexibility, scalability, extensibility. • Software Quality (usability, reliability, efficiency, maintainability, portability, customer satisfaction)

  7. Software Methods: Development Techniques • Informal: no formal syntax or semantics, only guidelines/principles (i.e. agile methods, extreme programming, UP) • Semi-formal: syntax and no semantics (i.e. design methods: data flow, OOD, and structure design) • Formal: formal notations and procedures (i.e. model checking and temporal logic)

  8. Software Methods: Meta-methods • Better structure, organize, and assess process and outcomes. • GQM: establish and operate a measurement program • CMM: assessment and capability evaluation model .

  9. Software Methods: Styles and Patterns • Number of recurring and classical schemes: • Problem frames: Jackson – typical problems. • Analysis Patterns: refined form – i.e. customer-order setting. • Architectural Styles: typical structure – i.e. client-server, peer-peer. • Design Patterns: finer grained concepts – i.e. factory and observer patterns. • Represented by DL (UML) • Streamline analysis and design. • Facilitate structured knowledge and reuse.

  10. Development Technologies • Ultimate goal: deliver code. • Dev tools and environments are most popular. • Development: activities directly related to producing code. • 4 main categories: • Languages • Tools • Tool Sets • Environments

  11. Development Technologies – Programming Languages • Most popular class. • Innovative programming languages (Java, C++, C#) • Compile and interpreter strategies. • Object Oriented Paradigm. • Java (byte code)

  12. Development Technologies: Description Languages • Requirements and design: description languages (textual and graphical notation i.e. UML) nature of problem or architecture. • Two main groups: • Semiformal: precise syntax, no semantics – i.e. DFD, SADT, FD (useful to describe real world) • Formal: precise syntax and semantics. i.e. TRIO, Petri-Nets, and Z. Recently ADL • UML is most popular (collection of independent, semi-formal and formal languages). UML 2 is coming.

  13. Development Technologies: Mark-up Languages • Internet and WWW. • Describe different kind of entities. • Early: LaTex. • Most famous: HTML. • Latest and most promising: XML.

  14. Development Technologies: Domain Specific Languages • Specialization of description languages. • i.e. XMI: easy interchange of meta-data between modeling tools (OMG-UML) and meta-data repositories (OMG-MOF) in distributed heterogeneous environments. • i.e. RDF (W3C) integrates variety of applications from library catalogs and world-wide directories.

  15. Development Technologies: Query Languages • SQL: used in modern DBMS. • RQL: query language for RDF data. • All these languages types (programming, markup, domain-specific, and query) -> basic entities (code and data). • Widely exploited in tools, tool sets, and environments.

  16. Development Technologies: Tools • Programs -> support a specific phase. • Classes: • Description/Analysis: description of problem and software solutions –DL i.e. Rational Rose (UML) • Programming: create code i.e. compilers, generators, debuggers. • V&V: static/dynamic code analyzers, test management tools, performance analyzers. • Reverse Engineering & Reengineering: extract high level abstract info -> maintenance & evolution • CM: manage/organize coding activity & work products –multi-person development project (i.e. CVS, Clearcase)

  17. Development Technologies: Tool Sets and Environments • Integrated tools -> tool sets & environments. • Tools sets (workbenches): specific phase. • Environments: total comprehensive solution. • Distinction valid, but fading away (tools are being incorporated into environments through infrastructure) • i.e. JBuilder is a tool set and Eclipse is an environment.

  18. Process Support Technologies • Not specific to any phase. • Provide features to support overall management and control of the process. • Main classes: • Generators: creation of tools and tools sets/environments (i.e. early: yacc and lex; modern: plug-in Eclipse) • Process and workflow technologies: describe process (steps, rules, expected deliverables) • Project management: plan and track project (i.e. Microsoft Project, COCOMO) • Software Deployment and application management: deploy solution in target environment & manage its operation.

  19. Infrastructure Technologies • Not peculiar to SE. • Often identified by middleware. • Three main classes: • Protocols and Services: exchange info and control interaction (i.e. UDDI, IIOP, SOAP) • System Components: run-time services for a variety of operations (OS, JVM, DBMS, communication middleware, web-servers, app-servers) • Platforms for Component Software: coherent and structured sets of systems components built around a common conceptual model (i.e. J2EE, .Net)

  20. Related Topics • Help grasp and capture modern trends in SE: open source movement and economics of software development. • Open source success: i.e. Apache & Linux. • Open source system components, tool sets: i.e. Eclipse, Tomcat and J-Boss. • Some technologies amenable to revenues from services and strongly distributed setting. • Need to carefully evaluate potential impact in future software engineering technology. • Worldwide market will affect nature and structure of SE technology. • These 2 challenges will affect classification scheme.

  21. Conclusions • Classification Scheme for SE methods & technologies. • Key criteria to analyze and compare. • Extensions to a previous paper (mainly due to WWW) • Never-ending process. • New business models and open source. • SE is dynamic, complex and challenging so a classification is essential.

  22. My Thoughts… • A very good high-level overview of the entire software engineering discipline. • Snap-shot of the current software Engineering techniques and technologies. • The Glossary was very useful. • SE is overwhelming, so it is useful to have a classification scheme and look at the big picture. • Is software really the core of new products? How about hardware?

  23. Additional References • http://www.wikipedia.com • Sommerville, Software Engineering Vol. 7.

  24. Questions ?

More Related