- •Topic 1. Fundamentals of Software Engineering
- •Text 1. Software Engineering as a contentious issue
- •Spur – підганяти, спонукати, стимулювати run over – виходити за рамки, перевищувати emphasize – робити наголос, підкреслювати, надавати особливого значення
- •History of Software Engineering Part 1
- •History of Software Engineering Part 2
- •Individual task to topic 1
- •Topic 2. Software Engineering as a Separate Field of Study
- •Text 1. Software Engineering Part 1
- •Text 2. Software Engineering Part 2
- •Text 3. Sub-disciplines in Software Engineering
- •Exercise 30. Translate words and word combinations. Memorize them.
- •Text 4. Current trends in software engineering
- •Individual task to topic 2
- •Topic 3. Software Engineer
- •Text 1. The difference between a Programmer and a Software Engineer
- •Text 2. Degrees in Software Engineering and Computer Science
- •Text 3. Specialty Areas
- •Text 4. How to Become a Software Engineer
- •Text 5. How to Interview for a Software Engineering Position
- •Individual task to topic 3
- •Topic 4. Software Development Companies
- •Text 1. Software Industry
- •Text 2. The Largest Software Companies
- •Text 3. 10 Top Software Companies Part I
- •Text 4. 10 Top Software Companies Part II
- •Text 5. The Largest Gaming Companies in the World
- •Text 6. Development Trends in Software Industry
- •Individual tasks to topic 4
- •Topic 5. Practical Software Engineering Procedures
- •Text 1. Practical Procedures of Main Software Occupations Part 1
- •Text 3. Software Engineering Code of Ethics and Professional Practice
- •Individual tasks to topic 5
Text 4. Current trends in software engineering
Software engineering is a young discipline, and is still developing. The directions in which software engineering is developing include:
Aspects
Aspects help software engineers deal with quality attributes by providing tools to add or remove boilerplate code from many areas in the source code. Aspects describe how all objects or functions should behave in particular circumstances. For example, aspects can add debugging, logging, or locking control into all objects of particular types. Researchers are currently working to understand how to use aspects to design general-purpose code. Related concepts include generative programming and templates.
Agile
Agile software development guides software development projects that evolve rapidly with changing expectations and competitive markets. Proponents of this method believe that heavy, document-driven processes (like TickIT, CMM and ISO 9000) are fading in importance. Some people believe that companies and agencies export many of the jobs that can be guided by heavy-weight processes. Related concepts include Extreme Programming, Scrum, and Lean software development.
Experimental
Experimental software engineering is a branch of software engineering interested in devising experiments on software, in collecting data from the experiments, and in devising laws and theories from this data. Proponents of this method advocate that the nature of software is such that we can advance the knowledge on software through experiments only.
Model-driven
Model Driven Design develops textual and graphical models as primary design artifacts. Development tools are available that use model transformation and code generation to generate well-organized code fragments that serve as a basis for producing complete applications.
Software Product Lines
Software Product Lines is a systematic way to produce families of software systems, instead of creating a succession of completely individual products. This method emphasizes extensive, systematic, formal code reuse, to try to industrialize the software development process.
Software engineering today
The profession is trying to define its boundary and content. The Software Engineering Body of Knowledge SWEBOK has been tabled as an ISO standard during 2006 (ISO/IEC TR 19759).
Prominent figures in the history of software engineering
1. Charles Bachman (born 1924) is particularly known for his work in the area of databases.
2. Laszlo Belady (born 1928) is the editor-in-chief of the IEEE Transactions on Software Engineering in the 1980s.
3. Fred Brooks (born 1931) is best-known for managing the development of OS/360.
4. Peter Chen is known for the development of entity-relationship modeling.
5. Edsger Dijkstra (1930–2002) developed the framework for proper programming.
6. David Parnas (born 1941) developed the concept of information hiding in modular programming.
Exercise 36. Be ready to retell the text (ex.35).
Exercise 37. Prepare your own individual task/ tasks to topic 3.