SDLC

The Systems Development Life Cycle (SDLC), or Software Development Life Cycle in systems engineering and software engineering, is the process of creating or altering systems, and the models and methodologies that people use to develop these systems. The concept generally refers to computer or information systems.

In software engineering the SDLC concept underpins many kinds of software development methodologies (wiki). These methodologies form the framework for planning and controlling the creation of an information system[1]: the software development process.

Wikipedia page (link). SDLC phases (link).

Also have a look at Software Development Process, at Wikipedia (link), and Methodologies page.

Below is my vision of development environment.

    • Business Case is created to describe a problem and present solutions.
    • Project management and task tracking used to be done with MS Project and Project Server for Waterfall-led projects. Project tasks were exported to Outlook for tracking and historical record.
    • With Agile methodology, User Stories and estimation are used with Sprints as basic-level timeframes, and tightly integrated to product management at a higher level (product versions/feature delivery to users).
    • Analysis and design performed in Enterprise Architect. For outputs of this phase, see documentation templates. Business Requirements get translated into Use Cases, use cases into Workflows (flowcharts). From these we extract the Domain Model, from which we get the Data Model, Component Model, and Class Model. UI wire frames are done alongside, during analysis phase. Emerging architecture performed continuously.
    • Software development with Visual Studio.
      • Concepts
        • Business workflows using Workflow Foundation for processes and rules. Exposed as WF service. Activities from architectural model map to workflows.
        • Domain model using POCO classes and Entity Framework. Exposed as RIA service/OData. Domain model in code maps from the domain model in architectural design.
        • UI: Web applications with ASP.Net MVC Framework. Free control suites available (ie. Telerik).
        • Web services are discoverable through UDDI registry (possibly BizTalk).
      • Cross-cutting concerns
        • Coding standards: Applying coding standards. See Coding Style Guide in Software Tools. StyleCop or Resharper.
        • Code versioning system: Mercurial. Release notes for builds are generated from the source code repository.
        • Continuous Integration with integration server. Automate build, unit and integration testing. Code coverage with PartCover.
      • Deployment
      • Security
          • Authentication: Single sign-on, OpenID, Active Directory Federation Services.
          • Authorization: OAuth, roles.
        • Logging: Application message logging with log4net or NLogger. All applications output informational messages with different level of importance. These are used for debugging during development and production maintenance once the product is deployed. Use adapters for (centralized) SQL server, event log, on-screen display (for debugging).
      • Performance
          • Caching as a performance improvement measure using memcached or other distributed cache provider. Allows for scalability if the number of servers increase, without performing any code changes.
          • Performance profilers: ANTS profiler (RedGate), dotTrace (JetBrains).
          • Glimpse allows you to monitor execution on the server from the client side.
    • Testing is done throughout the development phase. It is done even before coding (see TDD). Here is a list of testing tools.
      • Using BDD with SpecFlow (link); includes Unit testing: Developers write unit tests for the code they produce.
      • Mock/stub objects using Moq framework. Abstraction of database layer done through creation of mock data provider.
      • Integration tests: Use Selenium for automated browser tests. Standardized and repeatable tasks that can be automated are to be tested automatically.
      • User Acceptance Testing (UAT).
        • Smoke testing (wiki),
        • Regression testing (wiki),
        • Write test scenarios from Business Requirements directly.
      • Performance testing
        • Stress testing
        • Endurance testing
      • Security testing
      • Generate test data with NBuilder
    • Documentation and training. Each phase has document outputs. The only documentation part that comes after the product is finished is user documentation and training manuals, presentations, videos, etc.
      • User manuals
      • Technical documentation

Phases Chart

Links

SDLC documentation from the State of Maryland (link).